Slashdot Mirror


The Peon's Guide To Secure System Development

libertynews writes "Michael Bacarella has written an article on coding and security. He starts out by saying 'Increasingly incompetent developers are creeping their way into important projects. Considering that most good programmers are pretty bad at security, bad programmers with roles in important projects are guaranteed to doom the world to oblivion.' It is well worth the time to read it."

326 comments

  1. bad coders... by not_a_real_person · · Score: 0, Offtopic

    How come all the bad and incompetent people end up writing software for big companies?

    1. Re:bad coders... by Anonymous Coward · · Score: 1, Interesting

      ... because there is a recession on and companies are more interested in reducing costs.

      Eventually, the money men will be pushed aside and companies will once again start to focus on quality.

      Disgruntled Professional Software Engineer

    2. Re:bad coders... by Anonymous Coward · · Score: 0

      Boy, the bar for getting comments read on Slashdot is really getting absurdly high. Someone help this guy out with a +1 Underrated.

    3. Re:bad coders... by RebelTycoon · · Score: 2

      and the color of the sky in your world is?

      Florescent....

      Poor soul.. you need to get out more..

    4. Re:bad coders... by Max+Coffee · · Score: 2, Insightful
      I suppose that's a factor, but most of the non-secure software in common use today was written during a mad expansion, not a recession. At that point, the issue wasn't cutting costs, it was getting products out the door before your competitors did, and left you in the dust. Ultimately, app security comes down to the company's priority list. That, in turn, tends to be driven by the priority list of the market as a whole. Most people didn't care at all about security until very recently.

      If the people care about security now, you can bet the companies that succeed over the next decade will be the ones that satisfy that demand.

  2. Engineers (again...sorry) by jpt.d · · Score: 5, Interesting

    The P.Eng has one thing right - we need 'software engineers' or 'computer engineers' that are liable for their work (and the company that uses them are liable for too).

    If Microsoft's products are so good, why do they disclaim liability on it?

    Of course it isn't just microsoft doing this either. The whole licensing thing. If a 'license' is supposted to give you the privledge to do or use something, then in most things you are completely liable for your actions. For example, I have a drivers license, I kill somebody it is my fault. If Acme's Nuclear Control Software 2002 goes faulty and blows up part of the states - they would probably claim no fault (bad example I know - special case currently probably).

    --
    What we see depends on mainly what we look for. -- John Lubbock Now search for that bug slave!
    1. Re:Engineers (again...sorry) by EvilTwinSkippy · · Score: 1
      This sort of stuff makes sense to you and me. Unfortunately there is no column on a manager's spreadsheet for safety. Hell safety for the place I'm working at now is a cell phone strapped to my waist at all times.

      One time I was in the next state visiting the wife's inlaws when I had to talk a layman through going to my office for the server room key, going to the right machine on the KVM switch, and rebooting it.

      Lets see, scratch out Software Engineering. Some other careers that came up on my personality assesment: Tavern Owner, Military...

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    2. Re:Engineers (again...sorry) by ch-chuck · · Score: 2, Funny

      I think it, currently, is tied back to US 1st amendment Free Speech protection - a book is free speech, it doesn't have to be correct. If you read a book, follow it's advice and lose your shirt or damage something, the book publisher probably has a legal protection against being held liable for it ("we just published the false information, you're the one who acted upon it"). However, yelling 'fire' in a crowded theatre or 'fighting words'* is not protected speech - we might need to tie at least some software with potentially damaging consequences to something like that in some situations.

      *In 1942, the U.S. Supreme Court in Chaplinsky v. New Hampshire defined fighting words as words which are likely by their very utterance to inflict injury, or which tend to incite the average person to immediate violence. The high court said that fighting words receive no First Amendment protection.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    3. Re:Engineers (again...sorry) by ergo98 · · Score: 3, Informative

      How absurd. This whole certification thing is such a tired argument, though it's one that the IEEE is revving up as a new source of income (and I'm an IEEE member, but that doesn't mean that I agree with ridiculous certifications). Certifications and licensing are not, in most cases, a guarantee of quality. In reality in many cases these licensing boards turn into self-protective entities that allow their members to get away with things that they would never get away with if not surrounding by the shroud of, err, "persona responsibility" (see some of the medical boards that act more like shields against personal responsibility). Did you know that one of the P.Eng criteria, at least here in Ontario, is that you cannot discredit another P.Eng?

      Most certifications are nothing more than an economic barrier to entry: A club, if you will, whose membership betrays zero information about the capabilities of their members, but rather excludes those who haven't signed up. P.Eng is a particularly notorious one because they've tried to get their grubby hands on virtually all aspects of society, while provably offering nothing in return. No thank you. I don't need a "P.Eng of Burger Making" to make my Big Mac, even if that does help Bob get his friends a job through his exclusive club.

    4. Re:Engineers (again...sorry) by varith · · Score: 2, Insightful

      You don't need to make engineers liable. It management (executive management to be precise) that needs to be liable. Hell I keep getting turned down on projects to improve the code in my company. The only way I could possibly put reeally good security would be to put 20-30 hours a week of my own time in - past the 50-60 I already work. No thanks.

    5. Re:Engineers (again...sorry) by ACNeal · · Score: 2, Insightful

      The problem with this is that the whole system has to interoperate together. The system is only as secure as the total of all its components working together.

      You can say the same thing for a bridge. It will only stand if all the parts of construction are good, which the developer (not the engineer) are in control of. If the design is inherently flawed, the engineering firm will liable. If the construction is flawed, the developer is liable.

      The difference between software and your analogy is that the engineer/developer has complete control over the whole system. Developers don't. Microsoft doesn't. If the user of that same bridge goes and replaces all the rivets used, the developer can hardly be blamed when the bridge fails because of this.

      If I build a huge structure right in the middle, and you build another, and CowboyNeal builds a third, much smaller building, and suddenly the bridge collapses, whose fault is that? The bridge developer? Me for starting the trend? CowboyNeal even though his was the smallest?

      and then when we bring security into play, that is a whole different ball game. The engineer doesn't have to worry about people activly trying to make his bridge fail. If someone (say a tterrorist) plants shaped charges to destroy the main supports, and the bridge collapses under its own weight, no one would even think about sueing the engineer (except for maybe the lady that dumped coffee in her own lap, and somehow thought McDonalds was at fault).

      In software systems we rely on everyone else to be well behaved. We also rely on the combination of everyone elses systems not interfering with our systems in unexpected ways. A system of mine could run fine without a single crash. A system of yours could run without a single crash. Together they might get spurious crashes. I have never had a crash on a fresh install of Windows while playing Freecell before I install anything else.

      The same idea of liability can't be applied to software systems.

    6. Re:Engineers (again...sorry) by aero6dof · · Score: 5, Insightful

      If Microsoft's products are so good, why do they disclaim liability on it?

      Because the customers don't want to pay the added cost of reliability beyond what they need. If you want absolutely, positively bulletproof software, you're going to have to pay a higher development cost (mostly in testing, but in extra liability insurance for the company too). For safety-critical applications, customers are willing (or should be willing anyway) to pay for the additional cost , but it's ridiculous to pay for it when you don't need to. Do some googling on the cost of the space shuttle software for instance...

    7. Re:Engineers (again...sorry) by wiredog · · Score: 2

      Yes. See the April 98 (!) Byte Magazine. "Why PCs Fail, and Mainframes Don't"

    8. Re:Engineers (again...sorry) by fferreres · · Score: 2

      Do they have a option? I mean, is there any competing product that will be Windows compatible? Don't tell me Linux, because it's not Windows. And Windows is a monopoly you cannot get away to not using it in a coporate enviroment today. You can at most replace some servers and selected pals workstations.

      --
      unfinished: (adj.)
    9. Re:Engineers (again...sorry) by jsahol · · Score: 2, Funny

      Agree 100%. That's the problem, you can't sell anything to mgmt unless it makes them look good somehow, and security is not as "sexy" as new features. Hence companies like Microsoft can sell the garbage they do, because they just add more bells and whistles (bloat) each version.

    10. Re:Engineers (again...sorry) by fferreres · · Score: 2

      If you want absolutely, positively bulletproof software

      Doesn't need to be bulet-proof. But they should be liable for negligence, or for overstating their security. If the product is not meant to be used in a secure enviroment and with certain limitations and certain controls (say following an ISO standard), it should be stated in the license or outside the box (or somewhere).

      If you get roOted, it can depend on a thouthand things. If the reason is because there was a huge hole in code and the company did not patch in 1 day (to name an example) they SHOULD be liable.

      What companies want is a declaration of how secure the product is and a statement about how will a hole be handled and what to expect and how to proceed. The we fix as we go and don't blame us, but nonetheless we claim our products are as secure as everyone's else is unfair.

      --
      unfinished: (adj.)
    11. Re:Engineers (again...sorry) by Anonymous Coward · · Score: 0

      Aren't there two issues here?

      1) If Microsoft's (or whoever's) code fails because of some bug internal to their software, then one could argue that they are liable for the consequences of that failure, just as Ford may be liable if the brakes on my car fail.

      2) If some malicious user causes Microsoft's code to fail, then I don't see that they are any more liable than Ford is if someone steals my car. Now, if they claimed to have an unhackable OS (or an unstealable car), that would be one thing, but there is no way that either company could prevent every potential act of a malicious individual, so I think it would be wrong to hold them liable for those acts.

    12. Re:Engineers (again...sorry) by ichimunki · · Score: 1

      Hmmm. Microsoft has billions of dollars in cash laying around. From that fact alone I would deduce that their customers are already paying the right amount of money but that Microsoft is not actually doing the work they ought to be doing in this regard. But given that they are the only game in town for several values of "game in town", that's where monopoly pricing comes into play. So moreso than paying for quality, consumers end up paying to even be able to get on the playing field.

      --
      I do not have a signature
    13. Re:Engineers (again...sorry) by esarjeant · · Score: 3, Informative

      I think this is the link; a good read:

      Why Mainframes Rarely Crash

      --

      Eric Sarjeant
      eric[@]sarjeant.com

    14. Re:Engineers (again...sorry) by fegu · · Score: 2, Informative

      It is available from their archives. Not too bad actually.

      --
      "There is no substitute for thinking" - Bjarne Stroustrup
    15. Re:Engineers (again...sorry) by SerpentMage · · Score: 3, Interesting

      Sorry but there I think you are absolutely wrong. I happen to be an engineer, not because of an economic barrier, but because I managed to study x years in a University.

      And since you are in Ontario, which is where I got my engineering degree you should know that money is not the issue to getting an education.

      Also engineering certification does not mean quality. It means that you studied so many years and have gone through specific procedures. Just like police people and fire people. Some police people are good and some are baffoons, but regardless you know that they have gone through police trainning....

      When engineers become liable for stuff that they design, people design very DIFFERENTLY. This is not to say that everybody has to be an engineer to work on software. Just like in a custom machinery shop not everybody is an engineer. You just need enough engineers to sign off legally on designs.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    16. Re:Engineers (again...sorry) by Anonvmous+Coward · · Score: 2

      "If Microsoft's products are so good, why do they disclaim liability on it?"

      Well, let's see:

      1.) MS has millions (like many many millions) of people using their products. Even a small percentage of liability could lead to bankruptcy.

      2.) Lots of ppl hate MS enough that they malisciously work to create problems with it. (Nimda, Melissa, etc...)

      3.) Windows based machines are built from a broad variety of hardware that MS cannot possibly vouch for. If Windows is unstable as a result of a bad driver, blame wil be misplaced.

    17. Re:Engineers (again...sorry) by Anonymous Coward · · Score: 0
    18. Re:Engineers (again...sorry) by ergo98 · · Score: 2, Insightful

      I happen to be an engineer, not because of an economic barrier, but because I managed to study x years in a University.

      Yet plenty of people study >x years in University and don't get a P.Eng, yet suddenly they find barriers to their professions by arbitrary membership rules. If a professional engineering designation is a signal of education, then isn't that amply filled by existing programs?

      And since you are in Ontario, which is where I got my engineering degree you should know that money is not the issue to getting an education.

      No, but it's job mobility. John pursued advanced computer monkeyology and then became an expert software developer in the field of Monkeyology. Jim went through and become a "P.Eng in Computer Software", knows nothing about Monkeyology, but you're saying that John should be barred from writing software as Jim is certified? _BS_ It is a barrier of job mobility specifically to maintain exclusivity for its members. The P.Eng is trying to get its greedy hands into software development (as a mandatory element of software development, rather than a "marketforce" certification much like an MCSE or Cisco certificate), and they won't have a chance in hell.

      Also engineering certification does not mean quality. It means that you studied so many years and have gone through specific procedures. Just like police people and fire people. Some police people are good and some are baffoons, but regardless you know that they have gone through police trainning....

      Total agree with you here (and it's common for any certification/degree/diploma), but then you say...

      You just need enough engineers to sign off legally on designs

      Now that's just offensive. So we have some people who have joined the exclusive club, and now they have special rights and responsibilities to look over us common folks? I have known a couple of P.Eng's who were the dumbest (literally), laziest people I've had the displeasure of meeting (note that I'm not saying that all P.Engs are. Indeed, the same group includes some of the most honourable and brilliant. My point is that the membership in and of itself means exceedingly little), but suddenly these people are a signing force for a passport? How ridiculous is that. Don't tell me about the great responsibility they take by signing something, as the same holds true for ALL OF US: We all can have careers ruined, lawsuits, criminal complaints, etc, if we sign off on something negligent, incompetently, etc.

    19. Re:Engineers (again...sorry) by Iguanaphobic · · Score: 2

      MS has millions (like many many millions) of people using their products. Even a small percentage of liability could lead to bankruptcy.

      Or it could lead to more secure products. If a company gets sued for faulty products, they either improve the product or they go out of business.

      Lots of ppl hate MS enough that they malisciously work to create problems with it. (Nimda, Melissa, etc...)


      Nope. Think of it as a chicken and egg problem. I design a well thought out, highly secure piece of software. People try and try to hack into it, but the effort required is so high and the payoff so small, that hardly anyone persevers long enough to succeed. The opposite is designing a poorly concieved, bug ridden pile of steaming crap that anyone can hack into with no effort at all. The payoff for doing so is huge, attracting anyone who can load up VB.

      Windows based machines are built from a broad variety of hardware that MS cannot possibly vouch for. If Windows is unstable as a result of a bad driver, blame wil be misplaced.


      Nope again. Blame will be placed with the system that allows a faulty driver to take out the system. That would be like relying on a wet piece of spaghetti to hold together your braking system and then blaming the braking system when the spaghetti fails.

      An earlier poster raised the point that MS already has the money, they just failed to deliver the product. Now the marketplace will make them pay for that.

      --
      Fascism should more properly be called corporatism, since it is the merger of state and corporate power.
    20. Re:Engineers (again...sorry) by Anonymous Coward · · Score: 0
      Sorry but there I think you are absolutely wrong. I happen to be an engineer, not because of an economic barrier, but because I managed to study x years in a University.

      And that's where YOU'RE wrong. You're not an engineer. You can't call yourself an engineer. You need to be certified to be an engineer, and to put it on your business card as a title. What you are, is an Engineer in Training, an apprentice. Only after various technical and ethics exams, and a semi-secret ceremony, are you a Real Engineer (TM).

    21. Re:Engineers (again...sorry) by Bun · · Score: 2, Informative
      Ok, as a recent P.Eng. applicant here in BC, I have to take issue with a lot of what you said, mostly because it is the sort of drivel spouted by semi-trained clowns who want to call themselves "Engineer". In Canada, the terms "Engineer" and "Professional Engineer" are restricted to individuals accredited by the provincial associations and governed under various provincal legislation, such as The Engineers and Geoscientists Act of British Columbia. I think it's similiar in the Excited States as well.
      In reality in many cases these licensing boards turn into self-protective entities that allow their members to get away with things that they would never get away with if not surrounding by the shroud of, err, "persona responsibility" (see some of the medical boards that act more like shields against personal responsibility).

      Um, no. If anything, being a professional engineer exposes you to a higher level of liability than the layman. Putting your stamp on a set of plans makes you personally responsible, not only for the information the contained therein, but for ensuring that the Work in question is performed according to Accepted Practises based on Sound Engineering Principles (capitalized words have very specific meanings, according to the associations). A common story (probably apocryphal) is the one where the engineer who designed a lawn mower lost his shirt when his company was sued because there weren't warnings not to place your hand under the guard of a running mower. That's probably an extreme case, but it is not uncommon for engineers to be named defendants in suits involving work they've performed, many of which don't even claim malpractice. Are you aware of any cases where so-called "software engineers" were sued for malpractice?
      Did you know that one of the P.Eng criteria, at least here in Ontario, is that you cannot discredit another P.Eng?

      True (it's true in the Medical Profession as well...) That's so people don't go around saying, "Stay away from that guy, he sucks. I can do it better!", and debasing the profession in the eyes of the public. If an engineer believes a practising member is negligent, poorly trained, practising out of his area of expertise, a danger to the public, etc., it is his duty to report that member to his association for disciplinary action. The associations will also listen to complaints from individuals regarding their members, and take action where appropriate. Results of all disciplinary hearings are made public, usually in newspapers.
      Most certifications are nothing more than an economic barrier to entry: A club, if you will, whose membership betrays zero information about the capabilities of their members, but rather excludes those who haven't signed up. P.Eng is a particularly notorious one because they've tried to get their grubby hands on virtually all aspects of society, while provably offering nothing in return.

      *sigh*
      The requirements for becoming a P.Eng. are public. In general, you can be sure that the member has completed a degree at an accredited institution or has passed a set of qualifying exams, has a minimum of four years of supervised experience in his area of expertise, and has passed a law and ethics exam, so that he is at least aware of his responsibilities. How many people who call themselves "software engineers" can claim the same?

      The professional designation, P.Eng. is there to provide the public with the peace of mind that engineering work will be performed to at least a minimum standard of quality as determined by other practitioners in the field. You spout off here saying such things aren't necessary, but I doubt you'de ever go to a doctor with a mail-order degree in holistic medicine. And seriously I doubt you'd trust yourself to drive over a bridge designed by some guy who's sole training was playing with erector sets as a kid.
      --
      "Anyone that has ever gotten an idea based on any of my work and done something better with it-good for you."--J.Carmack
    22. Re:Engineers (again...sorry) by ergo98 · · Score: 2, Informative

      Ok, as a recent P.Eng. applicant here in BC, I have to take issue with a lot of what you said, mostly because it is the sort of drivel spouted by semi-trained clowns who want to call themselves "Engineer".

      The classic defense of the P.Eng. (or applicant): The bogus attempt to portray it as a "higher level" that is only assaulted by those unworthy of its grand abilities. I find it especially laughable that the Professional Engineering associations have decided that they can coopt a basic english word (engineer or engineering), as you have masterfully demonstrated (how dare people think they are engineering if they haven't ponied up the dough!). How absurd. These "engineers" apply some grand, wide title over virtually anything they do, no matter how woefully unskilled in that realm. You're a P.Eng even if you're performing software design, even though your training was in building bridges (oh, right....engineers are god like creatures who are masters of all).

      I find it heartening that Microsoft of all people, recently threatened by the PEO, basically responded after consulting their lawyers by telling them to bring it on, and continue to title their infamous MCSE title with Engineer. The reason, of course, is that if the PEO or other Engineering associations actually pursue their ridiculous campaign to own an element of the language (as you pretend they do) they will be put in their place.

      The professional designation, P.Eng. is there to provide the public with the peace of mind that engineering work will be performed to at least a minimum standard of quality as determined by other practitioners in the field. You spout off here saying such things aren't necessary, but I doubt you'de ever go to a doctor with a mail-order degree in holistic medicine. And seriously I doubt you'd trust yourself to drive over a bridge designed by some guy who's sole training was playing with erector sets as a kid.

      Firstly, I won't bother trying to reason as to why doctors and engineers are worlds apart (though Engineers will immediately proclaim that they wield power over life and death, such as in the infamous bridge collapse in Quebec which the fabled ring is hypothetically forged from. They wield as much power as the guy cooking the burger at McDonalds has if he fails to cook it to a high enough temperature, or that guy driving in the opposing lane looks at his radio and smashes into you. We ALL wield the power over life or death, with the responsibility and consequences, daily). Secondly, it's called "market forces": Companies will go to great lengths to impose a process of quality to ensure that the bridges that they build and the software that they create is of a high enough quality for the job at hand. Why? Well firstly they can be sued out of existence in a civil court if they fail to, not even considering the commercial aspects of negative implementations, but secondly because ANYONE , not just the fabled heroic "Engineer" with the masterful designation, can be held CRIMINALLY LIABLE due to negligence. There is virtually no additional onus that an Engineer is taking on that every one of us doesn't in our daily lives of doing our job. Engineers just like to make a big deal about it. As mentioned: When I drive down the road if I exercise undue care I can be put in jail for the rest of my life.

      You

    23. Re:Engineers (again...sorry) by Anonymous Coward · · Score: 0

      Just finished reading that. It didn't change my opinion of the ruling. It's still bullshit. You EXPECT coffee to be hot. Yes, scalding hot. I expect to be burned if I spill it on myself. This woman learned a harsh lesson: Don't put hot liquids in flimsy cups between your legs! Everybody does it (I've done it too), but when shit happens, you'd better be able to accept the consequences of your actions and not blame someone else.

      The world is a dangerous place if you're a fool. Nothing will change that.

    24. Re:Engineers (again...sorry) by Bun · · Score: 1
      The classic defense of the P.Eng. (or applicant): The bogus attempt to portray it as a "higher level" that is only assaulted by those unworthy of its grand abilities.

      The classic defense of the wannabe Engineer: The bogus attempt to portray his profession at a "higher level" than he has the training or experience for.
      I find it especially laughable that the Professional Engineering associations have decided that they can coopt a basic english word (engineer or engineering), as you have masterfully demonstrated (how dare people think they are engineering if they haven't ponied up the dough!).

      I find it laughable that the same people who deride the engineering associations and the government for enacting a standard of education and experience that people must attain in order to call themselves engineers are the same ones who want to put that word under their name on their business card. Kind of like chiropractors calling themselves doctors. They're not. And neither are you.
      --
      "Anyone that has ever gotten an idea based on any of my work and done something better with it-good for you."--J.Carmack
    25. Re:Engineers (again...sorry) by ergo98 · · Score: 1

      The classic defense of the wannabe Engineer: The bogus attempt to portray his profession at a "higher level" than he has the training or experience for.

      And those who criticize the KKK do so just because they don't have a nice white robe and a supply of torches: It's all about the envy, right? Keep on convincing yourself of that if you really want to make yourself feel special.

      I personally have no desire to be a professional engineer (though I could be with ease if that was my goal, but it is not) so it really goads me to see that association, much like a union, trying to expand its presence to "Build its empire" if you will. The PEO is attempting to muscle in on software development, and it truly will be their downfall if they assert the myth a little too heavily. The software industry has a large number of existing quality standards that apply organization wide, and we don't need the mythical, and empirically unprovable, "quality" that a bonafide "engineer" brings to the table.

      I find it laughable that the same people who deride the engineering associations and the government for enacting a standard of education and experience that people must attain in order to call themselves engineers are the same ones who want to put that word under their name on their business card. Kind of like chiropractors calling themselves doctors. They're not. And neither are you.

      Funny, but I don't call myself an engineer or a doctor, but that doesn't mean that I don't find it hilarious when people like yourself try to portray yourself as extra special to the world.

      You clearly seem to be missing the point, however an "engineer" is someone who performs the act of engineering. "Engineering" is the application of mathematic or scientific principals. NEITHER requires a card carrying union-due paying membership in a professional Engineering assocation because they're both basic English words describing an act, not a membership. It's the engineering associations that have attempted to take what should be no more than a marketable association (just like many other certifications. I see a PEO membership no different than a MCSE: Sell the value to the business community and if they value it, then so be it. If they don't then deal with it) and basically co-opt longstanding basic English words for their own gain. How ridiculous. "I'm sorry but `programmer' and `programming' is now the owned property of the Professional Programmer Association of North America. You must now call yourself a peon, and only our members can call themselves programmers". Give me a break.

      Again I laugh to see that Microsoft is one of the first to take a stand, and I've yet to see a concerted response to it, and I suspect that I know why: The ridiculous gangsterism of the professional associations wouldn't hold up in real practice.

    26. Re:Engineers (again...sorry) by Bun · · Score: 1

      I scanned through your reply searching for any new arguments and found none.

      Let's just agree to disagree and move on. You bore me.

      --
      "Anyone that has ever gotten an idea based on any of my work and done something better with it-good for you."--J.Carmack
  3. Bad Programmers == Shitty Salary by kevlar · · Score: 2, Insightful


    They're just paying for what they get. I tend to believe that its not so much bad programmers as it is a general apathetic attitude that good programmers have now. If there's no incentive to bust your balls, you're not going to!

    1. Re:Bad Programmers == Shitty Salary by EvilTwinSkippy · · Score: 1
      Hey, and bad programmers are easily hired and fired. Like crappy cashiers or lousy wait staff.

      Isn't it nice to see that computer technology has finally evolved into a service industry.

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
  4. It is happening again... by not_a_real_person · · Score: 0

    One thing that bugs me about opensource is that bad coders always tend to end up there. If anyone has used the bleeding-edge versions of KDE, Gnome2 or whatever their poison is, then they'll know what "bad code" really means. Thankfully, the security is not too shabby since there's always tons of people who look at opensource code and either exploit it or report it / fix it.

  5. Have you read the article? by Anonymous Coward · · Score: 0

    This article goes to show that Slashdot editors need to be subject to moderation. This one merits -1, Flamebait. Ask yourself: does the guy make a point in a civilized manner, or do you have to wear the proverbial asbestos suit to make sense of it?

  6. This is a great article by tps12 · · Score: 0, Troll

    for me to peon.

    --

    Karma: Good (despite my invention of the Karma: sig)
  7. So basically... by vasqzr · · Score: 5, Informative



    He read a few books on the subject, and summarized the most simple concepts in an article.

    Nothing new here.

    Head to Amazon and find some books ...

    Software Project Survival Guide by Steve C McConnell (Paperback)
    Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire (Paperback)
    The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) by Frederick P. Brooks (Paperback)
    The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, et al (Paperback)

    1. Re:So basically... by Anonymous Coward · · Score: 4, Funny

      Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire (Paperback

      Also holds the world record for "Shortest Book".

    2. Re:So basically... by Shackleford · · Score: 2, Informative
      Yes, it seemed that much of the article focused on security basics, such as the importance of disabling unnecessary services and not trusting firewalls to be a security panacea.

      Anyway, here are a few more suggestions for books that apparently go beyond the basics:

      Any others?

    3. Re:So basically... by FattMattP · · Score: 2, Troll
      Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire
      Please note that this book is found in the humour section of the bookstore and not the computer section.
      --
      Prevent email address forgery. Publish SPF records for y
    4. Re:So basically... by Koyaanisqatsi · · Score: 3, Informative

      Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire (Paperback)

      Why do I find that title funny?

      Seriously now, I had the good luck to find and buy that book about 4 years ago, ever since I always go back and check some of the insights there. There's pretty much everything you need to write solid C code that's bullet-proof and easy to maintain/upgrade. Too bad they don't use the book in-house more often.

    5. Re:So basically... by Anonymous Coward · · Score: 0

      He actually has some pretty good ideas and advice. (Perhaps "they" by extension of "he", not sure there.) Pity they aren't followed...

    6. Re:So basically... by budgenator · · Score: 2

      much of the article focused on security basics... Every profession, vocation or occupation that I have ever heard of considers the basics to be the essensial building blocks for advanced skills. Most experts in any field make it look easy because they've mastered the basics, and frequently the solution to any given problem seems trivial once the extranious information is set a side and you've gotten down to the basics

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
  8. If something like Windows plays any part at all .. by burgburgburg · · Score: 5, Interesting
    in your system design, you should probably give up now.

    A non-Windows system is not a guarantee of invulnerability, but keeping a Windows system is guaranteed to put you at risk.

    The real world seems to agree with him on these.

  9. Re:Could this be happening? by Anonymous Coward · · Score: 0

    Too bad the Linux programmers didn't read this book, eh?

    "
    Linux, Open Source have 'more security problems than Windows'
    By Robin Miller, NewsForge.com
    Posted: 15/11/2002 at 08:37 GMT

    According to a report published November 12 by Aberdeen Group, "Security advisories for open source and Linux software accounted for 16 out of the 29 security advisories - about one of every two advisories - published for the first 10 months of 2002 by Cert (www.cert.org, Computer Emergency Response Team)."

    Aberdeen says Microsoft products have had no new virus or trojan horse advisories in the first 10 months of 2002, while Unix, Linux, and Open Source software went from one in 2001 to two in the first 10 months of 2002, that in the same 2002 time period "networking equipment" (operating system unspecified) had six advisories, and Mac OSX had four.

    In other words, all except Microsoft had increases in reported vulnerabilities this year.

    "Contrary to popular misperception," the report says, "Microsoft does not have the worst track record when it comes to security vulnerabilities. Also contrary to popular wisdom, Unix- and Linux-based systems are just as vulnerable to viruses, Trojan horses, and worms. Furthermore, Apple's products are now just as vulnerable, now that it is fielding an operating system with embedded Internet protocols and Unix utilities. Lastly, the incorporation of open source software in routers, Web server software, firewalls, databases, Internet chat software, and security software is turning most Internet-aware computing devices and applications into possible infectious carriers."

    The report lauds Microsoft for having overhauled its development process in an attempt to fix security problems, and says, "Perhaps it is time for some of the suppliers of open source and Linux software to take similar measures."

    (You'll need to register with Aberdeen to read the rest of the report -- it's one of their free ones -- but I believe I've covered the Linux-relevant high points here.)

    And yet, here I sit with my virus-free, trojan-free Linux box, receiving tons of viruses and trojans from Windows users (that don't affect me), watching news item after news item about sites run on Windows servers getting defaced and broken into.

    According to what I've heard from my many sysadmin and network security specialist friends, no OS or network-connected software is secure unless it's administered properly and security patches are applied as soon as they are available.

    And then, after I started writing this story, a ZDNet article with the headline Linux utility site hacked, infected came across my monitor, and I started wondering, "What if these Aberdeen people are right? What if this isn't just Microsoft-sponsored nonsense?"

    A look at CERT's 2002 Advisories and Incident Notes pages was not overly reassuring. Yes, I saw some Microsoft vulnerabilities there that Aberdeen apparently missed, and one for Oracle.

    I also think we have enough Microsoft viruses left over from last year that we don't need any new ones this year.

    But the real issue is that we all need to be more security-conscious. The Aberdeen report points out that the system with the most reported vulnerabilities can change from year to year, but that the overall vulnerability and incident trend is up. Way up. In other words, whatever operating systems we use, we all need to watch out more for security flaws than we have in the past, and work harder to protect ourselves from them.

    © Newsforge.com
    "

  10. Custom SW a huge security hurddle.. by Havoc'ing · · Score: 2, Interesting

    I work for an IT security company that does works some pretty secure systems. When we come across custom apps we are amazed time and time again how the logic was put into developing them, not just security. Its one thing to code, its another to do it well. My favorite catch was an SQL developer who created a hyperlink to care and feed his system that simply had to many bugs and pushed to production. Its important that companies have good end to end IT polices, apps, usage and security, but in large part managements dont recognize the risk until its to late.

  11. It wont matter much by Lumpy · · Score: 5, Insightful

    The coders are still shackled to the management that are trying to push it out as soon as it compiles and runs.. management doesnt CARE about stability or security and sales/marketing doesn't even care if it works.

    until you can get the COMPANY liable for their software claims. and make their claims open and public, not buried in legalease.. I.E. if you dont want to be liable for it not working then the packaging must state "MIGHT NOT WORK" on the front in big letters.

    until then it will not change... not in commercial software anyways...

    --
    Do not look at laser with remaining good eye.
  12. Useless advice? by Ars-Fartsica · · Score: 3, Insightful
    To quote "It should be a curse to teach C/C++"

    ?????

    While I have taken this out of context, its not worthwhile to dispense with systems coding issues - thats exactly where most security problems start and need to be stopped. Anyone can be safe in a sandbox.

    1. Re:Useless advice? by Subcarrier · · Score: 5, Insightful

      He's contradicting himself here:

      You can tell the difference between a developer who gets it and one who doesn't because the developer who doesn't get it is content to build a custom system using closed source components that they cannot understand, let alone keep secure.

      when he goes on to say that

      High level languages are usually more secure than C/C++ ...

      High level languages are built on layers and layers of things written by other people, things that you know nothing about. If you use C or assemlber, you're much more likely to be in control of the security of your code.

      I guess the comment about C/C++ is aimed at coders who suck more than average; they're certainly better of using code written by other people.

      --
      "I have opinions of my own, strong opinions, but I don't always agree with them." -- George H. W. Bush
    2. Re:Useless advice? by p3d0 · · Score: 2

      Right on. High-level languages, for better or worse, are just another kind of middleware.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    3. Re:Useless advice? by Anonymous Coward · · Score: 0

      Might be true, but their compilers arent really much more complex than a good optimizing C++ compiler. So if they are a liability ...

      Back to unoptimizing C compilers and assembly we go?

    4. Re:Useless advice? by PetiePooo · · Score: 1

      Here's another contradiction:

      You'll find that a large chunk of time is spent in system libraries that you can do nothing about, and maybe a greater chunk spent in kernel mode.

      and moments later:

      The crux of this argument is not to choose a language based on its speed. Most of the time it just doesn't matter, ....

      If a large chunk of the time is spent in the libraries of the high-level language you've chosen, perhaps that an indication that you've made an erroneous choice.

      I'm reminded of an ugly piece of bloatware that our division's tool group came out with. There were numerous non-standard behaviours, constant crashes and odd corruptions. Their platform choice: VB6 with DCOM and MSMQ. They were trying to write an enterprise-quality distributed app with a toy language. It sucked!! And, to prove the point, when asked about the bugs, their standard response was, "It's a library problem; I can't do anything about it!"

      This guy's "guide" isn't worthy of a /. posting. This guy is just an overly opinionated blowhard. Show me a meaningful article with some real tips on how to make secure code.

  13. bad coders by greechneb · · Score: 2, Insightful

    When I look back at my programming classes in college, the majority of the people didn't have a freakin clue. I don't think most of them could install a program on their own. Unfortunately the teachers all walked them through it, and they ended up passing, because they had their hands held the entire way. Its scary to think that some of them could end up in high places.

  14. a good read by lactose99 · · Score: 5, Funny

    I found 2 quotes particularly enjoyable:

    Call yourself a computer professional? Congratulations. You are responsible for the imminent collapse of civilization.

    and

    The user is pure evil.

    Very true and sometimes misunderstood bits of information.

    --
    Fully licensed blockchain psychiatrist
    1. Re:a good read by Digital+Mage · · Score: 5, Funny

      1) Users are pure evil.
      2) Civilization is made up of users.
      3) Computer professionals are responsible for the collapse of civilization.
      4) Computer professionals will therefore destroy all evil. ;^)...Cool!

    2. Re:a good read by Anonymous Coward · · Score: 0

      5) Civilization collapses due to elimination of users.

    3. Re:a good read by Tack · · Score: 3, Funny

      This is almost true, unfortunately I must ammend 2) and 4):

      1) Users are pure evil. (Given.)
      2) Civilization is made up of users and computer professionals. (Assumption)
      3) Computer professionals are responsible for the collapse of civilization. (Given.)
      4) Computer professionals will therefore destroy all evil and take themselves out in the process. (Conclusion.)

      Jason.

    4. Re:a good read by Subcarrier · · Score: 1

      I've never met a civilized computer professional.

      The matted hair and the reek of unwashed skin is a dead giveaway. That, and the ferocious growl if you try to touch his things.

      --
      "I have opinions of my own, strong opinions, but I don't always agree with them." -- George H. W. Bush
    5. Re:a good read by aePrime · · Score: 1

      That's not right...when's the last time a computer professional was considered part of civilization? Doesn't that require some type of interaction?

    6. Re:a good read by Digital+Mage · · Score: 2

      Doh!

      Would we then be considered self-sacrificing heroes or self-destructive villains? Hmmm, such a fine line here.

    7. Re:a good read by SnarfQuest · · Score: 1

      Favorite quote:

      If carpenters built buildings the way programmers write programs, then the first woodpecker to come along would destroy civilization.

      --
      Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
    8. Re:a good read by Anonymous Coward · · Score: 0

      5) ...
      6) Profit!

  15. Of course... by ultramk · · Score: 3, Funny

    the real question that any developer needs to ask...

    "What you need doing? Daboo!"

    going back to minding my fortress now...

    m-

    --
    You catch enchiladas by picking them up behind the head and holding them underwater until they don't kick anymore -VeGas
    1. Re:Of course... by Anonymous Coward · · Score: 1, Funny

      da be good choice maaan

  16. Re:If something like Windows plays any part at all by ProtonMotiveForce · · Score: 1, Funny

    Yet more nonsense. Unix [in general, including Unix-typical tools] has had the most pathetic security history of any operating system.

    Cast ye not rocks from a precipice of cracked glass. Unix security is just as crappy as Windows, and has been for a lot longer.

  17. Not this one by Anonymous Coward · · Score: 0


    Try Smalltalk.

  18. You get what you measure by Max+Coffee · · Score: 5, Insightful
    I really don't think the blame can be placed on the programmers here. Software development organizations get from their programmers what they measure and reward.

    I used to work at a software house, and I noticed our code always adapted to whatever the organization cared about. When they cared about timeliness, we gave it to them, but the bug count went up. When they cared about a low defect rate, we gave it to them, but the volume of code (completed feature set) went down. When they cared about maintainability too, they got that, but app performance suffered.

    Most competent programmers can probably make meaningful conributions to secure apps, especially if the efforts are led by good architects. Not everyone has to be the best. The only thing is, whoever is commissioning the software has to rank security (which includes a low defect rate) above timeliness and feature count. If that's done, most programmers can rise to the challenge.

    Don't blame the programers. They're just adapting to their environment. They do have to put food on the table after all, so they'll do what their companies value.

    1. Re:You get what you measure by aero6dof · · Score: 4, Insightful

      I agree with you and would go a little further. Its not only their internal company environment, but the environment of market too. Unless customers are deciding to purchase one product over another due to its security features, software isn't going to get more secure.

      Look at airbags in cars, the government doesn't mandate side impact airbags, but some manufacturers put them in anyway because it's a selling point that some of the customers care about.

      Now, I'm sure someone is going to point out that maybe we should have gov't enforced minimum security standards. However, I'm skeptical that government would be capable of doing it sanely right now.

    2. Re:You get what you measure by osolemirnix · · Score: 2
      Yeah exactly. In the company I work for, the manager chose to ignore the programmers, techs and sysadmins decision (which, not out of coincidence, were all for the same product) and went for another because it looked so cute. Regardless to say the thing turned out to be a complete crap (and lots of money wasted).

      Luckily the managers superiors saw his faults and fired him eventually (but not before the damage was already done). But the worst part is that the replacement they hired is just as bad.

      So I cannot agree with the article, it should read instead:

      Increasingly incompetent managers are creeping their way into important projects. Considering that most good managers are pretty bad at security decisions, bad managers with roles in important projects are guaranteed to doom the world to oblivion.

      --

      Idempotent operation: Like MS software, wether you run it once or often, that doesn't make it any better.
  19. More experienced managers, in CODE, would be nice by twocents · · Score: 1, Troll

    While 'tis true I'm sure that secure coding practices grow more likely to contain security flaws as more and more of us code, I think the best way for coding to become more secure is to have more managers in the bizz that know about code.

    The more experienced a manager is in actual coding,the more likely he or she will:
    >Listen to and support action upon security
    >Allow time to make apps secure in project deadlines
    >Be less likely buy crappy software from the start (see the section in the article on middleware)
    >Hire good sys admins

    I don't think coders should always get such a bad rap when those "above" tend to sell products without often thinking of how to make it secure, and sometimes don't allow programmers the time to design solid security into a system.

    Don't retire, just replace someone that thinks powerpoint is a good web development app.

  20. Better languages by PylonHead · · Score: 3, Interesting

    It should be a crime to teach people C/C++.

    High level languages like Ruby, Python, or even Java are strongly recommended for all new projects.


    How about a high level, compiled language with static typing like Ocaml. More speed, more protection, and it's been officially certified as "The programming tool of choice for discriminating hackers".

    Ocaml

    --
    # (/.);;
    - : float -> float -> float =
    1. Re:Better languages by Mike+McTernan · · Score: 2

      What about embedded software? I read the FAQ/introduction and couldn't see anything about embedded software. In fact, I can't see how this language would cope with embedded things, where type castings and volatile addresses are *needed*.

      Strikes me that a lot of code out there has to be written in low level languages because of the application, and ironically, these applications may just be the ones that need securing the most (think of a cascading failure in a router for example, depending on the data and network, it could be very very bad).

      I could be entirely wrong, and embedded OCaml might exist - if not, I'm sure it's been though about - but I just don't see how it can work for embedded code (well, I guess you can abstract the device interaction from a core written in OCaml, but that still leaves the IO risky - that's probably where you want secure code right?).

      --
      -- Mike
  21. What hubris. by ProtonMotiveForce · · Score: 5, Insightful

    This "technologist" is carrying on about bad programmers and security? Wow - I assume he's a seasoned professional with many large-scale projects under his belt?

    With such trenchant insights as "Don't use C/C++"! "Don't use Windows!" "Watch out for user input"!.

    Wow. How truly insightful. I'm not even going to bother pointing out the utter absurdity of claiming that using or not using C/C++ has anything to do with it, or the added security problems with using high level languages (do you trust the implementation?).

    I'm just going to say I've had bloody poops with more useful information in them than this article.

    1. Re:What hubris. by Anonymous Coward · · Score: 0

      That sure was some hubris! Boy, I wish I was as cool as you *swoon*

    2. Re:What hubris. by ProtonMotiveForce · · Score: 1

      I detect a subtle amount of nerd sarcasm. Did Matt Groening develop the Simpsons' 'Comic Book Guy' character with you as a reference?

      Was my post "Worst Post Ever"?

      And get with the simes. "Boy"? As "Cool" as? At least use some modern slang, e.g. "I wish I was as pimp as you, dawg. Shoot."

    3. Re:What hubris. by Anonymous Coward · · Score: 0

      Amen my brother, Amen.

      I'm a very successful troll and yet if I posted that drivel to slashdot I would get smacked down to -1 troll.

      The guy is off the hook.

      Warmest regards.

    4. Re:What hubris. by stephanruby · · Score: 5, Informative
      This "technologist" is carrying on about bad programmers and security? Wow - I assume he's a seasoned professional with many large-scale projects under his belt?

      Here is his professional experience on projects. You can actually see his code and the depth of his work is not at all impressive.

    5. Re:What hubris. by Anonymous Coward · · Score: 0

      why don't you slang yourself over a modern cliffy-cliff and plummet to your dizzeth?

    6. Re:What hubris. by ProtonMotiveForce · · Score: 1

      I'm so tempted to go through one of them and find a security hole just for the fun of it. Soo tempted, but sooo lazy. Anyone got some time to spare?

    7. Re:What hubris. by Anonymous Coward · · Score: 0

      I'm so tempted to go through one of them and find a security hole just for the fun of it.

      But why do that, when it's so much easier just to post saying there is one, without bothering to look?

    8. Re:What hubris. by Anonymous Coward · · Score: 0

      Come on, you hypocritical jackass. You call someone else on "hubris" and then you say your poop is smarter than them? Guess what.. you're by far the more arrogant one. And you haven't written any interesting articles lately that I know of. So you're just another slashdot armchair developer jerking himself off. Good for you.

    9. Re:What hubris. by frank_adrian314159 · · Score: 2
      (do you trust the implementation?)

      I trust a language implementation a heck of a lot more than I trust a coder. What's the ratio of compiler bugs to programmer-sourced bugs? Almost nil in my experience and I've spent 20+ years in this industry proving it :-). People who deny that basic fact are sticking their heads in a very, very dark place. The use of high-level language is to be encouraged at every turn.

      --
      That is all.
    10. Re:What hubris. by Peaker · · Score: 3
      There are two points I'd like to make.

      A: I agree with everything he says in his article, and it obviously isn't obvious to most programmers these days, thus insightful.

      B: Skimming through random code of his, it does seem that his code doesn't live up to such high standards that he may claim.

      A: If you just look at the huge amount of high-level projects written in low-level languages such as C and C++, and the sheer amount of bugs, you can see he has a point.
      High level languages may have implementations that add security risks, but the languages themselves make it harder to accidentally express bugs, including those that generate security flaws. A language's practical security value can be measured by the security level of its implementations. If you look at CPython's implementation (The one written in C), for example, you see some very good code, written by very good hackers. I have no clue about the bug-levels in Python systems like psych, Jython, or others, but they are probably of adequate levels. Perl has been around long enough to have probably been debugged as well.
      Java is new and has some seriously crappy implementations with lots of bugs. But out of the vast amount of implementations, some must be safe.
      Adding the language implementation code, is similar to adding any type of code to your project (libraries, system calls, etc). However, language code is probably better debugged, and only a very small base of its implementation has to be debugged for pointer flaws and indexing problems to be eliminated.
      There is almost no doubt that Python has (nearly?) no pointer problems or indexing errors in typical configurations in its official sources.

      B: Just skimming through his "light, secure, lightning-fast HTTP server" code, I saw some ugliness right off..
      Using integers for enum values (even when an enum is declared!). Using complicated pointer arithmetic, where a simple indexing "for" construct can be used (to eliminate error-proneness). Using a static array of pointers to structures, malloc'ating each entry: This is combining the evils of static allocation (limited size, unused bytes for lower cases), and the evils of dynamic allocation (complexity of pointers), the need to malloc'ate (slower than not doing anything), memory fragmentation. Ofcourse he should have used a dynamically growing array of pointers (preferrably one implemented generically via macros/or void* lists, to reuse debugged code), or a static array of structures, but appearantly his code is second-class.

      To summarize: while I think his code isn't the best, I do agree with the points he makes, and according to your claim that high-level languages cannot help security, I think that you are probably worse off.

    11. Re:What hubris. by ProtonMotiveForce · · Score: 1

      Who's saying my poop's smart? I'm just saying the article wasn't.

      And you haven't written any interesting articles lately that I know of

      Neither have you, Bacarella .

    12. Re:What hubris. by ProtonMotiveForce · · Score: 1

      Yeah, someone chirped about me saying he's probably got security flaws in his own code, so I checked identd2 and quickly found one, or at least what could be one depending on how the assmbly gets rolled.

      He's lucky the assembly code isn't coducive to a hack, and this is the same mistake that usually does lead to security holes. It took me 10 minutes to find it.

      Start the ident2 daemon, send it exactly (no more, no less) 128 characters. It will overflow the buffer and set the character after the 'buf' buffer to '\0'. Function is _getl. Send it 127 - daemon keeps client connection open. Send it 129, daemon keeps client connection open. 128 and it closes the client connection.

      Just dumb luck that it isn't (to my knowledge) exploitable.

  22. Peon?! by gergi · · Score: 5, Funny

    Everyone knows peons don't care about security. They just go around doing whatever they're told to do. Half the time, they're just standing around because there's nothing for them to do. They are oblivious to security breaches... I can't tell you how many peons I've seen getting hacked to death without them even noticing! And if they do notice, all they ever respond with is "Stop poking me!!!"

    Peons, indeed

    --
    Nosce te Ipsum
    1. Re:Peon?! by LostCluster · · Score: 2, Interesting

      This is the same as the school system admin who sets up a mail server for the school but fails to restrict its use to only the school's IP space. Suddenly it's discovered as an open relay, published on web sites, discovered by spammers, and they find their IP space in a black hole.

      They're puzzled wondering why their network is sorta-broken. Most web sites work just fine but some don't. Everybody can send out e-mail, but people are complaining that the messages are bouncing half of the time.

      When they discover they've been black-holed, they don't understand why they're being punished for the actions of spammers that they think are out of their control. They want to what they spammers are doing with their network to be illegal, and they want the lawyers to make the problem go away.

      Oh, all the trouble a little security knowledge could save.

    2. Re:Peon?! by BigJimSlade · · Score: 2

      Everyone knows peons don't care about security. They just go around doing whatever they're told to do. Half the time, they're just standing around because there's nothing for them to do. They are oblivious to security breaches... I can't tell you how many peons I've seen getting hacked to death without them even noticing! And if they do notice, all they ever respond with is "Stop poking me!!!"

      That's not true at all! Why, just the other day my peons built a barracks and several watch towers. You are right about the poking thing though... they don't like that one bit.

  23. Exactly! by truthsearch · · Score: 2

    Open source systems offer this power to the end user (you), that is their real strength. You can tell the difference between a developer who gets it and one who doesn't because the developer who doesn't get it is content to build a custom system using closed source components that they cannot understand, let alone keep secure.

    That's precisely why the IT deparment of my company is setting themselves up to fall apart. My group's lead tech (lead not because of higher knowledge, but because he's hung around a while and sold himself) is convinced closed source is better. His arguments come from quoting Microsoft's advertising and web sites (which are basically just more advertising). Without even trying anything open source my company has whole-heartedly adopted .NET. I am so out of here as soon as possible.

    Ignorance may be bliss, but only for the person who's ignorant. They're happy... I'm not.

    1. Re:Exactly! by Anonymous Coward · · Score: 0

      The second part to that is that as long as your IT department cannot even agree among themselves to be focused on the same goals, you will always have gaping problems.

      Whether it's open source or not is not as relevant as you might think; having people who sit around pining for open source and hating the boss for making them use windows, rather than taking the time to LEARN windows and at least try to make thigns the best they can be doesn't help.

  24. Oh, come on now... by talks_to_birds · · Score: 2
    ...I mean, really:

    "...Considering that most good programmers are pretty bad at security, bad programmers with roles in important projects are guaranteed to doom the world to oblivion..."

    My!

    We are the important little center of the universe, aren't we!

    Oh! this is just book-marketing bullshit?

    Or maybe hyperbole, if the author is literate to know what that word means...

    t_t_b

    --
    I'm on PJ's "enemies" list! Are you?
    1. Re:Oh, come on now... by ethereal · · Score: 1

      I know. My first thought: "You keep saying that word. I do not think it means what you think it means."

      From a cosmic perspective, our world already languishes in oblivion. From the perspective of anyone actually living here, the world has little chance of ending up in oblivion, at least until we're all living in some sort of Matrix/EverCrack-generated artificial reality.

      --

      Your right to not believe: Americans United for Separation of Church and

  25. Huge middleware isn't such a great idea by Spy4MS · · Score: 2, Interesting

    Gotta agree with him on this one. I finally got out of a multi-year project where we used a gigantic POS graphics package as the back end. It added unnecessary complexity and over a year of hacked code to what should have been a month-long project (had we coded the graphics functions ourselves).

    We got stuck with the package because the client chose it, and refused to admit they were wrong. When the project when 10X over budget and people got fired, they still stayed with the graphics package and even upgraded it to the 2.0 version.

    The only way out was to quote them an astronomical figure for upgrading our software to match the POS and hope they wouldn't bite. I cheered when they politely declined.

    It's good to have a job where you can choose your clients.

    1. Re:Huge middleware isn't such a great idea by Anonymous Coward · · Score: 0

      Isn't this exactly the behavior that will lead to imminent collapse of civilization? Allowing a client to back themselves into a corner full of bad choices that lead to inevitable security failure is nothing to brag about... Mike label this "Peon Behavior" and add this to his document.

  26. Designer liability by slycer9 · · Score: 1, Interesting

    While in theory I agree with the designers of said software being liable for the flaws therein, to what extent are we to pursue them? If I, as a coder in a firm unwilling to compensate me for the time, energy and resources necessary to produce good code, and they push for, and accept badly designed products, am I, as the actual creator to be held liable? Or would it be acceptable to go after the upper management types who accepted said code in the first place? A little perspective needs to be used here before we start screaming for the heads of those responsible for insecure software.

    --
    Don't park drunk, accidents cause people.
  27. It should be a acrime to teach C/C++ by l33t-gu3lph1t3 · · Score: 5, Insightful

    I agree whole-heartedly with the first of 2 non-superfluous statements the author makes: Why do you think Java and, to a lesser extent, C# are so popular right now? ESPECIALLY for teaching? Because with Java and C#, it's very, very hard to write code that can break the system it's running on. I also agree to some extent with his position on cyptography...most serious (non-IE/Outlook) insecurities aren't based on cracked crypto - they're in buffer overflows, and weak points in code. I don't pretend to be anything but a pathetic first year java student, but I can see where this author is coming from just be reading this website once a week...

    --
    ------- "From bored to fanboy in 3.8 asian girls" ----------
    1. Re:It should be a acrime to teach C/C++ by Anonymous Coward · · Score: 0

      >Why do you think Java and, to a lesser extent, C# are so popular right now?

      Because people are sheep? The exact same reason anything becomes popular.

      >ESPECIALLY for teaching?
      Yea, good thing I learned Pascal.

      >I don't pretend to be anything but a pathetic first year java student, but I can see where this author is coming from just be reading this website once a week.

      Ahh, that explains it.

    2. Re:It should be a acrime to teach C/C++ by vendull · · Score: 2, Insightful

      Schools are teaching languages like Java and C# because there is so much hype surrounding those languages.

      IMO, this is part of the problem. Languages should not be taught. concepts should be taught,a nd those concepts will translate to any language. People are coming out of schools having only been taught in Java (C# / whatever) and have no concept of things like memory management, buffer overlows etc. These folks have never had to think about these issues before because they only wrote Java code in school. When these people get out into the industry, they will almost certainly have to maintain some code at some time that deals with issues like this. Sorry, but the world doesnt revolve around all of these high level languages yet. There is a lot of C/C++ code out there in the real world that will need to be maintained for many years to come. We haven't managed to kill off COBOL yet after all :).

      Also, as others have mentioned, coding in these high-level languages can give you a false sense of security. Do you trust your Java implementation for example? Are you willing to say for certain that the JVM doesnt have any buffer overflows in it :).

    3. Re:It should be a acrime to teach C/C++ by ChaosDiscord · · Score: 3
      Because with Java and C#, it's very, very hard to write code that can break the system it's running on.
      If I can break the system I'm running on with a user level program, be in C, assembly, or whatever, the operating system has a bug and should be fixed. Once your running in the kernel level, well, you can pretty easily break things in any language.

      Languages like Java and C# give you controlled, well-known failure states for certain categories of bugs (you can still walk off the end of an array hosing your program, but the behavior is well defined, unlike C or C++). These languages also restrict your ability to specify unsafe things, but in doing so they take away your ability to specify certain useful ways of doing things. But there are still huge numbers of ways to put bugs into your programs in any language. Java and C# are not magic bullets, they're simply points along a spectrum of safety, power, and expressiveness.

  28. Brilliant idea!?! by jaredcoleman · · Score: 2
    Here's a wonderful paragraph...
    High level languages like Ruby, Python, or even Java are strongly recommended for all new projects. The reason these languages are more secure (in theory) is that they don't have pointers. Most security vulnerabilities that involve breaking program code involve manipulating pointers-in fact, many programming bugs are generally related to pointers in some way. As with the OS issue noted above, do not mistake this for invulnerability. You're simply less likely to be compromised using this particular attack vector with a high level programming language.

    I guess we better throw out everything other language, since these are "strongly recommended for all new projects." Here's a better idea: why not just write the software in the language best suited for the job, or that you're more familiar with, and code it to check for unexpected data.

    1. Re:Brilliant idea!?! by rebrane · · Score: 1

      You rated this at 2? Did you even read the article? He says right there that for systems programming, C/C++ are the most appropriate languages.

  29. Your wife's in-laws? by Wee · · Score: 3, Funny
    One time I was in the next state visiting the wife's inlaws...

    Wouldn't your wife's in-laws be your parents?

    Sorry, couldn't resist... :-)

    -B

    --

    Ash and Hickory, straight-grained and true, make excellent bludgeons, dandy for the cudgeling of vegetarians.

    1. Re:Your wife's in-laws? by Anonymous Coward · · Score: 0

      Unless the "next state" is Utah...

    2. Re:Your wife's in-laws? by EvilTwinSkippy · · Score: 2

      Doh!

      --
      "Learning is not compulsory... neither is survival."
      --Dr.W.Edwards Deming
    3. Re:Your wife's in-laws? by Anonymous Coward · · Score: 0

      maybe he's from Utah???

    4. Re:Your wife's in-laws? by AJWM · · Score: 2

      Not necessarily. We used to visit my (first) wife's in-laws a lot. I suppose technically they'd be her former in-laws, the parents and sibling of her late first husband. (He died in a car crash a couple years before I met her.)

      --
      -- Alastair
  30. Wrong approach by lazyl · · Score: 5, Insightful

    It should be a crime to teach people C/C++.

    This guy is a little rough I think.

    High level languages like Ruby, Python, or even Java are strongly recommended for all new projects.

    This sentence should be continued "..for mediocre programmers.". Professional experts should use whatever language they are best at as long as it's reasonable for the project.

    This article looks like he's giving advice on how to take a group of wanna-be progammers and try and get useful results from them. I think that's the wrong approach. What you should do is hire real experts. That way all the wanna-be programmers won't be able to get jobs and so they might realize "hmm.. maybe I should go back to school and get some real skills". Then we wont have as many of the problems that this guy talks about. Though maybe the schools aren't teaching the skills properly, but that's a different topic.

    --
    Aw crap, ninjas!
    1. Re:Wrong approach by Anonymous Coward · · Score: 0

      Look at the quote again. He specifically says "for all new projects." New projects should be sandboxed, while the implications of the I/O paths are worked out, and bad assumptions are caught and fixed. Once the behavior is well-understood, it can be re-implemented in a "better" language.

    2. Re:Wrong approach by maelstrom · · Score: 2

      So are OpenBSD programmers good at coding in C securely? Are they not professionals? Have they not made mistakes that comprimised the security of the entire system? What was your point again?

      --
      The more you know, the less you understand.
    3. Re:Wrong approach by tshak · · Score: 2

      Spoken like a true elitist. I've worked with many CS grad's who could write code that could run circles around mine when it comes to memory management and sorting strings efficiently. But when it comes to clean OO and application design in a Java or C# environment, they Just Don't Get It(tm). Many are caught with all of the cool optimizations they can do because they understand so much about things that just don't matter in these higher level environments. To be fair, I've worked with CS grad's who are overal excellent developers, but the point is that a "real expert" need not know how to hack Assembler for your next J2EE project.

      hmm.. maybe I should go back to school and get some real skills

      School does not give you skills (or at least not primarily), it teaches you how to think and how to learn. School can not make you an expert, it can only give you the tools that you need to become an expert.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    4. Re:Wrong approach by Anonymous Coward · · Score: 0

      Ah yes, the wonderful Java *sigh*

      Window = new Window(new Dimension(new Integer(new BitValue(new Bit(new MemoryAtom(new Electron(new Position(new Integer( ...

      Java sucks

    5. Re:Wrong approach by MarkCollette · · Score: 1

      Window = new Window(new Dimension(new Integer(new BitValue(new Bit(new MemoryAtom(new Electron(new Position(new Integer( ...

      Well, the "Window = new Window(new Dimension(" part was realistic, but the rest was you grasping for a point that doesn't exist.

    6. Re:Wrong approach by MarkCollette · · Score: 1

      High level languages like Ruby, Python, or even Java are strongly recommended for all new projects.

      This sentence should be continued "..for mediocre programmers.". Professional experts should use whatever language they are best at as long as it's reasonable for the project.

      Right. You did notice that the title of the article is: "The Peon's Guide To Secure System Development". Hence this is advice for peons, not experts.

  31. Everyone has to start somewhere. by BoomerSooner · · Score: 5, Insightful

    I guess you shot out of the womb with coding skills (doubtful). Everyone has to learn in their own way. In the end if someone wants to learn to program well, they will. Otherwise they'll just coast along until it's required.

    I was a shitty programmer out of college and after moving between various jobs I learned along the way.

    Business works by getting the most for the least amount of cash. Unfortunately most businesses don't have competent managers that can tell the difference between anything applicable in the real world and a buzz word they just read on CNet (most technical conversations are over their heads). That is my experience anyway.

    1. Re:Everyone has to start somewhere. by Junks+Jerzey · · Score: 2

      I guess you shot out of the womb with coding skills (doubtful).

      Realize, though, that's it's often the so-called experienced programmers who are making mistakes, and these are the people that the article is criticizing. The newbie programmer will write a typical program in Python, because it's just so much damn easier. The e\33+ programmer will write it in C++, because C++ is a Manly Language. (In case you didn't read the article, one of the key points is that languages like C++ should be avoided.)

    2. Re:Everyone has to start somewhere. by Wilebi · · Score: 1

      Sure, some learn slower than others, but I think it's unrealistic to assume everyone will "get it" eventually. I was appalled not so much at the lack of skills my classmates had (can you have a lack of skills? Is that like owning no tea?) but rather at their lack of care.
      If an engineer coasts to his/her degree, it'll show because it can be shown their bridge will fall over and they'll fail the courses. If a programmer coasts, their code may still run, but with errors and exploits just waiting to rear their ugly heads. What professor or grader is going to deduct points or fail a student because their code is "exploitable"? None; if it runs, it passes.

      That being the case, yeah, absolutely: No C/C++ as teaching languages. Teach 'em to program with blunt languages before handing them something pointy.
      --
      This is not a sig

    3. Re:Everyone has to start somewhere. by Anonymous Coward · · Score: 0

      You proabably suck, but just don't know it...

    4. Re:Everyone has to start somewhere. by Anonymous Coward · · Score: 0

      Actually, I started coding when I was 5 on Apple II's in the junior high computer lab.

      Thank God the Canton, Illinois school district had a program set up for gifted students. -Damian

    5. Re:Everyone has to start somewhere. by Dalcius · · Score: 1

      What about those who learn Java or Perl first and don't want to dip into the murky waters of C?

      That was me when I started programming.

      Then again, there's the question of whether C *should* be learned. It sounds ridiculous to some of 'ye old folk' who think that anything but C is stupid, but as far as I can see, the only real benefit of C is speed. It's widely known, sure, but that will, like with all other things, change in time.

      As a disclaimer, I work with Fortran and C for a living. I'm not as ignorant as some would think, but more than others would think. Don't flame, enlighten through logic and making the connections.

      --
      ~Dalcius
      Rome wasn't burnt in a day.
  32. Technological Solutions to administration. by wray · · Score: 1
    I attended a colloquium here at BYU, where the guest speaker was Scott Lewandowski (MIT - Lincoln Labs). They are working on an architecture called SARA (Survivable Autonomic Response Architecture) that deals with attacks in computer time. This does not negate the need for a good administration team, but does allow machines to be stronger and more fault tolerant.

    For a quick summary:

    Current computer security research is motivated by the realization that some cyber-attacks will succeed and that systems therefore must be designed for survivability. Two critical enabling technologies for building survivable systems are autonomic response and orchestration. SARA, the Survivable Autonomic Response Architecture, is an architecture developed as part of Lincoln Laboratory's participation in the DARPA SWWIM program. SARA facilitates orchestrated autonomic response by allowing components developed by independent information assurance developers to collaborate to defend computer networks and systems. SARA is well suited to defend against fast, distributed information attacks that require rapid, coordinated, network-wide responses. The core components of the architecture are a run-time infrastructure (RTI), a communication language, a system model, and defensive components. The RTI incorporates a number of innovative design concepts and provides fast, reliable, exploitation-resistant communication and coordination services to the components defending the network, even when challenged by a distributed attack. The architecture can be tailored to provide scalable information assurance defenses for large, geographically distributed, heterogeneous networks with multiple domains, each of which uses different technologies and requires different policies. The architecture can form the basis of a field-deployable system. Prototype versions of SARA have been used in a number of experiments and environments; most notably, SARA was a core technology in an experiment in which distributed defenses neutralized a self-propagating polymorphic email virus.


    The only link I could find was the universites link to the colloquium which has the short abstract I quoted above.
    --
    Guess what? I got a fever! And the only prescription.. is more cowbell!
  33. High level languages by Anonymous Coward · · Score: 2, Insightful

    >High level languages like Ruby, Python, or even >Java are strongly recommended for all new >projects.

    All of these languages use a C program to
    run.(interperter, VM).

    First this guy suggest against useing
    close source components are components
    that you do not understand.

    Well, what are these high level languages that
    he is suggesting. There just a convinent
    ways to write C. (Java excluded)

    Maybe he thinks that you should read through
    the ruby and python source before you
    start using these languages?

    I think he's suggestion is the reason
    we have bloated unsecure software,
    everyone trust that there languages
    is in a little black box just because
    it has a VM. What if the VM has a security
    flaw, isn't this just like running a
    secure program on top of windows.

    Just keeping a developer from using pointers
    is no way to insure a projects security.

    1. Re:High level languages by __past__ · · Score: 3, Insightful
      There's a simple solution to both the problem of hight level languages being "just a convinent ways to write C" (and I don't see why one should exclude Java here, but I don't think that this argument is valid anyway) and them being slow. Use high level languages that don't run in a C-based interpreter. Duh.

      For example, try Common Lisp, Objective Caml or Ada (not that high-level, but not the worst idea if you care about security).

    2. Re:High level languages by Jason+Earl · · Score: 3, Insightful

      Using a high level language is the best kind of software reuse. The reason behind this is simple, chances are good that you are never going to be as talented as Guido van Rossum or Larry Wall. Nor will your data structures get as many eye balls examining them as Python lists or Perl arrays. Borrowing the work of the hackers that created some of these languages only makes sense.

      Now, I am not saying that these programs don't have bugs, because they do, but I would bet that they have less bugs than anything you have ever written. So while using high level languages doesn't insure security, it certainly does help.

    3. Re:High level languages by Anonymous Coward · · Score: 0

      I am not saying that code reuse is not important I am trying to stress the inconsistances in this guys argument.

      Did you notice that perl wasn't mentioned it's syntax must not be pretty enough, or maybe OOP enough.

      Hey maybe good software has more to do a with good design vs. a good language. Because you know that fortarn programs can write fortran(I mean ADA) code in any language.

    4. Re:High level languages by ranulf · · Score: 2
      > Just keeping a developer from using pointers is no way to insure a projects security.

      From the article:
      It should be a crime to teach people C/C++.
      [...] Java [...] The reason these languages are more secure (in theory) is that they don't have pointers.

      This just shows that the guy really doesn't have a clue what he's talking about. Bugs in software are often exploited by targetting buffer overflows or protocol weaknesses. So, whilst Java tends not to be susceptible to buffer overflows in the traditional sense, it can still be a D.O.S. target, for example, if someone gives the program input that causes it to exceed the bounds of an array and that exception is never caught.

      But more insidious are protocol weaknesses. If the programmers don't understand security then any app has the potential to be insecure no matter what language it's in. The obvious example is a simple server written in Java that takes connections on a given port and executes whatever command it is passed. Is this any more secure than an equivalent written in C?

      The trouble is that more and more, people don't consider design enough and just believe that whatever they write is safe.

    5. Re:High level languages by Jason+Earl · · Score: 2

      I agree completely. The true answer to security is not "use a Free Software OS and a high level language." If that were true I wouldn't front my Zope application server (written mostly in Python) with Apache. Fact of the matter is that Apache is a lot more battle tested than Zope, and there are plenty of cases where Zope does the wrong thing (which is one of the reasons why the developers generally encourage using either Apache or Squid as a Zope front end).

      However, I personally think that "a good design" is only part of the story. Sendmail doesn't have a particularly design, but it's become pretty hardened over time. In short, I think that security comes down to a combination of design, openness, language, and the amount of use the software gets.

    6. Re:High level languages by defile · · Score: 4, Informative

      When you critique someone's work, it is customary to first read it in its entirety. Besides the fact that it's just common courtesy, if you had read just one more paragraph you could've prevented yourself from committing such an egregious faux pas.

      In other words; if you're going to insult someone don't reveal what a stupid twit you are in the process. Dumbass.

      High level languages like Ruby, Python, or even Java are strongly recommended for all new projects. The reason these languages are more secure (in theory) is that they don't have pointers. Most security vulnerabilities that involve breaking program code involve manipulating pointers-in fact, many programming bugs are generally related to pointers in some way. As with the OS issue noted above, do not mistake this for invulnerability. You're simply less likely to be compromised using this particular attack vector with a high level programming language.

    7. Re:High level languages by Jeremi · · Score: 2
      What if the VM has a security flaw, isn't this just like running a secure program on top of windows. Just keeping a developer from using pointers is no way to insure a projects security


      True, there might be a security flaw in the VM. But the chances of there being a bug in the VM is much much smaller than the chances of there being a bug in the application code, so it's still a big improvement over writing everything in C directly.


      A good VM is much more likely to be bug free for several reasons: (a) its task is much more clearly defined than that of the typical application, (b) it is much smaller than the typical application, (c) it was generally written by people who are very good at what they do, and (d) it has been used and tested by a large number of people and organizations over a long period of time.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    8. Re:High level languages by ranulf · · Score: 2
      When you critique someone's work, it is customary to first read it in its entirety. Besides the fact that it's just common courtesy, if you had read just one more paragraph you could've prevented yourself from committing such an egregious faux pas.

      That's nonsense. Generally, (and not I'm not actually talking about this specific article in this case), if something is garbage, you can work that out without having to read through the whole lot.

      As it happens, I did read pretty much all of the article, including the paragraph you quote. But the fact is the author makes a bold statement, "Avoid The Cursed Languages", when in reality the problem is not the programmer's choice of language but the fact that they haven't thought about and sepcified exactly what their program is going to do before coding it. Almost invariably, coders developing like this pay little attention to security.

      In fact, the point I was raising is only alluded to in one of his closing sections, "Don't Trust User Input", certainly not given a great deal of exposure in his article.

      In other words; if you're going to insult someone don't reveal what a stupid twit you are in the process. Dumbass.

      Pot. Kettle. Black.

    9. Re:High level languages by OneEyedApe · · Score: 1

      There is one advantage to using high(er) level languages. They often require less code to be written. As an example two Win32 applications, one written in VB and one written in C/C++, the VB application would have far less code. Less code leaves you less room to introduce bugs.

      Though good design is above all what any programmer should strive for. And a language that is better designed than VB would be nice.

      --
      Life sucks, but death doesn't put out at all....
      --Thomas J. Kopp
    10. Re:High level languages by defile · · Score: 2

      As it happens, I did read pretty much all of the article, including the paragraph you quote. But the fact is the author makes a bold statement, "Avoid The Cursed Languages", when in reality the problem is not the programmer's choice of language but the fact that they haven't thought about and sepcified exactly what their program is going to do before coding it. Almost invariably, coders developing like this pay little attention to security.

      I'm not sure how that whole section on programming languages didn't convey the exact same point. If a moron doesn't have C/C++, their potential to do damage is far reduced. It is not eliminated, it is still possible to do damage. But if you have someone who doesn't care, this is a good place to start. The article is speaking to morons as a developer who is tired of dealing with them.

      Why all of the "good" programmers were offended by an article that clearly targets sub-par programmers is beyond me.

  34. We Need To Consider 1980s DOD Practices by DoctorMabuse · · Score: 5, Insightful

    During the 1980s, I developed software for ICBM command and control systems and for ICBM targeting. One of these systems ran on a Rolm 16-bit computer and was programmed in Jovial, assembly and Fortran. At the time, this computer was already 5 to 10 years behind the commercial state-of-the-art. However, it worked and almost all of the bugs in the computer and the compilers were known, and THAT is the key to developing secure software.

    Don't use the latest and greatest. Use something that has been in production for several years and has had the bugs worked out. The military used to do this on critical systems. Did I hate coding in Jovial on a machine that only had 64K? Yes. But I also knew the machine inside and out and had hand-checked the compiler's assembly code generation to make sure that it wasn't doing silly things. It didn't, because 5 years in production had wrung out all of the bugs.

    1. Re:We Need To Consider 1980s DOD Practices by malraid · · Score: 2, Funny

      Hey...
      We're talking important stuff here, like e-mail and P2P networks, not silly ICBM toys

      Now getting into a more serious attitude, the DOD has always done things in a way which is completly different from Corporate America, and Consumer America, where 2.0 is much better than 1.5, because it has more features, nicer GFX, whatever. Ohh, and 8.0 is much better, even if there was never a version 7.0, or 6.0, or 5.0, etc.

      Do you guys think that the Marketing people as Microsoft were thinking about security when they gave the 8.0 number to the new MSN?? Unfortunatly, this is a marketing world, and the best marketing almost always wins. And if the loose, the marketing people try to make it look like they won anyway !!

      --
      please excuse my apathy
    2. Re:We Need To Consider 1980s DOD Practices by Anonymous Coward · · Score: 0

      Off topic, I know, but I have to ask:

      You were developing software for ICBM's in a language called Jovial?

      That's brilliant.

    3. Re:We Need To Consider 1980s DOD Practices by tshak · · Score: 2

      I had a Softawre Development Manager who worked for the Joint Strike Fighter program at Boeing who had the same philosophy. We never got projects done in a reasonable time, everything was done using dated technology that couldn't do what we needed it to do without a lot of developer effort, and half of our budget went to technical writers so that we could have huge libraries of documentation that would be outdated before it was even printed. Military grade software development simply doesn't work in most businesses. Eventually he got fired and replaced by someone who allowed us to get the job done, and to this day the system has never double billed a customer, or had any other significant breaks in production.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    4. Re:We Need To Consider 1980s DOD Practices by Waffle+Iron · · Score: 1
      Now, who can spot the common ICBM newbie programming bug:
      ...
      if (user_entered_key = master_key)
      {
      target(MAJOR_CITIES | MILITARY_SITES);
      arm_warhead(ALL_MISSILES);
      launch(ALL_MISSILES);
      }
      ...
    5. Re:We Need To Consider 1980s DOD Practices by Anonymous Coward · · Score: 0

      Um, the compiler?

      foo.c:6: warning: suggest parentheses around assignment used as truth value

      You do turn on all the warnings and never ship code that throws them, right?

      Granted, some idiot would probably wrap it in ()s and never realize that he's only supposed to do that when he's REALLY SURE that it's supposed to be = and not ==. You know the line about building a better idiot.

  35. Just what we need... by j_kenpo · · Score: 5, Insightful

    You know, theres something to be said for ignoring articles written in a degrading way towards its audience. It does make an interesting read if you imagine the comic book shop guy from the Simpsons was the author... worst article ever...

    1. Re:Just what we need... by AgentTim3 · · Score: 1
      The only reason I can think of that someone would be offended or put off or feel that this article is degrading is that it's perhaps hitting a bit close to home, no?

      Might want to think about that. And maybe read the article again.

      And oh yeah, quit karma whoring, Beavis.

    2. Re:Just what we need... by ProtonMotiveForce · · Score: 3, Insightful

      The offensive part is the platitudes. It's one big general diatribe on nothing at all. Reminds me of the preachy father from Hamlet - all words and no content.

      Is his point that people need to be more serious about security? Fine. But he's utterly unqualified to be giving technical advice or making technical judgements on a field he obviously knows nothing about (use Python, Ruby, or Java and never C++? I call buzzword bullshit bingo!) other than the vague general knowledge a "technologist" would have.

      It's like me saying plastic surgery has become dangerous because there are so many quacks, and they all need to sharpen their scalpels and pay attention to sterility.

    3. Re:Just what we need... by AgentTim3 · · Score: 1
      Well, I don't have enough energy to spare on getting offended by the platitudes. To me, it just turned the article into "light" reading, good for a quick break.

      He's still got a valid point in there somewhere. You'd think with the economy tanking that it would weed out more of the shabby programmers running around with IT degrees from random business schools.

      From what I've seen, that's completely not the case. Idiocy seems to pervade every level of company management, and that means idiot programmers are still getting hired by idiot HR staff. And for a lot of companies, I expect this will represent a considerable problem with their future code base.

    4. Re:Just what we need... by greenrd · · Score: 2
      use Python, Ruby, or Java and never C++? I call buzzword bullshit bingo!

      No, it's a valid point. "Programmers" who don't understand pointers shouldn't use C++ for production code, at least not until they understand what they're doing.

  36. Very Good Work by photon317 · · Score: 2


    This is one of the best all-around security articles I've read in a long time. If even 10% of the world's programmers read this and take it to heart, the world will be a measurably better place.

    --
    11*43+456^2
    1. Re:Very Good Work by f1shlips · · Score: 1

      You don't read much do you?

    2. Re:Very Good Work by photon317 · · Score: 2

      fuck off

      --
      11*43+456^2
    3. Re:Very Good Work by Anonymous Coward · · Score: 0

      This is one of the best all-around slashdot posts I've read in a long time. If even 10% of slashdots posters read this and take it to heart, the world will be a measurably better place.

  37. salt on the glass.... Big grains of salt! by Hamstaus · · Score: 2, Insightful

    If something like Windows plays any part at all in your system design, you should probably give up now. Despite being closed source, holes are discovered constantly.

    I hate to break it to this guy, but this article is basically a big rant of his personal opinions. Not that I have anything against that, but I feel anyone heeding this person's advice unerringly would be making just as big a mistake as if they didn't listen to any of his advice.

    Open-source, closed-source, it doesn't goddamn matter. The fact is, code is written by humans, and is therefore imperfect. Realize that now and save yourself a lot of time. Open-source continues to have just as many flaws in it as closed-source. How many times has the bind package been updated in recent memory? And don't start the "many eyes" thing again, we all know it and we're all tired of it, and I realize open source gets fixed faster.

    My point is, when I first got into Linux, I took a default install of Red Hat and threw it on there. I had read all sorts of advice that if I wanted a secure server, I should use *nix, so I did. Yeah... rooted. Rebuilt the box, using a way newer distro... rooted. My failing was trusting the code implicity based on what other people said. Old versions of open source stuff are just as vulnerable as old versions of closed source stuff! And you know what? I guarantee that this will always continue to be true.

    Constant vigilance is your only safe-guard. The open-source/closed-source argument is secondary to this. If you can build, deploy and maintain a closed-source based system much easier/cheaper/faster than an open-source one, well, balance that against your security requirements.

    --
    I moderate "-1, Fool"
  38. inspectors by Twillerror · · Score: 1

    Programmers are in a way like construction works. We build something up, usually based on some specs. The big difference is that we don't have people looking over our shoulders. Putting up a wall usually takes more then one person, so the other person will see the problem.

    Code reviews, ie. open source, is the answer to this delima, but in a lot of cases the teams are just too small, and the application not used by enough programmers to really make this work.

    If you worry about your app being secure your going to need it inspected. Even the best "security" programmer is going to make a mistake or two. A program could be in the wild for years before a hacker realizes a design flaw and takes advantage of it. You need people looking at it with a checklist. Ensuring now buffer overruns, easy to guess password schemes, and then you just need someone who hacks for a living to try out various scenarios.

    We should also stop trying to patch the problem and fix it. Things like buffer overruns are getting old. Most high level languages are immune to. It's been a while since I did C programming, but if you writing a network server, why not use some kind of Object to repersent your data, verus a straight up char[] and have check in the object. Make it harder for inexpierence programmers to make mistakes, or even expierence ones for that. If you've used Java, you know the compiler throws a lot of fatal warnings to keep these things at bay. Why can't the C++ community adopt some of these.

  39. Article missing key point by bigmouth_strikes · · Score: 5, Insightful

    The article is a nice read, but it is obvious that the author have little experience in commercial software production.

    Quality and security of a commercial software product is a financial decision, not a technical. Much like how software architecture is a strategic and not a technical decision, which many software developers do not realize.

    When the cost of continuing to improve quality and security exceeds the income from support contracts, you have to draw the line. If you don't provide or charge for support, you draw the line when your investment exceeds your targeted income projections.

    There are software products that are secure and virtually bug-free, but you and I can't afford them. They run nuclear plants, space shuttle command centers, etc etc. Hundreds of millions of dollars have been spent on that software, and it is not a question about "the user is evil". It's about having a thorough and mature development process and organization, preferable at CMM level 5.

    So, I really don't know where the article would apply. Maybe when writing simple VB games for your website. Absolutely not when writing commercial grade software.

    --
    Oh, I can't help quoting you because everything that you said rings true
    1. Re:Article missing key point by 955301 · · Score: 2, Interesting

      Your point is noted, but the author is speaking of the collective crappiness and the fallout that will occur.

      I just spent the last 3 weeks cleaning up crappy programming from one of my project-mates. Pick something - not closing db connections, 18 points where infinite loops could occur (!), 48 cases where error points are ignored they didn't exist, and the program continues. In a program that is 60Kb of bytecode! I'm already rewriting code, and this is the first release!

      This is not a low budget, miniscule project. But still, one bad grape and the whole bunch goes. Time and time again.

      So for everyone chanting "hire experts!", count the number of truly solid programmers you know, and drum up a percentage against those you know that suck. For a while there, the industry was stretched across ALL of those people, good and bad, and dying for more techies. Do you really think that the good developers (i.e., the ones who know to slow down and get it write the first time) can take up the entire load? Do you think industry is gonna wait for these experts? Now how about CMM level 4+ rated groups versus all those developing code. Rinse repeat.

      On a more humorous note, the budget problems would probably all disappear if it weren't for Slashdot, but I'm not exactly out to kick my habit...

      --
      You are checking your backups, aren't you?
  40. Buffer overflows by Kiwi · · Score: 2
    One of the most common security bugs is a buffer overflow. BUGTRAQ often sounds like a broken record which says "buffer overflow"; obviously coding practices which prevent buffer overflows is desirable.

    For my application, I have made a special string library which is resistant to buffer overflows. Instead of a string being a simple pointer to a string of characters, terminated by a null, a string is a structure with the following information:

    • The current length of the string
    • The maximum possible length for the string
    • The encoding of the string
    • The length, in octets, of a single piece of data in the string
    I then make sure that any manipulations to the string library always check to make sure we do not exceed the maximum length; I also have a three-byte cusion in every sllocated string to insure that one-byte buffer overflows do not happen.

    Some other practices:

    • Only give static strings to anything which accepts format (%s, etc.) strings.
    • Do not use signal handlers; or use them with the utmost care.
    • Do not use the system() call.

    - Sam

    --

    The secret to enjoying Slashdot is to realize that it should not be taken too seriously.

    1. Re:Buffer overflows by TheSunborn · · Score: 1

      Why not just code in c++ and use the string class insted of making your own in C? It would not be any slower, and it would be just as safe.

      Martin

    2. Re:Buffer overflows by ethereal · · Score: 1

      Really, it's probably safer to use an existing string class that other people have used, tested, and verified in many different applications. Reinventing the wheel almost always involves non-trivial debugging and verification, no matter how smart you may be. I'm willing to except a couple people on this score (Daniel J Bernstein, for instance, and maybe Donald Knuth) but for the rest of us, reusing proven good code is a lot safer than recreating our own knock-off.

      --

      Your right to not believe: Americans United for Separation of Church and

  41. Who the f*ck is this guy, anyway? by talks_to_birds · · Score: 5, Insightful
    Surf to his web site, and it's just the same old self-absorbed bullshit that so many other people put up.

    Qualifications?

    Let's see...

    • I was born on August 28th 1980, 4PM in Long Island.
    • My life was pretty aimless until I broke my arm in the 8th grade, keeping me from most sports and physical activity. That's when I discovered the magic of computers. I haven't stopped poking them since.
    • My chief interest is in information science (ie, computers). This interest involves my day job, my business, and most of my recreational activity.

    Wow! Pretty exceptional, don't you think?

    'bout the only thing going for the guy is he *doesn't* have a blog...

    How the f*ck did this nonsense get put up on /. anyway?

    What changed hands to get this deal done?

    t_t_b

    --
    I'm on PJ's "enemies" list! Are you?
    1. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 0

      Sour grapes much? Sheesh. Like you're so much cooler. Cool enough to post at +2, anyway!

    2. Re:Who the f*ck is this guy, anyway? by NullProg · · Score: 2, Insightful

      I agree, what mindless drivel. All rant and no facts.

      Quote:
      It should be a crime to teach people C/C++.

      Then further into the article:
      Whenever possible, use industry standards. For example: POSIX, ANSI C, OpenGL, SQL, etc. Resist using non-standard extensions, if you must have them, keep them limited.

      I feel for his clients. Slashdot blew it on this story.

      Enjoy,

      --
      It's just the normal noises in here.
    3. Re:Who the f*ck is this guy, anyway? by evilviper · · Score: 2

      I think I've figured it out... Finally...

      The Slashdot crew MUST BE using a magic 8-ball to decide what stories go up, and which do not.

      That's the only explanation I've got.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    4. Re:Who the f*ck is this guy, anyway? by zaqattack911 · · Score: 1

      Agreed....
      Not only do I want to know who the fuck he is,
      but if he's ever worked a day in his life :)

      As he even worked on a major project before?

      Does he sleep next to a microwave oven? Was he born near high tension power lines?

      All these things play a factor in his ignorance :)

    5. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 1, Funny

      Surf to his web site [bacarella.com], and it's just the same old self-absorbed bullshit that so many other people put up.

      Perhaps you shouldn't be talking-- http://www.finchhaven.com/pages/computers/webmaste r.html!

    6. Re:Who the f*ck is this guy, anyway? by mcjulio · · Score: 1

      Unreal. I cannot believe I wasted 10 minutes of my life reading a completely thought-free "rant" from an arrogant, self-absorbed child. More relevantly, I cannot believe that anything this lame could ever find its way to the front page.

    7. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 1, Funny

      Quite a bit less insulting to the eyes than your fine site, sir. And I wouldn't be throwing stones about obsession with computers either.

      And when are you going to update your Datacenter blog?

    8. Re:Who the f*ck is this guy, anyway? by sien · · Score: 3, Insightful

      Looks like the editors just got trolled. 'Netgraft' indeed. Perhaps this guy is a mate of the Afghan with a C64 that so intrigued Katz, speaking of which, what happened to him ?

    9. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 0

      Ooooh, got him there. Mod parent up!

    10. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 0

      I'm guilty of having a self-absorbed website, but at least I try to post stuff that's somewhat useful. I really hate articles that rant unlessly about theory and what should be done regarding computer security, but don't show examples of how to actually secure a system. So I took the opposite approach, give people the details and let them decide what will help them. That so called Secure System Development guide looks more like a brain fart.

      http://dentonj.closeedge.net/system-hardening

    11. Re:Who the f*ck is this guy, anyway? by Anonymous Coward · · Score: 0

      Amen, brother...

    12. Re:Who the f*ck is this guy, anyway? by Dalcius · · Score: 2, Funny

      Jesus, dude. Ouch.

      Parent of the parent: read own advice column. k thx d00d

      =)

      --
      ~Dalcius
      Rome wasn't burnt in a day.
    13. Re:Who the f*ck is this guy, anyway? by HamNRye · · Score: 3

      A story by Michael Barcella posted by michael... One and the same??

      Seriously though, this is one of the worst rants I have read. First of all, his claims about closed - open source are nonsense. He says that noone at Oracle could possibly understand the 1.2 GB codebase, and then says we should all understand every process on our own Linux box. Ummm.... And if my Linux box runs Oracle??

      We trust our OS'es to be reasonably secure. Whether it is Windows or Linux or Plan9. Linux can be more secure due to it's open source nature. Conversely, one could state that Since Windows is the dominant OS, IE the one most attacked, it could evolve to be more secure than an OS that is rarely attacked.

      I recall that in the last PC Week "Hack our Honeypot" contest, the Linux system was hacked long before the WinNT box, because the software was open source and could be combed for vulnerabilities. Is open source still more secure??

      I am not trying to say that Windows is better, Linux is better, I'm just saying that when you make sweeping generalizations about design methodologies relating to product quality you deserve to be lambasted as an Idiot. Open source is not inherently more secure than closed source. Period. Yes you can review the source of open source, but who really does?? And for evey package, every revision?? Most OS'es are simply too complex for one person to get his/her brain around. Same for the Office suites and databases. I'm sure some Yakoff will shoot back that understands all X million lines of Open Office, but I doubt he will be telling the truth. Most folks can't be bothered to read the EULA, (this includes most engineers) but they can read the full source for sendmail??

      Also, are we talking about the OS or its applications?? Outlook Virii are the by product of Outlook, not Windows. IIS is responsable for its own security bugs. The only real Windows Components I can think of with security problems outstanding is Shatter attacks on the COM subsystem (Local) and the remote help exploit. (Easily fixed.) Most of the other attacks can be avoided by having the latest patches, turning off the time service and UPnP, and not using IIS. (In linux it's: sendmail, bind, etc...)

      OK, to qualify for the Linux Zealots out there: Linux has had more security advisories this year than Windows. (See earlier story) Many Windows "Security Vulnerabilities" require user interaction from outlook, etc.

      The author posits that we should only use code that we understand to the letter, but we only program in Perl, Ruby, etc... What a joke. I'm supposed to understand C well enough to understand the entirety of the perl interpreter, but I'm not supposed to program in it. Speaking of which, I should read the entirety of the EMACS source too because that'll be my text editor. So, I should be able to start Coding in 6-8 Months. OOPS! Sorry, Kernel update and I have to read the entire source and all of my device drivers, give me another month or two.

      Again, we trust our OS'es to be reasonably secure. Open Source, Closed Source, it's like Democrat or Republican. Some always choose one or the other, but the intelligent choose the best one (at the time) based on common sense and trust.

      One must also assume that at the ripe old age of 22 (haha) he has tons of real-world application experience. Perhaps he'll be sending letters to Apple about interface design next.... Actually, considering he has another 43 years of software drudgery ahead of him (If he manages to get a job in the industry) we should be seeing high quality software pouring off of Long Island for the rest of my forseeable life. Hooray!

      Perhaps his life was aimless until 22 when he broke his head and discovered the magic of stupidity.

      And all that nonsense about the end of civilization.... Takes our job too seriously don't he. Yes dear, poor software design will be the end of civilization. Lets just ignore the fact that civilization A: existed before software and computers, B: continues even in the midst of all of this bad software.

      I could just keep going on this. But I will finish by saying, "How the f*ck did this nonsense get put up on /. anyway? "

  42. But why does Windows feel the need to ... by burgburgburg · · Score: 2
    repeat every Unix security flaw 15 years after it first found, three times, before attempting to correct it?

    Not to mention Windows own unique security flaws.

  43. The Solution? by bacs · · Score: 1

    Education. The problem is employers will hire people based only on work experience. They think work experience can be substituted for a degree. I have recently graduated with a CS degree and cannot get employed because I don't have work experience with (insert popular language). I am seen as less desirable because my degree focused on theory and higher-level concepts of what makes a good program. Theses concepts would be harder to pick up in the workplace. I would place more of the blame for insecure systems on the requirements of employers. Besides, my degree has to be worth something... right?

    1. Re:The Solution? by Dionysus · · Score: 1

      There are no substitute for work experience. I thought I was pretty hot programmer coming out of college (with a CS degree), but it's nothing compared to what I've learned the last four years working.

      I'm not saying college isn't useful. You can see the difference between people who got an education and who didn't, but work experience should count for a lot.

      --
      Je ne parle pas francais.
    2. Re:The Solution? by paitre · · Score: 2

      Dude.
      I learned how to learn when I was in college. Circumstances forced me to drop out, and I applied that ability to learn, to move forward and upward.
      I don't know about anyone else, but I have had -no- problem finding new jobs in this crap economy. Why? Becuase I'm not keeping my skillset static, and I can prove I have the skills, and the experience, to get the job done.

      Franky, that's what employers are looking for, right now: the skills -and- the knowledge on how to most appropriately apply those skills.
      Just because you know a dozen programming languages doesn't mean that you know when to use one language over the other, or one design philosophy over another.

      experience? there is no substitute for experience.

    3. Re:The Solution? by bacs · · Score: 1

      I agree with one addition, work experience can be good. Just because someone has experience doesn't mean they are a good programmer. It all depends on the company and how much the individual is willing to learn on their own. I had an internship at a company where the coding practices were horrendous. Everything was counter to what I was learning in school. This was negative work experience. Don't assume all work experience is good work experience. You were able to succeed because you were motivated to learn on your own.

    4. Re:The Solution? by Anonymous Coward · · Score: 0

      I felt the way you fell when I first left college. Then I got a job working for a company that builds robots(tire stackers, packaging...). The majority of the programmers there came from a backgroud in electronics they weren't engineers just electricians that picked up programming. They all wrote every good code. These guys had to write code that was reliable, some of these machines could kill people. They did not need some academic abstractions, they needed to know how the robots worked, and the only way to
      know this was to have worked on them from the ground up.

    5. Re:The Solution? by bacs · · Score: 1

      I'm glad the electronics people were able to write good code, especially if it can be life threatening. If you are saying that they had some innate ability to program well, then I don't agree. They learned the techniques because of the seriousness of the project. It's possible that they didn't need abstraction for this project, but it is absurd to think "academic abstraction" (I like that alliteration) is irrelevant in the real world. Most EE students at my school couldn't code to save their lives.

  44. "Keep It Simple, Stupid " by Dukebytes · · Score: 1
    Gods - what a line. I liked the suckass developers bit too - but hey, I'm a hardware guy :)

    Programmers need to follow the KISS method of coding. I love this - RFC1925 - Fundamental Truth #12 - "In protocol design, perfection has been reached not when there is nothing left to add. but when there is nothing left to take away." You can not really say it any better. It is supposed to be funny - but it is really very true.

    Being the hardware/network guy - I deal with this everyday. My place is getting crazy - everytime you pick up a dirty rug around here to shake it out you find another programmer... And they are all killin me. I try to lock something down - they cry "But my code won't work if you do that!!". I try to clean something up and they cry. I SUGGEST that we do something a different way - and they CRY!!!!!

    OK - breathe.... It is really very hard to do my job. And it sucks. Mgmt doesn't understand why we need an IDS, or tighter VPN encryption, or NO access to the inside network from the DMZ and on and on and on...

    Keep it simple, stupid. Words I try to live by - but you should see the code these guys write. This guy had hit it right on the head. This article is nothing special - it isn't rocket science - its FACTS. But try and teach it to a bunch of crying coders and a room full of suits. You can't - period. So I keep coming in on Sundays (salaried employee, thank you very much) and patching systems and go thru my logs everyday and sneak stuff past them when I can and just do what I can to keep us secure. Some of the really really stupid stuff they try to do I just tell them no - no one really fights with me about it - but if I try and change ANYTHING to make it more secure that would involve writting ONE line of code to fix - I get beat down till I just quit fighting it.

    I love this stuff - but sometimes you can really hate doing it.

    But hes right - WE have to do it. WE have to make things more secure - WE have to keep it simple. For the love of all that is holy - if you are a coder - please keep it simple and do your fucking job. Don't add shit you don't need - stop when you can't take anything else out. And don't worry about the OS patches or the firewall or the router - My end is already being taken care. See ya Sunday morning....

    Duke

    --

    FreeBSD: Nothing runs like a daemon with a pitch fork.
    1. Re:"Keep It Simple, Stupid " by arkanes · · Score: 2

      Bah, it's only hard to do your job because you don't know what your job is. Your job is to make the environment the way the coders want it. If that means leaving everything open so the hackers can walk in, that's what you should do. Then you get all the shitty coders fired, you hire new, good coders, and you respect thier opinions and don't force them to come up with cheesy hacks like web services because you refuse to open up anything except port 80.

    2. Re:"Keep It Simple, Stupid " by Dukebytes · · Score: 1
      hehehe... Nice try.

      "If that means leaving everything open so the hackers can walk in, that's what you should do." Yea - nice try...

      But when we do get hacked. And you will if you do that - then I'm the poor bastard that has to come in for 20+ hours straight and reload all the boxes and restore everything from backup.

      And I will not force them to come up with cheesy hacks to do everything thru port 80 - thats not the way to do it. If they need something open - I'll open it in the firewall - but only for the box that they need it for and only for the customers address range that will use it. Keep it simple - remember.

      But stupid shit like having access open to the inside network from the DMZ is just that - stupid. And they cry becuase they cant surf to thier dev boxes and install stuff if I shut that down. You know what - burn a fucking CD and bring it to the DC and install it. Simple.

      Unfortunately, I do know what my job is - and it is very hard to do...

      Duke

      --

      FreeBSD: Nothing runs like a daemon with a pitch fork.
    3. Re:"Keep It Simple, Stupid " by arkanes · · Score: 2

      Shrug, you're running into the classic problem of security vrs convenience. And thats actually a policy decision, so either you have that power and it's not hard, you just tell em they can't do that, or someone else makes the decision that they can, and you better give them what they ask for. Sounds like your problem is a screwed up org chart more than the skills of your people.

    4. Re:"Keep It Simple, Stupid " by Dukebytes · · Score: 1
      amen...

      Couldn't have said it better myself. Actually we go thru a reorg here about every 6 months. And of course every six months I have new and different reports that need done - and all my projects change. And they just keep on "talking" about security and not really doing anything about it. As soon as I get to a level that something is about to be done - they switch bosses on me and change my job. I have worked here 2+ years and have been the data center manager 3 times :)

      Your right. It is policy. And that really is the problem.

      Still - it seems like my job is hard :)

      Duke

      --

      FreeBSD: Nothing runs like a daemon with a pitch fork.
  45. This article... by Dot.Com.CEO · · Score: 2
    Is written by someone without any relevant experience in the field. Someone who has not put down any specific examples / case studies to support his case. He makes a point that he has not prove and we are supposed to argue about his unfounded and unproven theorem?

    Yet, his article appears on the front page of /., the very "home" of the people he offends. To quote Michael:

    It is well worth the time to read it

    No it is definitely not.

    --
    Mother is the best bet and don't let Satan draw you too fast.
  46. Nothing will ever be secure by LostCluster · · Score: 1

    There will never be a perfectly secure operating system that a dummy can run. Dummy will fall for the old trojan program trick, and open his machine up to doing things he it didn't expect to.

    If Linux ever gets up to the ease-of-use level Windows has now, and therefore hits the popularity Windows has now, the virus writers will come too, and Linux will have just as many problems. Having the source is a double edged sword. If the bug is found first by a white hat, we'll find out in the form of a patch being released. If the bug is found first by a black hat, we will descover it in the form of an exploit in the wild.

  47. Re:Useless advice? I don't think so by zaqattack911 · · Score: 1

    Actually someone beat me up and stole my lunch money when I was playing in the schoolyard sandbox once....

  48. The other problem with programmers by co_fisha · · Score: 1

    Professionalism!
    This tone and language in this article is terrible! He sounds like a teenage mad at his parents. How is he supposed to be taken seriously? Most managers and businesses would walk him out the door after 5 minutes that article.

    Seeing yourself as a professional, not matter what you're working on or what you're getting paid goes along way to the quality of the project. But it seems a lot of people don't take this seriously.

    1. Re:The other problem with programmers by Anonymous Coward · · Score: 0

      He sounds like a teenage mad at his parents.

      At 22, he basically is.

  49. Solution by psychopenguin · · Score: 1

    This sounds like an elitist attitude towards development... not surprising in today's competitive job market. Everyone has to start somewhere, and no developer can claim that they've never made mistakes (read bugs, poor design, etc).

    The solution is not to be rid of "incompetent programmers". If you do that, then all the kids coming out of college, otherwise known as the ones who are in training today to become competent, will be shut out of the industry and become nice competent burger-flippers instead. When the so-called "competent" programmers reach retirement age, you'll be left with scrap.

    The solution is easy, and well-know: code-review, and mentoring. This can and does work in a closed source environment, but it happens naturally in an open-source world.

  50. Programmers are overpaid as it is! by SexyKellyOsbourne · · Score: 3, Insightful

    Most programmers graduate from state universities with no real-world experience in security, hacking, and so forth and no connections to anything that's going on -- it's simply a pass from the university of a student molded from the dirt-poor standards of a mainstream college system to a corporate programming world of laziness and no liabilities.

    However, these people who are no more qualified to write code than a third worlder with no previous formal schooling trained to be an H1B in a cert mill -- yet are paid much more, for no good reason.

    If anything, regular programmers who would ever, for example, use PHP's fopen() for a proxy like the article described should be paid like H1Bs and school teachers -- about $35,000 a year, at the most.

    However, the ones who really know their shit -- like Mr. Bacarella -- should be the ones making $100,000 a year or more.

    1. Re:Programmers are overpaid as it is! by Anonymous Coward · · Score: 0

      First of all, Everyone knows that PHP isn't real programming.

      Secondly, $100,000/yr is hardly a decent salary by today's standards. The complexity involved in writing software is well beyond anything a doctor or a lawyer would encounter, with the exception of highly specialized fields such as cardiology/radiology.

    2. Re:Programmers are overpaid as it is! by pongo000 · · Score: 2

      If anything, regular programmers who would ever, for example, use PHP's fopen() for a proxy like the article described should be paid like H1Bs and school teachers -- about $35,000 a year, at the most.

      Believe it or not, there are a few of us who have decided to take their $100,000 skills and work as teachers intent on bringing up a new generation of programmers for $35,000 a year. I'm one of them (yes, I've done some coding in my life, including much of the code that brings you color images from the IKONOS 1-meter satellites), and we are trying our damndest to prevent the likes of Mr. Bacarella from polluting the world of secure and robust programming with their silly views.

      Someone has to keep fighting in the trenches...

    3. Re:Programmers are overpaid as it is! by Anonymous Coward · · Score: 0

      Shut yer pie hole, you stupid tr0ll. Get back in yer smellyhoole.

    4. Re:Programmers are overpaid as it is! by Anonymous Coward · · Score: 0


      Perhaps you are outside the States so in that case I'll excuse the mentality, but this is a fact of free markets.

      ** YOU ARE NOT OVERPAID IF SOMEBODY WILLINGLY PAYS YOU THAT AMOUNT **

      Who are you to declare that programmers are overpaid? And who says teachers make $35K?, they certainly make more than that near where I live (NY). Try $70K. And yes some of the older ones with long tenure are over $100K (summers off) and the county police average $100K so give it a rest.

    5. Re:Programmers are overpaid as it is! by mindstrm · · Score: 1

      They are very qualified to write code, just as a junior mechanic is very qualified to start throwing nuts and bolts together.

      They are not qualified to engineer software, just as a junior mechanic does not design the latest automobile from Mercedes Benz.

      I can't imagine paying someone who says that programming for windows is out of the question and so is using C or C++ should be making six figures. The article is totally personal opinion, and some basic facts... not a great solution tos ecurity.

  51. So what about existing code? by Ars-Fartsica · · Score: 2
    First, Ocaml is one in a loooooong line of lanugage that claiming to be safer than C/C++ while simultaneously claiming to be faster. I have not seen one new language in the last five years NOT claim to (in "some cases") be faster than C/C++, yet they never can back this claim up in the average case.

    Now how many Ocaml coders are there out there? Five thousand? Actually that number is probably generous. Just fess up that no one cares about this language regardless of its benefits. Its added to the list of Lisp, Haskell, and all of the other languages that could save the world if we just adopted them.

    Even then, Ocaml does nothing to secure the monstrous existing C/C++ code base.

    When coders run out of answers, they often resort to blanket claims of utopia delivered by a mysterious and obscure language.

    1. Re:So what about existing code? by PylonHead · · Score: 1

      OCaml integrates with existing C code. There are many libraries released that are simply OCaml wrappers around existing C libraries.

      OCaml is *not* faster than C. It would be hard to be faster than C, since it's basically glorified assembly language.

      Depending on how well you code your C++, OCaml might or might not be faster than C++.

      My point is that Ocaml is *much* easier to write correct, safe code in, and you don't have to sacrifice much speed or memory. Even if you are man enough to handle your pointers, you will appreciate being able to focus on the problem you are solving rather than having to juggle a lot of overhead.

      Now how many Ocaml coders are there out there? Five thousand? Actually that number is probably generous.

      I don't know the number, but I would guess that you're in the right ball park. So your argument is: Not enough people are using a language so I shouldn't use it. Well, then we're stuck with the crap that we have then, because we'll never be able to change.

      The ocaml community is growing quickly. People that give it a try get addicted. I'm advocating the language because I really enjoy working with it, and I would like to see it have a chance out there in the real world.

      ocaml library growing every day

      When coders run out of answers, they often resort to blanket claims of utopia delivered by a mysterious and obscure language.

      It's just one direction that the original article was taking. One of his suggestions was "Ruby" which probably doesn't have a much larger programmer base in this country than ocaml does. High level languages don't have to be interpreted scripting languages.

      It may be that there are other research languages out there that will be an even better choice for the next evolution of a general purpose language. OCaml certainly isn't the only choice.

      The point is that programming languages are getting much cooler. With legacy code we're stuck with what we have, but when we're planning the future, let's keep an open mind.

      --
      # (/.);;
      - : float -> float -> float =
    2. Re:So what about existing code? by Daleks · · Score: 1

      First, Ocaml is one in a loooooong line of lanugage that claiming to be safer than C/C++ while simultaneously claiming to be faster. I have not seen one new language in the last five years NOT claim to (in "some cases") be faster than C/C++, yet they never can back this claim up in the average case.

      Can't measure up in the average case? Take a look at this.

    3. Re:So what about existing code? by Anonymous Coward · · Score: 0

      You seem to be up on this game - what about Lisp? Speed I suppose, but is there anything else which prevents it from becoming a major player?

  52. It should be a crime _not_ to teach C/C++. by Christopher+Thomas · · Score: 5, Insightful

    Why do you think Java and, to a lesser extent, C# are so popular right now? ESPECIALLY for teaching? Because with Java and C#, it's very, very hard to write code that can break the system it's running on.

    It's also very hard with C/C++. The most you break on any system without very broken protection-handling is the faulty program itself.

    The reason Java is taught as an introductory language is that it was stylish about 5 years ago. The reason C# is taught as an introductory language is that Microsoft threw a lot of money at universities to teach it, and at marketing to attempt to make it stylish.

    It boggles my mind that people in second-year programming courses at my university don't know what a pointer is, because it wasn't covered in their first-year programming course (which used Java).

    Languages with built-in safeguards are great, if that's your primary concern, but programming courses in university are supposed to teach you about all aspects of programming that you might reasonably encounter. If someone graduates without knowing how to debug memory errors and then has to maintain a C++ program, God help us all. This is also why we're forced to learn Lisp/Scheme and exposed to Fortran at some point - exposure to the concepts is what's important.

    As far as what's used in industry is concerned, first likelihood is whatever the shop has used for the past several years (anything from VC++/VB down to Cobol, depending on where you're working), and second likelihood is whatever the industry fad was when upper management was setting up specifications.

    1. Re:It should be a crime _not_ to teach C/C++. by Dalcius · · Score: 1

      I think everyone should learn Perl first. Stick with me, this is a humorously serious post...

      Semester 1:
      Learn Perl.

      Semester 2:
      Write tons and tons and tons of Perl. *Not* graded on correctness and good style.

      Semester 3:
      Debug said code written in semester 2.

      As a programmer who started with Perl using gotos, I can personally tell you that debuging your own horrible code is a good enough way to teach good coding, at least in style and design. And Perl is so easy to muck up, it's ridiculous.

      On a tangent, that's why I love Perl. It's like English: it's so flexible and can be so cryptic that a bad programmer can quickly create a mess. However, following the analogy with English, a good programmer can make a masterpiece in short time.

      I can't wait to see Perl 6 in action. Once they improve OOP style Perl, I'm set.

      --
      ~Dalcius
      Rome wasn't burnt in a day.
    2. Re:It should be a crime _not_ to teach C/C++. by Anonymous Coward · · Score: 0

      My school--Georgia Tech--does something similar to this.
      Because all students here are required to take the introduction to Computer Science course, it is taught in scheme which is pretty easy for people who have never programed before. The next semester, they take a step up and teach Object Oriented Programming methodology using Java. In the third class, they teach basic compiler design with programming in C under linux. (Interesting tidbit: all students in Georgia Tech's third computer science class are required to either install linux on their computer or do all their assignments on a lab computer with linux) After this, the computer science majors are free to explore the advanced areas of CS.
      This order works pretty well because it takes a few more seatbelts of at each level assuming the students come in with no prior programming experience. The third programming class here (CS2130) is notoriously hard, but it's not because students don't know what a pointer is when they enter the class. It's just because the professors teach it so damn hard for third semester CS majors.

    3. Re:It should be a crime _not_ to teach C/C++. by sholden · · Score: 1

      It boggles my mind that people in second-year programming courses at my university don't know what a pointer is, because it wasn't covered in their first-year programming course (which used Java).

      I'm not surprised, seeing that people passing third-year programming courses at my university (and hence graduating) don't know what a loop or a function is.

      Well at least they don't use loops or functions in their code, preferring to copy-n-paste. Maybe they think longer == better...

    4. Re:It should be a crime _not_ to teach C/C++. by Peaker · · Score: 2

      Universities are not about teaching you how to work. They are supposed to teach you how to learn for yourself. They should cover the basics of as many areas as possible - and this includes programming and algorithms. This is why some language must be learned, or those areas can't be covered.

      The purpose in teaching Java, or C, or Python in a university is not that you leave the university ready to code, but that you can learn what an O(2^n) algorithm is, or how important it is to write good code in general. With all respect to universities, people can and should learn to use pointers, debug, and other stuff on their own spare time.

      University time should be spent teaching important basics. No, not important for the industry, important for the understanding and grasping computer science - and for that, pointers are completely useless.

    5. Re:It should be a crime _not_ to teach C/C++. by Peaker · · Score: 2

      On a tangent, that's why I love Perl. It's like English: it's so flexible and can be so cryptic that a bad programmer can quickly create a mess. However, following the analogy with English, a good programmer can make a masterpiece in short time.

      Try Python, it avoids the first property (making it easy to write cryptic code), while still allowing the latter (letting good programmers make masterpieces in short times).

      I can't wait to see Perl 6 in action. Once they improve OOP style Perl, I'm set.

      AND it has very nice OOP :)

    6. Re:It should be a crime _not_ to teach C/C++. by drunken+monkey · · Score: 1

      Goto? Goto?! how?! why? I mean how did you end up using goto in perl?

      The only time I used goto was on a C64.

      narbey

      --
      -- "The evil stops here" -Petr
    7. Re:It should be a crime _not_ to teach C/C++. by Christopher+Thomas · · Score: 2

      With all respect to universities, people can and should learn to use pointers, debug, and other stuff on their own spare time.

      University time should be spent teaching important basics.


      Reading these two lines in succession is either ironic or saddening, and I haven't figured out which.

      Explain to me how the concept of pointers, or the modes of thought needed for debugging, are not both fundamental and extremely important?

    8. Re:It should be a crime _not_ to teach C/C++. by Dalcius · · Score: 1

      I was just learning to program. I was coming from programming on Ti calculators. =P

      Since then, I've taught myself the better programming techniques through working with my own bad code. =)

      --
      ~Dalcius
      Rome wasn't burnt in a day.
    9. Re:It should be a crime _not_ to teach C/C++. by Anonymous Coward · · Score: 0

      Pointers are fundamental. Want a linked list? You need to know pointers. Binary map? Pointers again.

      Computers store numbers and a program needs to reference those numbers and interpret those numbers. If someone does not *intimately* understand those concepts *inside and out* then they have no business calling themselves programmers.

    10. Re:It should be a crime _not_ to teach C/C++. by Peaker · · Score: 2

      They are extremely important for industry programming. Not for grasping the Computer Science behind it.

    11. Re:It should be a crime _not_ to teach C/C++. by Peaker · · Score: 2

      Have you heard of references?
      With references, you can more easily implement trees and linked lists than with pointers (See Scheme, Python, etc).

      Ofcourse, references are implemented via pointers, but that's uninteresting to the computer science student, albeit interesting to the industry.

    12. Re:It should be a crime _not_ to teach C/C++. by staplin · · Score: 2

      It's also very hard with C/C++. The most you break on any system without very broken protection-handling is the faulty program itself.

      Heh. Now, it's been a few years since I learned C, but I remember one of my first programs utilizing pointers managed to read and overwrite some of the memory resident OS code on a DOS box. (They were the only boxes available int he lab at that time.) It's a quick way to reduce the box to incoherant beeps and chirps while spewing bits of a memory resident executable to stdout until it grinds to an unresponsive halt.

      Moving my code to a unix box later introduced me to core debugging after a segfault. What a difference that makes, being able to examine why a program used bad pointers, rather than letting you know it did by crashing the machine...

  53. You can't obsolete C/C++ yet by Ars-Fartsica · · Score: 2
    Point at one competitive OS, RDBMS or graphics editing program written in Java or C#. This is why C/C++ still matters and will for many more years.

    High level languages are great for high level problems. Low level langauges are great for low level problems. Use the right tool.

  54. Gee, a great article by Un1v4c · · Score: 1

    Just skimming over and noticed this one line:

    "The Windows system is also far too massive, complex, and user unfriendly for human beings to have any hope in securing it."

    Apparently there are a number of increasingly incompetent people writing articles.
    Windows "user unfriendly?" WTF?
    I guess that's why it's the #1 OS in the world.

    --

    I gave myself to Jesus, but now he never calls
  55. "After the Gold Rush" by stephandahl · · Score: 1
    This is a great book by Steve McConnell (ironically, printed at Microsoft Press), subtitled Creating a True Profession of Software Engineering


    The author argues (entertainingly) for the creation of a Software Engineer Profession by analogy with the Civil Engineer Profession, with the Accreditation, Certification, Code of Ethics etc. that goes with it.


    Recommended!

    --
    What is the difference between a real song and a simulated song?
  56. That's great, but what about the real world? by VT_hawkeye · · Score: 2, Insightful

    When all these half-trained Java-based "CS major"s have to deal with real systems of all types, including those that require memory management by hand?

    This is precisely why Java and C# SHOULDN'T be the primary teaching language at any serious institution. It doesn't just encourage bad habits in memory management, it breeds ignorance of the CONCEPT of memory management. I'm extremely glad I had a good background in C/C++ (and even some Pascal before those) before I ever learned Java or Python, or I wouldn't have a clue about half the concepts that a good C background forces you to learn.

    1. Re:That's great, but what about the real world? by tshak · · Score: 2

      That's great, but what about the real world?

      The real world is using Java and C# over lower level languages. Assembly hacking is great, and so is C/C++/Objective C, but you can't expect a programmer to be a master of each layer of abstraction. The knowledge of points is useless for many programmers, and will be for the rest of their careers. A programmer!=Computer Scientist and visa versa. I know a CS guy who's quite brilliant (could probably contribute a lot to Google's search algorithms and distributed data indexing algorithms) but would do horribly developing the next J2EE app for our Fortune 100.

      I will agree that Java shouldn't be the _primary_ teaching language at a university, but many CS grad's go on to become professional programmers, and need to be taught how to think at the proper layer of abstraction.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    2. Re:That's great, but what about the real world? by Anonymous Coward · · Score: 0
      Or, as a friend once put it:

      You can't spell "CS" without "C"!
    3. Re:That's great, but what about the real world? by VT_hawkeye · · Score: 1

      *shrugs* I'm sitting in my cube writing J2EE web apps. In this same cube, I've done Python, C/C++, and God-knows-how-many shell scripts; we've got everything from Visual Basic to Pascal (no kidding... we keep trying to bury it, but it won't stay dead) and AS/400 within the enterprise.

      Limited-scope knowledge may be OK for limited-scope apps. But if my Java app returns a field so long that it causes a buffer overrun in C or (God forbid) confuses the AS/400, I'm in trouble. In real life, very few programmers will get to spend their entire careers on small, independent applications; at least a passing familiarity with the issues that face other systems with which they interact is absolutely necessary to properly (and securely) integrate with those systems.

      Tunnel vision may seem great, but it's only so until something outside the tunnel hammers you. You don't make that mistake twice, as long as you can figure out what screwed you up. But half-trained Java monkeys calling themselves professional programmers don't just suffer from tunnel vision, they're militantly unaware that there is a tunnel, or a dangerous world outside its view.

    4. Re:That's great, but what about the real world? by tshak · · Score: 1

      I'm not saying that a basic understanding of abstractions below you is not required, however, one does not need to be an expert... tunnel vision goes both ways you know. Not understanding how to build and design applications in an efficient manner is a common problem with younger CS grads. Some stay in that rut, the more creative ones break out of it and have the best of all worlds. Personally, I've done work for companies that are extremely small, and in the Fortune 100. I've never needed to worry about the hardware, memory management, or machine code (although as a geek I know of such things purely through my own efforts). It's not a tunnel, it's a broad, but different set of disciplines in which computer science is only a fraction. Really, in many worlds, C/C++ is dead, and I get bored when dealing with it's messy string classes. Quite frankly, I have a lot more fun hacking ASM.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    5. Re:That's great, but what about the real world? by kerasineAddict · · Score: 1

      Why should 'Computer Scientists' be taught languages? Shouldn't a "true CS major" be taught the principals and therefore be able to learn what they need to on their own?

      I mean, the courses offered at my current university don't center on teaching a language. What they try to do is teach you the concepts of what the course is about, and when you need to learn a language, they'll go over it in a tutorial for a few days to give you certain syntax issues and such.

      Saying this, the only course that teaches a language here is first year CS. They teach Java so that people can learn the concepts of object oriented programming. After that, it should be up to the individual to learn the language that he/she will need for the situation. They should have the ability to easily adapt because they know the principles.

  57. Not an option in industry by Ars-Fartsica · · Score: 2
    Using an obscure, outdated toolkit may get you a sense of security, but you often have a harder time hiring programmers at competitive salaries. People with obscure skills charge more. This is but one reason why many firms use the prevailing language (however it became prevailing is another issue) - because they need to aim at the widest possible hiring pool.

    Added to which, using outdated hardware is never an option in industry. You must write to you user's platform.

    1. Re:Not an option in industry by DoctorMabuse · · Score: 1

      Or reeducate the user. I buy the latest and greatest hardware to play my games on, but my business does fine with older hardware and more stable operating systems.

      I'm still trying to figure out if I really getting a thousand times more value from Excel than Visicalc (based on executable size). Somehow, I doubt it.

    2. Re:Not an option in industry by arkanes · · Score: 2

      SOMEONE has to use the new stuff, in order to get the bugs worked out. Hire skilled, intelligent people who stay on top of new technology and are able to intelligently evaluate it's strengths and weaknesses, as well as compensate and correct any new bugs in less-tested systems. That way you can get the benefits of new technology, and you don't need to get bitten by every bug that comes along.

    3. Re:Not an option in industry by Ars-Fartsica · · Score: 2
      Or reeducate the user.

      And say what??? "Don't buy new hardware" ??? Good luck outspending Intel's advertising dept....and Dell's...and IBMs.

  58. Who is this paranoid "idealist"? by swagr · · Score: 2

    Guess what, every choice every entity makes regarding anything is a compromise. Security is no exception and so long as it costs money and takes time, it will never be THE ONLY FACTOR as this guy thinks it should be.

    What does he expect? One security expert per I.T. staff to watch over their shoulder and make sure they never do anything insecure? Maybe we should train everyone on the planet as a security expert, and dedicate 100% of every available resource we have to securing software.

    I understand what he's saying, but give it a rest. We take chances all the time and adjust according to the outcome.

    --

    -... --- .-. . -.. ..--..
  59. What happened to the editors? by Anonymous Coward · · Score: 0

    High level languages are usually more secure than C/C++ and chances are you'll write less lines of utter dog shit that other people have to deal with.

    C/C++ are high-level languages. This is CS 101.

    I think the extensive use of profanity in this peice is indicative of the author's maladroitness with another "high-level" language, namely English.

    This isn't the worst thing I have seen posted on /., but it ranks up there, certainly.

  60. This comment... by Anonymous Coward · · Score: 0
    Is written by someone without any relevant experience as a "Dot-Com CEO." Someone who has not put down any specific examples / case studies to support his case. He makes a point that he has not proven and we are supposed to argue about his unfounded and unproven theorem?

    Yet, his comment appears in a /. article, the very "home" of the people he offends. To quote Michael:

    It is well worth the time to read it

    No it is definitely not.

  61. Security coding documents on java, perl, php, etc by Anonymous Coward · · Score: 0
  62. Your one of those Idiots that can't program with C by zymano · · Score: 0

    Take it easy junior. The guy is right.

  63. Crime to teach C/C++? by Pyromage · · Score: 4, Insightful

    Horsehockey.

    Bull fucking shit.

    It should be a crime to *start* students on a protected environment like Java. Programmers who start on Java begin with less understanding of what's going on, because it sweeps too much complexity under the carpet.

    I realize this argument was made for assembler when C was introduced. BUT! There was a massive shift between assembler and C, which is why that argument is not valid.

    C and Java both have pointers/references. They both have functions, etc. But Java's references are hidden from the user, and most students don't have a clue about a reference.

    Asm. vs. C was a big difference, but Java and C++ share so much, but Java sweeps all that complexity under the carpet. If a programmer who's only used Java gets into a C++ project, he'll fsck it up so fast it'll make your head spin.

    It should be a crime to teach Java as a beginners language. It's not a bad language, but under no circumstances could it conceivably be considered a beginner's tool.

    1. Re:Crime to teach C/C++? by bacs · · Score: 1

      Amen! Preach it brother! C is the way, is the light! Java = Lucifer.

    2. Re:Crime to teach C/C++? by kvhaz · · Score: 1

      Amen!

      I started off with Java and perl and had to go back and learn so many fundamental, lower-level aspects of programming and computers in general. I think it's tougher to do it this way rather than starting off with something like C or Assembly. Languages like Java hide too many of the underlying complexities of computing that a programmer should know from the get-go. I'm not saying that everyone needs to be an assembly guru but I think having some early exposure to things at this level on will make you a better programmer in the end.

    3. Re:Crime to teach C/C++? by dwalsh · · Score: 1

      "If a programmer who's only used Java gets into a C++ project, he'll fsck it up so fast it'll make your head spin."

      Exactly. They'll fuck it up. Like a C++ programmer would, only it will take them slightly longer to learn how to shoot themselves in the foot. So don't use C++. Ever. :-)

      --
      ${YEAR+1} is going to be the year of Linux on the desktop!
    4. Re:Crime to teach C/C++? by cheezehead · · Score: 1

      Java = Lucifer

      There we go already... You used '=' where you should have used '=='. One of the many problems of C...

      --

      MSN 8: Now Microsoft even has bugs in their ad campaigns.

    5. Re:Crime to teach C/C++? by bacs · · Score: 1

      :)

      I was setting Java to the value Lucifer.

    6. Re:Crime to teach C/C++? by J.+J.+Ramsey · · Score: 3, Interesting
      I started off with Java and perl and had to go back and learn so many fundamental, lower-level aspects of programming and computers in general. I think it's tougher to do it this way rather than starting off with something like C or Assembly.
      Actually, you probably did things in the right order. Learning is often iterative. Sometimes you have to first learn the rough general picture and then fill in the details and more advanced stuff later, which is more or less what you did.
  64. Who is the peon? by wantedman · · Score: 1

    The person who wrote this guide? or the person who follows it?

  65. Why? by mrcparker · · Score: 1

    Yet another article about how all software is crap and how most developers suck, written by kid in his early twenties who probably hasn't worked on a large project in his life. Woohoo.

    I have a feeling that there are a whole lot more articles on the internet written by more experienced developers who might offer more insight than this kid.

  66. Oracles Larry Ellison said his Database was not by zymano · · Score: 0

    hacked into. http://news.com.com/2100-1017-965921.html

  67. Most programmers have logic by no+soup+for+you · · Score: 2

    Many have already commented on the claim of supposed security of not using C/C++. So following his "logic" - you shouldn't increase the length the length of code by 4-8 times by using C++ (my paraphrase) -- but you should write all of your own code?

    avoid third party code whenever possible. Take the time and reinvent the damn wheel.

    Sorry, but if I agree that one person can not make Oracle (by this I assume he means the database) secure - then wouldn't multiple people on the project at least help? Maybe they can see the things that I cannot see? AFAIK, the more that can find flaws in software the quicker it gets more secure (as in nothing will sever be completely secure)

    --
    If you blog it...
    1. Re:Most programmers have logic by gray+peter · · Score: 1

      To take that a step further, it seems contradictory. Isn't Opensource code 3rd party? And since he's advocating opensource...

      --
      May no camel spit in your yogurt soup.
  68. Not only that by Sycraft-fu · · Score: 3, Insightful

    But you have to have a verified design. Actually MS does offer solutions like this, inderictly, with Windows Datacentre. With a Datacentre server you can get things like gaurenteed uptime and so on. What happens is you contact an SI that is authorised to sell it, and you work with them to design the hardware and software you are going to use. They build and test the whole thing, and then sell you a gaurentee with the system and service contract. You then can't mess with the system. You can't go and install whatever software you want, because the software might break the system.

    Real verified reliable design are, by necessity, very unflexable. You have to verify all the components and make sure they work together to insure that one won't cause problems. You then can't change the components, with out reverfing.

    This just doesn't work for a desktop, where the user expects to be able to operate the system as they desire. that means that peopel can, and will, find combinations of software adn hardware that will fail. Hence, a software company can't gaurentee reliability in that situation.

  69. er, client / server by DrSkwid · · Score: 3, Insightful

    You don't need secure clients, you only need secure servers.

    Tell me, what is the compelling business reason for using windows that prevents me from using anything else in a corporate environment?

    There is only one answer (or is it three?):
    "Fear, Uncertainty and Doubt"

    And that's one feature we can all do without!

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    1. Re:er, client / server by sqlrob · · Score: 1
      You don't need secure clients, you only need secure servers.

      If the client isn't secure, then things can be done with its credentials on the supposedly secure server.

    2. Re:er, client / server by bahwi · · Score: 2, Insightful

      An infiltrated client, considered trustworthy by the server, if a break-in of the server. Thus, to secure a server you must secure your clients. Whether it be an overflow in IE that installs a key recorder and gathers the passwords to the server of an encrypted e-mail system. Suddenly you have access to that users e-mail, and all outgoing e-mail can "come" from that user. Secure clients are as necessary as secure servers.

  70. Make up your mind? by kelcey · · Score: 2, Insightful

    Earlier in this article, we see the inflammatory statement: It should be a crime to teach people C/C++. But later in the very same article: Whenever possible, use industry standards. For example: POSIX, ANSI C, OpenGL, SQL, etc. Beg pardon? If we use C or C++ (industry standards, I believe), should we then be imprisoned or lauded? Or is it just possible that the author is getting a little carried away with himself? "Programming languages without mandated security don't break systems. Bad code written in programming languages without mandated security breaks systems." Kelcey

  71. Sick... by Anonymous Coward · · Score: 0

    Your only hope of salvation is an open source system.

    I get so sick of this drivel. Linus did not die on the cross for me.

  72. #include by b0bd0bbs · · Score: 1

    In an old /. comment, somebody made the suggestion that GNU standardize on safe libc functions. If you want to use the latest GNU libc, and want to use strcpy() instead of strncpy(), you have to include .

    At least it will be obvious which programs need updating. Granted problems like buffer overflows occur in more places than libc, but it's a start.

  73. I wonder if... by ZoneGray · · Score: 2

    I wonder if the image links on the page, eg:

    file:///usr/share/latex2html/icons/nx_grp_g.png

    are intentionally broken to show how easy it is to screw up.

    I dunno.

  74. IMHO by gray+peter · · Score: 1

    At first I said "this is a troll" his tone is completely condecending and it's pretty clear that his experience is limited to small to medium size projects. As often as programmers are hazed for being ignorant about OS issues and ignoring security, in my mind this guy is a sysadmin with a small amout of coding knowledge. If you've never written code that maxed out the CPU for hours, you've obviously never written any number crunching software (finance? data analysis?). If the OS sits around waiting all day for data to process why all the push for clustering and grid computing? Ok, fine, he has an opinion and wants to express it. Then again, the issue he raises is completely valid, and security is a real problem. The .com boom (and the rise in computing of all kinds) created a huge imbalance in the supply/demand of programmers which allowed a huge number of incompetent people into important positions. As a technology consultant I met an incredible number of "tech lead" "senior architects" who couldn't code their way out of a paper bag, yet they were responsible for designing multi-million $$$ systems. It is hugely important that the issues of security are impressed on these people. If this is what it takes to make a few people think the next time they release some new code without testing it for security holes, great. The world is a little bit better. Then again, he's certainly no expert and there is nothing revolutionary in his article.

    --
    May no camel spit in your yogurt soup.
  75. I am who you might consider e\33+ by Anonymous Coward · · Score: 0
    But I think C++ sucks. Seriously. It's a fucking bloated piece of elephant shit. The only OOP language worth spit is Inform.

    HTH. HAND.

  76. Yawn... C++ will be doom of humanity, news at 11 by Steveftoth · · Score: 1

    Please, the real doom of humanity is plaid.

    Computer scientists need to get their heads out of their asses before doom preaching so much. Believe it or not, if the system were to 'collapse' due to computer error, people would be smart enough to not kill each other in a violent bloodbath. People might not respect computer people anymore, but at least we wouldn't all kill each other and destroy society.

    Computers are important, but the rest of the world that doesn't work with then 24x7 like many of the people here on /. realise that they are just tools and could probably survive without them. Though the normal person might not be able to watch as much TV, but is that really so bad?

  77. Re:If something like Windows plays any part at all by Aeron56 · · Score: 1

    The cinicism of saying that windows guarantees security risk is hardly insightful. One can be hacked on any operating system by someone more clever than themselves.

    Can I get modded up higher for gratuitously bashing MS?

  78. Newsflash! by Anonymous Coward · · Score: 0

    Guess what system allows you to be more vigilant? You sure can't hack away at things in a close source environment.

    Gee.. could that mean that Open Source systems are better suited to immediate maintenance? *GASP*

  79. Question: by orangepeel · · Score: 1

    What options are there (if any) for building a GUI for an O'caml program?

    And while I'm here ... what the heck's the difference between O'caml and Caml?

    --
    Whoever designed level 61 in Frozen Bubble is a sadistic bastard.
    1. Re:Question: by lirkbald · · Score: 1

      There's a wrapper for GTK in OCaml. LablTK or something like that. There's also a very primitive set of graphics routine in the standard library, but if you try to write a GUI with that you're insane.

      OCaml is a member of the ML family of languages. Caml, I guess, probably refers to OCaml and its predecessor Caml Lite. 'OCaml' is to 'ML' in approximately the same way 'Common Lisp' or 'Scheme' is to 'Lisp'.

    2. Re:Question: by orangepeel · · Score: 1

      Thanks!

      That sucks about the GUI options ... I hate to turn this into a mini-AskSlashdot, but I need to find a language safer than C++ that can provide the basics Visual Basic used to under Windows. Any suggestions?

      I need something that can be compiled, can offer some type of event-driven operation, will work with a GUI toolkit of some sort, and is "safer" than C++ (because, coming from a mostly VB background, I'd be even more concerned about my ability to produce solid software with something like C++). I don't need the candy-coated interface, but I do need a language that will provide those things in a reliable fashion.

      Ruby looked really, really great with its option to link in with the FOX toolkit (and the fact that it works seamlessly on both Linux and *BSD)... but it's an interpreted language.

      --
      Whoever designed level 61 in Frozen Bubble is a sadistic bastard.
    3. Re:Question: by Anonymous Coward · · Score: 0

      Java. Don't look at me like that, it's semi-compiled now, has been since JRE 1.1.x

    4. Re:Question: by greenrd · · Score: 2
      Java is the obvious answer.

      I need something that can be compiled

      The vast majority of Java VMs compile the performance-critical stuff at least down to native machine code. For faster startup time (and sometimes faster running time) you can use gcj, but only for non-GUI stuff.

      Swing GUI performance was just about acceptable when I started using it five years ago - and since then it's got faster and is running on much faster CPUs. However, bad coding processes, like running long non-GUI computations in the GUI thread, can make Swing seem much slower than it "really is".

      can offer some type of event-driven operation,

      Yep. addActionListener etc.

      will work with a GUI toolkit of some sort

      You have a big choice! AWT, Swing, SWT, OpenGL and more... Qt/KDE bindings are currently out of date and therefore broken but I'm hoping they will be updated soon. Anyway, I would recommend Swing - it seems to be the most flexible.

      and is "safer" than C++

      Yep. No pointers, no segmentation faults (in theory), no array overflows (unless you turn off checking in gcj for performance), etc.

      I don't need the candy-coated interface, but I do need a language that will provide those things in a reliable fashion.

      JDK 1.4 has a really appalling bug that makes it crash on 24-bit mode on some Linux distros (the workaround is to use JDK1.3 or lower IIRC), but apart from that I've found it to be pretty reliable.

      There is a big choice of IDEs, including some free ones like NetBeans (but that's quite bloated and slow).

  80. C vs C++ by magi · · Score: 3, Informative
    Article says: "It should be a crime to teach people C/C++."

    I've been wondering if there's much difference between C and C++ in security. C seems to be most used language for system and server programming nowadays, especially in Open Source projects.

    C++ has many features that forgive your mistakes. With proper string, buffer, and other basic data type classes your bounds are always checked so there can't be buffer overflows which seem to be most common source of problems. In addition, automatic destruction of objects eases memory leaks.

    You can, of course, do all the same things in C, but it's always syntactically more complex than in C++. You need to learn dozens of different coding rules just to avoid trivial problems. Often you forget to apply them; each time you create a risk.

    For example, just today I noticed a dangerous situation when I initialized a callback function table with:
    somestructtype myfuncs = {myFuncA, myFuncB};
    While this works quite nicely, it's secure only if the struct always contains the two items. If a new item is added to the struct, all uses of the structure would have to be updated, but the compiler might not warn about this situation. In this case, the result would probably be a program crash. A more secure way would be:
    somestructtype myfuncs;
    memset (&myfuncs, 0, sizeof (myfuncs));
    myfuncs->func1 = myFuncA;
    myfuncs->func2 = myFuncB;
    This is much safer. However, in C++, this problem simply wouldn't exist because structs are typically never used and classes have constructors that always initialize them properly and user doesn't have to care so much about possible changes in the classes.

    This is just one example. There are plenty more.

    On the other hand, stuff is more often allocated from heap in C++ rather than stack. Memory might therefore fragment more easily in C++ than in C.
    1. Re:C vs C++ by e-Motion · · Score: 1

      For example, just today I noticed a dangerous situation when I initialized a callback function table with:

      somestructtype myfuncs = {myFuncA, myFuncB};

      While this works quite nicely, it's secure only if the struct always contains the two items. If a new item is added to the struct, all uses of the structure would have to be updated, but the compiler might not warn about this situation. In this case, the result would probably be a program crash. A more secure way would be:

      somestructtype myfuncs;
      memset (&myfuncs, 0, sizeof (myfuncs));
      myfuncs->func1 = myFuncA;
      myfuncs->func2 = myFuncB;

      This is much safer.


      I don't see how that approach is any better. If you write a pseudo-constructor, then you can avoid the error you mentioned.

      somestructtype CreateStruct
      (
      FuncType a,
      FuncType2 b
      )
      {
      somestructtype ret = {a,b};
      return ret;
      }

      Then, adding or removing a parameter from the function will cause compilation errors, assuming that you always use the function to create the struct.

      It is rarely appropriate to use memset(). In fact, pointers are not necessarily set to NULL if you memset() them to zero (at least, you cannot assume that it will do so on all platforms).

    2. Re:C vs C++ by lkeagle · · Score: 1

      >This is much safer. However, in C++, this
      >problem simply wouldn't exist because structs
      >are typically never used and classes have
      >constructors that always initialize them
      >properly and user doesn't have to care so much
      >about possible changes in the classes.

      Sure, always, if you've bothered to take the time to write your constructor, copy constructor, and destructor to properly initialize, manage, and delete your data structures.

      There's nothing inherently secure about default constructors, and it's just as easy to create a bug in your own constructors than it is in the rest of your code.

      ~Loren

  81. Re:salt on your ass.... Big grains of salt! by nicodaemos · · Score: 1, Flamebait
    Hamstaus blabbed ... when I first got into Linux, I took a default install of Red Hat and threw it on there. I had read all sorts of advice that if I wanted a secure server, I should use *nix, so I did. Yeah... rooted. Rebuilt the box, using a way newer distro... rooted.

    Simply because you are unable to secure a box does not mean the underlying operating system you are using is any more/less insecure than any other OS. First get your head out of your ass. The default install on most operating systems is not the highly secure one - it is the one that balances security with features. Some OS's tend more toward security, others more towards features.

    Secondly, the open source operating systems give you far more flexibility in securing the OS because 1) they actually document what the various services do and 2) they provide clear mechanisms for disabling daemons and services.

    Microsoft does an incredibly poor job with the first one. I can't tell you how many friggin services are running on my win2k work computer that I cannot find any information about. What the hell do they do and can I kill them without destablizing my system? Microsoft's method of security through obscurity simply means that I have to leave all of these back orifices open for hackers to probe until they stumble upon a good hack and them I'm owned.

    I don't consider myself all that knowledgeable about security, but I've never had any of my Linux boxes owned. These are ones that have run my websites 24/7. Gosh, you must just suck at security.

    I ignored the rest of your poor comparison of open source versus proprietary systems. Good day.

  82. I bailed by Anonymous Coward · · Score: 0

    When I got to the part where he speaks highly of the Gnu/HURD source code. Heh... While it might be true that it's some fine code written in a very legible manner, anyone who compares that code with a code from functional production OS's is a nut.

    Of course you get the idea that he's a zealot nutjob right out of the gate but the Gnu part just seals the deal, so to speak.

    I'll bet he's a gun freak too...

    Your's.

  83. Very short on answers. by Anonymous Coward · · Score: 1, Insightful

    There is no system that is invincible, but with some simple adjustments you can come very far in achieving a high degree of security, which has other positive side effects to boot!

    If the "adjustments" are so "simple," why didn't the author bother to explain a few of them? Porting a large project from C++ to Java is usually not an option. Replacing Windows with some other platform is usually not an option. And using a lot of foul language doesn't do a thing to explain the matter or increase the security of anything.

    My guess is that this guy is working on a project or projects with lots of security holes, and he has written this "article" so that he can point to it later and say "See! I told you so!"

  84. things can be done with its credentials - nop by DrSkwid · · Score: 3, Interesting

    that's the thing you see, trusting the client is plain wrong and assumptions made with that model will get you in trouble.

    plan9 offers a model that doesn't require trusting the client. It runs a dedicated authentication server and a dedicated CPU server and a dedicated file server. The three talk to each other behind the client's back.

    http://plan9.bell-labs.com/sys/doc/auth.html

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    1. Re:things can be done with its credentials - nop by fferreres · · Score: 2

      If your client uses windows you need to provide a windows interface (sometimes you can get away with a web interface, sometimes you cannot. Even if you get away with it, any flaw can hamper your bussines as you have to trust that your customer is really asking you to do what he appears to me trying to do - say transfering some money).

      So nope, if you need to interface with Windows you have to understand windows and try to fight back any vulnerabilities. Of course, under windows you will be using a lot of the window API so you are always at risk that YOUR application will be a problem for you.

      In a client server enviroment you can't trust your client, but you MUST trust what they are trying to acomplish and who they are.

      On your server it's up to you (as long as Windows can interface with it, today that is simple but don't take that for granted. Passport and other things can make it difficult for you in the future to do your own thing, not because it will be imposible, but because the USER will ask you to - the lazy user).

      --
      unfinished: (adj.)
    2. Re:things can be done with its credentials - nop by fferreres · · Score: 3, Insightful

      In fact, you are trusting the client. Not blindly trusting it, but if you provided this client then they will blame you. And if you didn't provide the client (say IE) then you allowed them to access your services through an unsecure client.

      --
      unfinished: (adj.)
    3. Re:things can be done with its credentials - nop by WNight · · Score: 2

      There's a difference between trusting a client, and trusting a password supposedly typed on the client.

      If you ask me for a secure unix server, it's not my business if you'll be SSHing in, or telnetting to the SSH port and working out the encryption with your pocket calculator.

      Trusting the client would be if the client said "the user wants document X, I checked his password and he's okay", and you blindly trust it because you don't think it could be hacked.

    4. Re:things can be done with its credentials - nop by fferreres · · Score: 2

      Agreed, but you can't walk away with "Oh I trusted the password. Our server is secure, only your info is insecure". You need to provide a secure way (client/server application) to your clients, and that includes the client of course. That's why they ask Microsoft to offer some security, because they are using Windows clients, and companies need them to be secure gateways to their server. That is, they need to be able to trust windows to offer key services like banking services, etc.

      I don't know if it makes sense to you. It's my opinion.

      --
      unfinished: (adj.)
  85. You forgot the obvious by Anonymous Coward · · Score: 0
    5) ...

    6) Profit!

  86. The Humans by 3fthiandrising · · Score: 2, Insightful

    This is missing the point. Security is not a destination to be reached, but a room tempature set to the preferences of the occupants. Do you ever lock your car doors when driving through the bad part of town? Do you think that we secure our homes the way we want our airports secured? Can you not acknowledge that we all tolerate specific levels of risk in many areas of our lives? Some one had a great point when they pointed out that Nuclear power plants, the space shuttle, ICBM warz are all very secure and mature systems. Do you really think that when Joe Bloggs starts designing an autopart inventory control system, that he is thinking about preventing unauthorized access to the extent of a powerplant? Or that the building engineer for a 12x12 parking lot PhotoMart cares about making his hut as difficult to enter as a bank?

  87. The world would be a better place without pointers by Anonymous Coward · · Score: 0

    If you dont need the speed, and/or value security more, any language which relies as heavily on pointer arithmetic as C/C++ should be out of the question. If you must use a C type dialect you could consider something like Cyclone C

    . The crux of his arguement depends on the absence of pointers, if you cannot see why that is good for security then you are naive.

    If you program in C or assembly you might know what the hardware is doing, but as soon as you leave pointers and the low level attacks they make possible behind that stops being an issue anyway ... the exploits depend on simple bugs and on your algorithms, with C/assembly you will simply have more code so more bugs and you will be farther removed from the high level workings of the program. A loose loose situation.

  88. Windows by CaptainSuperBoy · · Score: 2

    He lost me right here,

    "If something like Windows plays any part at all in your system design, you should probably give up now."

    Just another piece of FUD from an OS elitist, who apparently has amnesia about the numerous past exploits in Apache, BIND, Sendmail, OpenSSH, etc. Nevermind the fact that every single Fortune 500 company uses Windows in some form. I guess they all need to give up now, their systems will never be fully secure.

    Furthermore, the article says it's for developers but it seems to be filled with information for IT people - don't trust your firewall, watch out for Oracle, watch out for Apache, don't use Windows. I thought I was going to be reading an article on software best practices, instead I'm just reading a guy ranting about why IT pros should use open source. Bleh.

  89. High Level Language == Middle Ware by Symb · · Score: 1

    Right?

  90. Worthless article by njdj · · Score: 2

    He thinks it's a crime to teach C++. He says Ruby is much better. His arrogance is equaled only by his ignorance.

    C++ has its faults. But at least it means something to say that a program is written in C++. The language and its library are reasonably well-defined. Not perfectly, but well enough that in almost all practical situations, it's possible to say with certainty what a well-written piece of C++ code should do, by reading the said piece of code and the specification of the C++ language and its library.

    This is certainly not the case for Ruby. The only way to find out what many Ruby programs are supposed to do is to run them. You then know what they do under one specific release of the interpreter, on your particular machine. Ruby isn't a programming language, it's a learning experience for its author and a toy for its users.
    Any "programmer" who used it for anything that mattered deserves to be fired on the spot.

  91. Re:If something like Windows plays any part at all by shadow303 · · Score: 2

    > One can be hacked on any operating system by someone more clever than themselves.

    Well, like the parent post said, a non-windows system is not a guarantee of invulnerability. Granted, I wouldn't call MS=security risk insightful either- it's just common knowledge.

    --
    I've got a mind like a steel trap - it's got an animal's foot stuck in it.
  92. Just Adding Another $0.02... by Shackleford · · Score: 1
    Well, I must admit that I'm not an expert on comupter security issues. I'd have to say that I don't know enough about these issues to write an article on them, but it seems that at least a few of us would say that neither does the author of the article. But there are a few things that need to be pointed out.

    My understanding is that the article put equal emphasis on education and entertainment. He makes such amusing remarks as "call yourself a computer professional? Congratulations. You are responsible for the imminent collapse of civilization." However, he also gives some information that was certainly not to be taken lightly. Therefore, it should be taken somewhat seriously, and quite a few people who read the article just might do that. And this could be a problem. Why? Because at the end of the article he says "Now that you know better, there is no excuse whatsoever. You cannot claim ignorance. Don't destroy humanity." And the article's title is "The Peon's Guide To Secure System Development." And that article could not have covered every ascpect of developing secure systems.

    As I previously mentioned, I don't consider myself an expert in this area, but there are some things that I know that were not mentioned in the article. For example, when building secure systems, security must be kept in mind throughout the entire life cycle of the system. Perhaps his intent was to focus solely on programmers, but if he truly wants to see secure systems, he would focus all all aspects of system development. Those involved in software testing should be able to find pointer-related bugs, and many other memory-related problems that break software. In fact, in a recent issue of 2600, an program with less than 10 lines of code is given that crashes Windows. I'm not saying testers should find all bugs, I'm saying both they and developers have responsibility to be aware of potential security problems.

    I also didn't like the remark about C++ being inherently insecure, and the statement supporting use of languages that don't use pointers, such as Java, C#, and Python. I would just like to say that programming languages don't break systems. People break them. Therefore, I would say that people should be made more aware of what security problems they can cause. Also, C/C++ won't go away anytime soon. So much software uses it, so it stands to reason that there will be legacy C/C++ applications for years to come. Therefore, teaching C/C++ shouldn't be a crime. Teaching C/C++ poorly should be a crime.

    Well, I must say that I was somewhat disappointed in the way in which the article did not seem to go very far beyond the basics. I'll continue to recieve security information from other sources, namely Counterpane CERT and other websites like those ones.

  93. Take the time and reinvent the damn wheel. by gh · · Score: 1

    Oh, right... Because all the crap programmers would be able to write better, more secure, and simpler systems than what already exist.

    In some cases, I would agree with this quote, but its also the reason why there's millions of different versions of collections, print methods, string manipulation routines, parsers, etc -- all with their own quirks, holes, and other issues.

  94. My data point vis-a-vie C++ by rufusdufus · · Score: 2

    I am personally aware that one of the largest internet traffic servers there is (top 10 or so) was written in C++ by a programmer with no training who might rate as an intermediate coder.

    That system, despite being a big name, has never been compromised. Ever. [I wont name them so as to not encourage hackers to prove me wrong]

    The reason for this is security through obscurity. The code is proprietary, and the code is completely custom. Hackers totally fail because they have no information about how the system works.

    The system is immune to worms too, again because it is totally non-standard. Any system built with any turnkey system is going to be vulnerable.

    Thus I know of a case that roundly contradicts the author's idea that C++ in the hands of beginners is dangerous.

    1. Re:My data point vis-a-vie C++ by ethereal · · Score: 1

      It may not be hackable, but it is probably crashable with some bad input data. Especially since customization likely implies specific exception handling, etc. More chances for something to go wrong or for some design element to have been missed.

      Of course, an intermediate coder with a very good test team behind him or her might still result in a very solid product once (if?) it finally ships. You can test in the quality if you're willing to wait :)

      --

      Your right to not believe: Americans United for Separation of Church and

  95. Every little bit helps by Anonymous Coward · · Score: 0

    There has been research for translating ocaml type languages into malloc free C code, so it could be used for embedded systems in that respect ... and as you indicate, you can alway seperate things into a kernel/user-land system. Every little bit of code written in a safer language helps, the remote administration software in routers also tends to be a source of exploits and most of the code for such systems is well above the basic I/O routines.

  96. Security: Misunderstood responsibility? by dstone · · Score: 5, Insightful

    From the article: "Considering that most good programmers are pretty bad at security,"

    I don't necessarily accept this assumption. Most good programmers are good at coding up the design and requirements they've been given. The customer/architect/business analyst/technical lead needs to identify security requirements before they can be coded. It's very expensive to leave identifying security requirements to programmers. Not every project has the same needs. Sure, the programmer could guess. But each programmer on the project would end up spending a different amount of time and money on the security aspect if it's not clearly prioritized.

    Likewise, if security requirements are not specified well enough, a security test-plan cannot be written or executed. If you need security, ensure it's somebody's explicit JOB on the project to ensure security gets into the design & QA.

    Security costs money before a single line of code is written. Decide how much you need, where it's to be applied, and ensure it becomes a critical requirement through coding and testing. You can't expect security to just "happen" simply by hiring some "good programmers" as the author says.

  97. Slow can be good ... by Anonymous Coward · · Score: 0

    Run time bounds checking is unarguably a Good Thing (TM) as far as safe code is concerned.

  98. To Michael: by miltimj · · Score: 1

    You are so full of yourself, I don't know where to start.

    Try this: leave your firewall disabled for the weekend. Can you sleep easily at night? If not, then you have problems.

    So if I leave my doors unlocked in a mall parking lot at night, I should be able to sleep at night?

    Identify a given component that's currently running. Any process at all. Do you understand exactly what it does? All of its inputs and outputs? How does it react to unexpected inputs or other circumstances?

    This explains it.. you have so little of a life, that you perform QA for every program on your system. How ludicrous.

    If something like Windows plays any part at all in your system design, you should probably give up now...holes are discovered constantly.

    Why not take your own advice and subscribe to Bugtraq? Maybe you'll learn that other OSes are have "holes that are discovered constantly".

    It should be a crime to teach people C/C++.

    Is this why all but one of your projects are written in C?

    High level languages are usually more secure than C/C++

    WTF? C/C++ is a high-level language. Have you never programmed Assembly? Java is not that much higher on the evolutionary chain than C++.

    [The speed of C/C++] isn't even worth arguing and the fact that you said something like that calls your skills into question.

    Really? So whenever a good point is brought up, you just use ad ignorum? Just reading your entire paper brings your skills into question.

    Okay, okay.. I'll give you one thing..

    The only logical conclusion here is that I'm a perfectionist crackpot doom-sayer idiot

    I completely agree.

    --
    "Truth is not decided by majority vote" consensus gentium -- Norman Geisler
  99. Its all about the benjamins (now at least...) by ydrol · · Score: 3, Insightful

    It seems that Security aware coding is moving towards a situation akin to the bean counters that decide whether to recall a certain model of a car ... People didnt set out to write insecure code. But usually thay have a set of requirements to meet in order to get paid. Apart from a few industries where large sums of money or human life were directly involved , meet the requirements ASAP and get paid... Even "closed source" development projects have Quality Assurace processes where some dude checks your code (whether they know what they are looking for is another issue)... But particularly with bespoke code, people write according to a set of requirements. "I want it to do this, I want it to do that..". If it doesnt I can sue/refund/get free upgrades, if it gets hacked by some snotty nosed kid , tough, that kid wasn't in your requiremnets. Security is not easily specified as a requirement and is hard to insure against (financially) .. so pretty soon you will see the emergence of "security support contracts". This is the direction Micro$oft are going in .. (sustainable revenue is good for any business) Yes, there is a wide range of programmers with varying abilities. but (apart from open source products), certain companies have realiazed they can/will charge big bucks for more security oriented support contracts, so what do they care. For non-opensource companies lack of security/defensive programming has changed from being a liability to a profit generator. Either they'll make a lot of money or open source will prevail. Also expect a lot of specialist code review/certification/QA companies to pop up "This product is independantly DeadBolt certified" and hence costs $30 more + $30 a year for the latest security upgrades...." (multiply those figures as appropiate!)

  100. The ACM's opinion on software engineering by Adrian+Lopez · · Score: 2

    ACM's position on software engineering is that software engineers should not be licensed as professional engineers. Follow the link for lots of reasons.

    My own opinion is that liability can exist without licensing. Companies working on safety-critical projects should be careful about people they pick to work for them. They should have adequate quality control procedures in place and should be held liable for negligent behavior. On top of that you could have regulation addressing specific safety concerns as you do for car and medical equipment manufacturers.

    --
    "In prison you just have to shut your eyes and take it. Here you have to shut your eyes and give it."
  101. http://m.bacarella.com/papers/ by Anonymous Coward · · Score: 0

    Yet you chop of the url and there is no index.html so you can see all the files in the directory.
    Way to preach what you teach.

  102. Secure Programming for Linux and Unix HOWTO by dwheeler · · Score: 2

    If you want to learn how to write secure programs for Linux or Unix systems, read my freely-available book, Secure Programming for Linux and Unix HOWTO. You can get it from http://www.dwheeler.com/secure-programs.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  103. Eh... by Carlos+Laviola · · Score: 1

    The only logical conclusion here is that I'm a perfectionist crackpot doom-sayer idiot and that you should stop reading this and catch up on some minesweeper.

    So here are the minesweeper clones: xbomb,
    KMines, and more (all on Freshmeat.net).

    I guess I'm not the only one who will be following his suggestion.

  104. You're quite a comic. On a scale from 1 to 10, by Anonymous Coward · · Score: 0

    urinate.

  105. Re:salt on your ass.... Big grains of salt! by Hamstaus · · Score: 1

    Wow, you come across as someone whose opinion I should value.

    You'll note that I said "When I first go into Linux". If that wasn't synonomous (sorry to use big words, I hope I don't confuse you) with "didn't know everything", I'm not sure how you're going to ever understand my argument.

    You actually make my point for me when you say " Simply because you are unable to secure a box does not mean the underlying operating system you are using is any more/less insecure than any other OS". That was exactly my point! I even conceded that open source was easier to maintain, but that was not the point. Also, that seemed to fly over your the head of your zealoted biases.

    Securing a windows box is just as simple as securing a linux box. You don't know what those services are on your win2k box? Firewall them. Don't complain to me, I've already been there done that. I'll tell you what, I'll give you a technology you don't know and see if you get it right on the first try. When you don't, I'll tell you that you suck. Look at me, I'm a productive member of Slashdot.

    --
    I moderate "-1, Fool"
  106. Thanks for all the sexxxy pictures by Anonymous Coward · · Score: 0


    Thanks for all the sexxxy pictures of your daughter Rosalie: http://www.finchhaven.com/pages/bee/mykid.html. You know you shouldn't put this stuff on the internet unless you enjoy strangers masturbating to her photos..

  107. hehe clueless by DrSkwid · · Score: 1

    cba to even refute it

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  108. Those were quotes from the article by burgburgburg · · Score: 2
    Quotes I felt best encapsulated the opinion of the author.

    Also, it isn't cynicism, it's experience that says that Windows guarantees a security risk. It's an intrinsically unstable, risky platform.

    So the bashing was hardly gratuitous.

  109. Mono (someday) by Anonymous Coward · · Score: 0

    Since someone already mentioned the blatantly obvious Java.

  110. maybe this IS professionalism by Anonymous Coward · · Score: 0

    A true professional will tell the truth, no matter how much it hurts the suits to hear it. Read your Software Engineering Code of Ethics sec. 5 to see what I mean.

  111. This guys famous... by 955301 · · Score: 1

    If all of you are so interested in finding out who this guy is, read here. There was an article written about him.

    heh

    --
    You are checking your backups, aren't you?
  112. ever wish you could un-post by DrSkwid · · Score: 2

    sorry about the clueless

    On reflection I'll retract that

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    1. Re:ever wish you could un-post by Anonymous Coward · · Score: 0

      Bah, no problem. We all do stupid posts.

      Posting anonymously to save karma. =P I've made 16 posts in about 5 or 6 years. Better save all I can. =)

      --Joseph

  113. Found an off-by-one error. by ProtonMotiveForce · · Score: 1

    Okay, rocket surgeon. Let's see.

    He's lucky the assembly code isn't coducive to a hack, and this is the same mistake that usually does lead to security holes. It took me 10 minutes to find it.

    Start the ident2 daemon, send it exactly (no more, no less) 128 characters. It will overflow the buffer and set the character after the 'buf' buffer to '\0'. Function is _getl. Send it 127 - daemon keeps client connection open. Send it 129, daemon keeps client connection open. 128 and it closes the client connection.

    Just dumb luck that it isn't (to my knowledge) exploitable.

  114. Program proof by Anonymous Coward · · Score: 0

    Some say giving a mathematical correctness proof is the right way to build secure and working software. This is a yet missing point in the discussion... Our CS teacher tried to proof insertion sort - insertion sort, really. And he stated multiple times: Proofing your program's correctness is the most important thing to do. But... the proof for INSERTION SORT had two bugs in it. And not the professor discovered them, no, a student from the rather big (>150 ppl) audience... PS. There is one thing which is good in proofing programs - you take a much closer look at them :)

  115. Logic that makes my eyeballs twitch by Darth_Burrito · · Score: 2

    1) 1) Users are pure evil.
    We don't know if there could be sources of evil outside of Users.

    2) Civilization is made up of users.
    We don't know that Civilization is made up solely of users.

    3) Computer professionals are responsible for the collapse of civilization.
    That we are responsible for the collapse of civilization does not mean that we destroyed all users.

    4) Computer professionals will therefore destroy all evil
    The assumption is made that Evil is a non transferable entity. For example, a user could corrupt a system administrator via constant abuse. The sa then gets the evil idea of deleting all home directories. Even if Users contained all Evil in #1, the switch to future tense in #4 invalidates #1 as a given. Users are pure evil means that NOW users are evil. It doesn't say anything about whether or not they will be pure evil in the future.

  116. Hm. by Shoten · · Score: 2

    He kind of sounds like a bit of an a$$hole, to be utterly honest. He repeatedly slams just about every computer professional on the planet (except himself, of course) for everything from writing bad code to not knowing ALL the details of EVERY service running on EVERY machine they have responsibility for. I can, off the top of my head, mention a hundred organizations who are so small they cannot possibly afford a person of this depth of knowledge.

    He also ignores the facts of the world, choosing instead to think that everyone else needs to bend. Programming languages are being written insecurely by everyone alive? Don't whine about it, try to come up with a better way that won't make it so hard to write secure code with the available workforce out there. Let's face it; the infrastructure that exists needs supporting, and we can't wait until all the monkeys out there learn the One True Way(tm) of making everything secure. Telling everyone that they need to know everything is a stupid way to tackle the problem.

    --

    For your security, this post has been encrypted with ROT-13, twice.
  117. Information "secured" from Microsoft? by AdeMos · · Score: 1

    Hmmmm. Sounds like this guy might have "secured" some info. from MSDN: http://msdn.microsoft.com/msdnmag/issues/02/09/Sec urityTips/default.aspx

  118. vasqzr proves he is a wizard. by twitter · · Score: 2
    Oh great vasqzr, your library is most impressive as are your great deductive reasoning skills. I would never have come up with your summary of the article nor recomended the same books after reading that article. What a grasp you have on the following quotes:

    If something like Windows plays any part at all in your system design, you should probably give up now. Despite being closed source, holes are discovered constantly. The Windows system is also far too massive, complex, and user unfriendly for human beings to have any hope in securing it.

    It should be a crime to teach people C/C++.
    This isn't an attack on the language itself (although there are plenty). The problem is that people use it to write high level applications....High level languages like Ruby, Python, or even Java are strongly recommended for all new projects.

    Actually, I think you are a troll. You read the article, know about the boycot on Amazon, and wrote the most infuriating and leat informative thing you could. Thanks.

    For those of you just tuning in, I like C, but the author's got point about using it to write high level stuff.

    --

    Friends don't help friends install M$ junk.

  119. Momentum. by mindstrm · · Score: 1

    It's like this. A hypothetical business has 200 windows workstations. They need an application for their staff; they want you to write it.

    Telling them to "switch to linux" means they have to change a ton of OTHER applications, and that's a big disruption to workflow; they already PAID for windows. So either you develop the app for them on windows, or they go somewhere else.

  120. That would be nice. by mindstrm · · Score: 1

    but I doubt most businesses would pay what it would cost for truly hardcore audited applications to be written for them.

    If a company is going to be liable, think about maybe 10x the development time, and 10x the cost. Will you pay $3000 for a single licence of XP Pro that won't crash, as long as you only run applications that microsoft guarantees are bug free? (Audited Office will run you another $3000-$5000, many apps will be out of the question or you will void your policy, etcetera).

    That's why.

    All those statements the open source world would love to have won't change the fact that systems will still be broken into and software will still have flaws.

  121. Security and Systems Software Design (RANT) by hackus · · Score: 2

    IMHO the vast majority of todays problems stemm from the fact that we have an increasing need for computer programmers, so we build systems that an idiot can run. So, we DO have idiots running and maintaining computers.

    Case and point, Microsoft Products.

    Microsoft Windows and its philosophy of design to try and make systems easy to use by making it a snap to put servers up and running in a jiffy with a minimal background of how any of the services actually works, is a HUGE problem.

    No DNS admin of a Windows box I personally have run into actually understands how DNS works. They use Wizards to setup the DNS server and well, presto, usually a wrong DNS server with malformed records or BAD zone lists.

    The problem with this approach, is that computing is not that simple.

    It never will be that simple of a system, computing in general that is.

    Microsoft's seeming objective is to code every possible wizard configuration for a Word processor, server or whatever so that it "just works". This enables people to turn services on without understanding Jack or Jill.

    Why even Aunt Emma can be a XP server administrator.

    The point is, that when you have computer code making decisions increasingly, you run into systems that are hugely monolithic, and dangerous form a security perspective. People make mistakes as IS, but making security policy from service Wizards that are designed by people is a recipe for DISASTER.

    Case and point, even small changes or patches to such systems can have unintended consequences. Microsoft products are HUGELY monolithic, and the enourmous amount of computer code built into them making decisions automagically for the system operator through Wizard based services setup can get one into big trouble.

    Linux is TOTALLY OPPOSITE. Linux is NOT monolithic. In fact, you can strip Linux down very easily because services are in affect partitions, seperate software packages that have NOTHING TO DO with kernel or OS services.

    Linux is inherently, no, not inherently, IT IS more secure because you can strip it down to the bare essentials and have a smaller running server with fewer lines of code. Fewer lines of code, means fewer execution pathways and unintended bugs that could compromise security. Plus a human is at the helm and 100% in control. Not a wizard making all sorts of setup decisions automagically.

    Out of the box, inherent in its design, Linux is more secure because you can run it with fewer lines of code to do many of the same things. In fact, you can run Linux without a video card, and many people do if you are building a router. (You use your wireless Zaurus to ssh into the box for example.) You can run Linux as a DNS server and not have a login keyboard of any kind, no Applications running or EVEN LOADED for that matter.

    Fewer lines of code means the server is also simpler to maintain and recover. Hugely monolithic installs like Microsoft Windows XP means longer backup times and longer still restore times.

    Whats more lots of software running in the background means you have to have very complex backup daemons running, using backup obscura kinda methods to unlock secret systems files by the THOUSANDS and all sorts of party dancing to get a server backed up. No WONDER it is a very complex and very expensive endeavor to backup and restore a Windows machine so that it actually WORKS if you lose the hard disk...

    Linux is just the opposite. Since the system can be stripped and customized by the admin, Linux backups become a simple file system backup. The kernel doesn't interfere with your decisions to load or unload applications. In fact it couldn't care less.

    In the end, I find Linux prevents many MBA's for example from waking up in the morning and saying "Oh, I am bored with my job. I think I will be a programmer..." Presto, they load up a Visual .Net Studio and start thier "Wizards..." (OK, so I had to deal with a MBA guy who decided he wanted to program in Java...for about 3 years and I couldn't take it anymore...the guys was thicker than a BRICK WALL when it came to Software Design.)

    The final point I would like to make is that automated software construction makes for REALLY BAD software. Case N Point, more Wizards.

    I certainly don't mind SOME help, but some of the drag and drop code I have seen in for examples, Microsoft's Visual Studio .Net (Beta 3) for COM, DCOM, Active X and .Net C# code is just plain BAD.

    But it is OK because it allows you to put together an application in 2 hours? More and more I hear Microsoft Balmer explaining: "We have the finest tools that bring value to the development process, that our competitors can't match. TCO (Total Cost of Ownership) is far lower because you can build systems much faster with Windows than Linux."

    Man, don't get me started!

    Anyone who knows anything about software engineering studies will tell you, the cost of owning software isn't in the design or construction portion, its the debug and MAINTANCE cycles of the softwares life span which is most expensive.

    The code that these wizards pump out is not something I would like to try and maintain...

    GOD HELP YOU if you should ever LOOSE the Visual Studio software because debugging the crap would drive any sane person to the old folks home for crazy and insane, burned out programmers!

    (Note: Alot of the Java wizard tools for Swing are just as bad...maybe even worse than Visual Studio's code output...)

    Most of the code output by Wizards is not very intelligible. Maintaining it is an invitation to a nightmare and cost that only a fool who would buy into that sort of argument.

    Not too difficult anyway if you are already paying for Microsoft products, so fools are in good company long after they build .Net Studio software, in 3 different languages, with thier nice little wizards and three years from now exclaim: "Hey, we reused our Cobol, C, and Visual Basic code we invested in....Oh whats that? Yeah, we have 3 different guys here maintaining the same software our competitors use only 1 person to do the same Job because they ditched all those environments and used Java instead."

    Hack

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
  122. C and C++ by Anonymous Coward · · Score: 0

    This man is an idiot. Here is why:

    C++ is still at the forefront of language technology. C++ is responsible for introducing yet another important nascent programming paradigm to the mainstream: generic programming. It was a landmark decsion to adopt the STL, and its adoption has propogated more innovaitons in the form of generative programming, expression templates, and aspect-oriented programming. Java does not even have templates!

    If he is so worried about pointers, then he should use a smart pointer class. There are plenty of fine smart pointer classes out there.

    Go away and stop wasting our time.

  123. You want secureity/quality? by Anonymous Coward · · Score: 0

    Cheap, fast, Good.
    Pick any two.

  124. Re:If something like Windows plays any part at all by sql*kitten · · Score: 2

    A non-Windows system is not a guarantee of invulnerability, but keeping a Windows system is guaranteed to put you at risk.

    Let's parse this sentence for actual meaning:

    "If you don't use Windows you are at risk, if you do use Windows you are at risk".

    The entire article can be summarized in one sentence: "C is too difficult for me, and I've heard it's cool to bash Windows". Looking at his pages, he no commercial experience, and not even a CS degree. There are people writing on software quality, like Yourdon and McConnell, who have more experience than this kid's been alive. The fact that this article got posted at all speaks volumes for the editor's own software engineering expertise. Baracella is full of contradictions, like don't use C, but use C to verify the underlying platform. What? Or his ideas on reinventing the wheel, how are you supposed to do that if you on;y have high-level scripting languages? I haven't read so much rubbish since /. posted that article by someone who wanted Oracle to rewrite their server in Perl.