Slashdot Mirror


The Cost of Crappy Security In Software Infrastructure

blackbearnh writes "Everyone these days knows that you have to double- and triple-check your code for security vulnerabilities, and make sure your servers are locked down as tight as you can. But why? Because our underlying operating systems, languages, and platforms do such a crappy job of protecting us from ourselves. The inevitable result of clamoring for new features, rather than demanding rock-solid infrastructure, is that the developer community wastes huge amounts of time protecting their applications from exploits that should never be possible in the first place. The next time you hear about a site that gets pwned by a buffer overrun exploit, don't think 'stupid developers!', think 'stupid industry!'"

156 comments

  1. Ugh by Anonymous Coward · · Score: 5, Insightful

    Tools are dangerous. If I want to cut my hand off with a chainsaw, I can. If I want to leave my PHP script open to XSS, I can.

    1. Re:Ugh by h4rr4r · · Score: 4, Insightful

      This 1 million times THIS!

      Any tool that is useful will be dangerous.

    2. Re:Ugh by I_am_Jack · · Score: 4, Insightful

      Tools are dangerous. If I want to cut my hand off with a chainsaw, I can. If I want to leave my PHP script open to XSS, I can.

      True. But I think the biggest impediment to secure systems and code is what people like my 82 year old dad are going to do if you ask them to start making selections or decisions regarding how tight or loose they want access to the internet. He's going to get angry and tell me, like he always does when I have to clean viruses off his computer, "I just want to read my email!" And there's more people a lot younger than him that will respond the same way, only it'll be over free smilies, fonts or porn.

    3. Re:Ugh by mosb1000 · · Score: 1

      I think it's harder to cut your hand off with a chainsaw than you realize, since they really require two hands to operate. A circular saw, on the other hand. . .

    4. Re:Ugh by Anonymous Coward · · Score: 1

      Have you considered buying him a Mac? Best investment I ever made when it came to my parents' computing, and my dad is even an electrical engineer. Some people will complain about the cost, but unless your time is completely free, it is easily worth it.

    5. Re:Ugh by h4rr4r · · Score: 1

      Hit a nail in a tree onetime and see where it wants to go. It won't get your arm, but a chainsaw to the ribcage is not much better.

    6. Re:Ugh by Surt · · Score: 1

      My chainsaw is a couple of years old, but it just has a startup lock that requires two hands. Once it is in operation, it requires only one hand to operate.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    7. Re:Ugh by jakimfett · · Score: 1

      Have you considered buying him a Mac?

      ...or installing Linux Mint for him? (a decent amount cheaper, and less confusing for someone moving from Windows...)

      --
      Bits of code, random ramblings: jakimfett.com
    8. Re:Ugh by jakimfett · · Score: 1

      This. Now, if you were talking about *feet*, the OP would have a point...

      --
      Bits of code, random ramblings: jakimfett.com
    9. Re:Ugh by Anonymous Coward · · Score: 1, Funny

      I considered giving up my girlfriend and peddling my ass down the gay part of town, but no, I really didn't. Just like I would never buy a Mac for myself or my family when I could get the same performance and security out of a Linux box for 1/7 the price.

      Here's a Mac-related joke, though - why did they bury Steve Jobs face-down? So people like you could stop by for a cold one! Hah heh, silly Macfags.

      -- Ethanol-fueled

    10. Re:Ugh by eimsand · · Score: 1

      I wish I had mod points for this.

    11. Re:Ugh by I_am_Jack · · Score: 1

      Have you considered buying him a Mac? Best investment I ever made when it came to my parents' computing, and my dad is even an electrical engineer.

      Funny. My dad was a mechanical engineer and you'd think he'd know. I've told him under pain of death that he is never to buy another computer without my input, and yes, it'll be a Mac. Every computer in my house is a Mac, except for the file server, and it's running Mint.

    12. Re:Ugh by neonKow · · Score: 3, Insightful

      Yeah, and tools have safety standards too. Just because you accept the risk of a car crash when you buy a car doesn't mean you have to accept the risk of your car spontaneously exploding.

      More importantly, if you're writing PHP code that costs money when you have an XSS vulnerability, that means you're responsible for your users' information. So, no, if you want to leave your PHP open to XSS, do it where it doesn't add to the cost of crappy security. And do it in a way that doesn't result in your site being hijacked to serve malware and spam for months on end before you notice.

      You're not an island. Personal responsibility means you don't blame other people for stuff that's your own responsibility (like getting hacked); it doesn't mean you can just neglect the responsibility of protecting you customers' or boss's data, or the network that your share.

    13. Re:Ugh by X0563511 · · Score: 1

      NOODLE ARMS! Really. You should have control over that bastard.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    14. Re:Ugh by Anonymous Coward · · Score: 0

      I would've replied earlier, but typing responses with one hand takes longer.

    15. Re:Ugh by Jeremiah+Cornelius · · Score: 1

      Agree.

      As you increase the general-purpose utility of any piece of technology, you open corresponding opportunity for abuse or exploitation.

      Security comes through ongoing practice. This includes implementation specifics, ongoing management operations and individual initiative/decision capacity of users.

      To believe there is a technology solution that - correctly implemented at the correct point of design and lifecycle - would automatically solve the security "problem"? This is a naive point of view, which ignores the wealth of research and understanding acquired in the field of systems security, over the past 20 years.

      This is not to argue that nothing can be done. But assuming that security can be "solved" with just the right design and development is cruelly untrue.

      And I have yet to see this security-conscientious, aware development community to which the article makes reference.

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    16. Re:Ugh by h4rr4r · · Score: 1

      I grew up in rural area where logging was and still is a common occupation. Noodle arms has nothing to do with it, if you are not paying 100% attention at all times when it kicks back bad things will happen.

    17. Re:Ugh by Anonymous Coward · · Score: 0

      Every computer in my house is a Mac, except for the file server, and it's running Mint.

      Theres nothing wrong with mint but why run it as a server? You need the gui that much?

    18. Re:Ugh by Anonymous Coward · · Score: 0

      My parents adapted quickly. I'd already moved them to Firefox, so they just switched from Firefox for Windows to Firefox for OSX. Office for the Mac is similar enough for most users that it also isn't much of an adjustment, or at least compared to the ribbon thing. The other nice thing about Macs if you live in a city area is that if there is a problem, you can send them to the Apple Store, and they'll help out. Battery problem? Boom, Apple Store.

    19. Re:Ugh by mlts · · Score: 5, Insightful

      I personally am from the IT school of "all operating systems suck, so pick what sucks less", and in some cases, the Mac recommendation may be the best way to go.

      First, Apple has actual customer service compared to the PC companies (well, unless you buy from the "business" tier and get the better support plan.) So, they will have someone to call to get problems fixed and questions answered that isn't you.

      Second, building them a desktop is in some ways the best solution, but it means you are on 24/7/365 call if anything breaks.

      Third, Macs are not unhackable, but as of now, the biggest attack is through Trojan horses, while Windows is easily compromised through browser and browser add-on holes. So, for now, Macs have a less of a chance of being compromised by browser exploits.

      Fourth, Time Machine isn't perfect, but compared to other consumer level backup programs, it is good enough. Especially if paired up with Mozy or Carbonite for documents. That way, the parent's documents are stashed safely even if the computer and its backup drive are destroyed or stolen.

      Fifth, the App Store and a stern instruction to not run anything unless it came from there will help mitigate the possibility of Trojans. It isn't perfect, but it is a good method.

      Of course, Linux is a workable solution as well, but a Mac's advantage is that it still has a mainstream software selection available for it, so Aunt Tillie can get a copy of Photoshop if she so chooses.

    20. Re:Ugh by mlts · · Score: 3, Insightful

      I find the biggest impediment to secure systems is cost. In previous companies I have worked for, there was a mantra by the management, "security has no ROI."

      The fact that on the accounting ledger, proper security practices, doesn't mean black numbers are added, but that red numbers are not added escaped them. The typical response when I asked what the contingency plan about a break-in was usually "We call Geek Squad. They are open 24/7."

      Yes, good security costs. Good routers, firewalling, hiring clued network guys, and running penetration scenarios are not cheap. However compared to other business operating costs, it isn't expensive on the relative scale.

      Because there is little to no penalty if a business does get compromised, there is not much interest in locking things down. Until this is addressed, crappy security policies will be the norm.

    21. Re:Ugh by AK+Marc · · Score: 1

      I had an electric one, and it was surprisingly light. Sure, you couldn't chase the coeds down the street with it, or cut down a Real Tree, but for trimming, it was about as light as a hedge trimmer, and as powerful as the smallest common gas-powered ones.

    22. Re:Ugh by mosb1000 · · Score: 1

      But don't you think it's advisable to pay 100% attention at all times when using a chainsaw? I mean, it is a chainsaw after all. . .

    23. Re:Ugh by AK+Marc · · Score: 1

      XSS is still a systemic error, not strictly coding. Why? Because it's code injection. If the browser was sandboxed, then the code couldn't do anything. Now, fi your bank was hit or your browser is sandboxed per instance, not tab, then you could lose your bank info to an attack, again, a high level design issue, not a coding issue.

      But designing things well is hard. For one, most designs like that focus on wants and nice to haves, and not strictly on needs, and the other, the designs are discarded when inconvenient, making them useless.

    24. Re:Ugh by Bengie · · Score: 1

      "security has no ROI."

      Security has a best case of no return and a worst case of "you lose everything".

      Preventative doctor visits also have no ROI, yet they keep saving money by saving lives.

      Ask them why they think banks "waste" money on security.

    25. Re:Ugh by Jerome+H · · Score: 1

      XSS is still a systemic error, not strictly coding. Why? Because it's code injection. If the browser was sandboxed, then the code couldn't do anything. Now, fi your bank was hit or your browser is sandboxed per instance, not tab, then you could lose your bank info to an attack, again, a high level design issue, not a coding issue.

      Well even if the browser is sandboxed what would it change? The malicious code comes from the URL (either per mail or linking) and is displayed back to the user without any sanitizing, how is this not an coding error ?

      --
      int main() { while(1) fork(); }
    26. Re:Ugh by Deorus · · Score: 1

      Yeah, and tools have safety standards too. Just because you accept the risk of a car crash when you buy a car doesn't mean you have to accept the risk of your car spontaneously exploding.

      That kind of safety is already available in modern implementations in the form of buffer canaries, randomized memory maps, read/write/execute memory protections, and managed memory allocations that are nearly transparent to the users. This is analogous to your car example, in which safety features exist in order to mitigate the negative consequences of a crash but not to limit its functionality.

      Furthermore, there are extremely complex problems for which there isn't even a clearly good engineering solution, such as concurrent programming. While an object-oriented programming language would have enough information to assume the safest option (resource locking), such an assumption would prevent you from taking advantage of the benefits of a transactional implementation. The same kind of complication arrises when multiple processes are sharing resources and communicating with each other, in which case you are required to inform your implementation that all shared resources are volatile and take back control of ownership logic, because under such conditions your implementation no longer has enough information to understand the complexity of the entire IPC solution. Speaking of object-oriented programming, while it's a very solid option for synchronous programming, it sucks for asynchronous programming, which is best tackled by event-driven programming, because the object-oriented model is not designed to deal with asynchronous error conditions due to its inability to raise exceptions asynchronously. Speaking of exceptions, while developing under an object-oriented model, you re always required to ensure that all your code is exception-safe, because an unhandled exception during the execution of an instance function can potentially leave an object in an invalid state with no way to recover from that state or generate a relevant exception (required for proper error signaling and self-destruction). It is why you have signals, which are essentially asynchronous exceptions, but signals carry their own problems, a bit like exceptions you need to ensure that everything you call from within a signal handler is reentrant, you may also need to ensure that the signal handler itself is reentrant (if signals are not being deferred while the signal handler is running), and that any global variables changed by a signal handler are volatiles of atomic types, which again requires control.

      As you can see, things aren't that simple. Software engineering is a complex monster, and that's why I love it.

    27. Re:Ugh by X0563511 · · Score: 2

      Indeed. You're supposed to treat it like it wants to murder you at the first opportunity.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    28. Re:Ugh by aztracker1 · · Score: 1

      The problem is, my Grandmothers (both of them) are partial to being able to pick up a bargain-bin tile/card/casino/casual games cd at walmart or best-buy... and it's not the easiest thing to walk them through fixing their video drivers when the system update mangled their settings.

      I'm running Linux, Windows, OSX and FreeBSD at home on various computers, let alone vmware, and mobile (android, webos and ios) devices. What's easiest for me, isn't what's most compatible for my parents/grandparents. I will say that "Mac" is a decent/popular/easy enough option... Linux, even Ubuntu or Mint... isn't.

      --
      Michael J. Ryan - tracker1.info
    29. Re:Ugh by aztracker1 · · Score: 1

      No kidding.. Debian has installers with minimal ui that work well enough directly.

      --
      Michael J. Ryan - tracker1.info
    30. Re:Ugh by Anonymous Coward · · Score: 0

      It's a question of ergonomics. Modern CNC equipment is contained within enclosures or equipped with IR perimeter sensors. Frequently, a button must be depressed to operate it, and an emergency stop button is almost always present. Well designed equipment today is much safer and easier to use than the predecessors it replaced, and it's an unfortunate reality that industrial accidents are everyone's problem. The resulting disabilities are a tax on society.

      The argument that safety is futile and no effort should be made to improve it is the voice of laziness. Think of how many people died building the empire state building. That rate of industrial accident is completely intolerable in a modern day work environment. A remote code execution exploit is a serious matter and should be accounted for in business decisions while calculating risk avoidance. Software isn't a new industry any more. The virtualization & privilege control demonstrated in modern operating systems such as Android and Windows 7 are demonstrations that it IS possible for the kernel to make secure software development more ergonomic.

      These investments need to continue. The current state of things is resulting in the war of cyber security being lost to the black hats.

    31. Re:Ugh by tinkerton · · Score: 1

      but a chainsaw to the ribcage is not much better.

      Or to the neck. A guy I knew lost his brother due to a chainsaw accident.

    32. Re:Ugh by Anonymous Coward · · Score: 0

      It is impossible to secure even the most trivial of PHP code because the language itself is flawed to the core.

    33. Re:Ugh by Anonymous Coward · · Score: 0

      Debian and all its derivatives suck ass. Tell people to use proper distros like Fedora or open suse.

      Ubuntu and Mint have done more harm to Linux desktop adoption ten MS could dream of doing.

      Ubuntu and Mint are not Linux.

  2. Yeah, yeah, yeah. by localman57 · · Score: 5, Insightful

    The next time you hear about a site that gets pwned by a buffer overrun exploit, don't think 'stupid developers!', think 'stupid industry!'"

    Yeah, yeah. Hate the game, not the player, and all that. If you code a buffer overrun and you get pwned, it may mean the industry is stupid. But that doesn't mean that you're not stupid too.

    1. Re:Yeah, yeah, yeah. by i+kan+reed · · Score: 1, Insightful

      Except the industry has painfully simple solutions to buffer overruns, like, say, almost any programming language developed after 1990 has no risk of buffer overruns.

    2. Re:Yeah, yeah, yeah. by h4rr4r · · Score: 1

      No risk of maturity either.

      Truly powerful tools are always dangerous.

    3. Re:Yeah, yeah, yeah. by i+kan+reed · · Score: 0

      Oh yeah, I've heard that java is such an immature platform that no one ever uses it, and it can't do ANYTHING.

      Get over yourself.

    4. Re:Yeah, yeah, yeah. by h4rr4r · · Score: 1

      The JDK has never had a buffer overflow?
      Secunia disagrees.

    5. Re:Yeah, yeah, yeah. by neonKow · · Score: 1

      What are you saying? That modern languages aren't powerful because you can't perform buffer overruns? You realize that even if your statement that more power --> more exploit were true, there are a million other vulnerabilities out there besides buffer overruns, which is a feature completely useless for the vast majority of programming.

    6. Re:Yeah, yeah, yeah. by i+kan+reed · · Score: 1

      I don't feel up to dealing with dissembling of this sort. You said "code a buffer overrun". You can't do that. The end. The JDK ISN'T programmed in java. The applicability of overruns it gets(which are basically impossible to cause with a significantly more complicated exploitation to run arbitrary code first) are irrelevant.

    7. Re:Yeah, yeah, yeah. by h4rr4r · · Score: 2

      Fine, then I will just admit this one flaw is something java does a good job at preventing. It still will not magically check your inputs for you.

    8. Re:Yeah, yeah, yeah. by mrnobo1024 · · Score: 2

      The designers of Java tried to do two things regarding security:
      1. allow running untrusted code (applets) without letting it break out of its sandbox
      2. prevent unsafe memory access by bounds checking, type checking on casts, no explicit deallocation

      #2 is a prerequisite for #1, since if code can write to arbitrary memory locations then it can take over the Java runtime process. However, #1 is not a prerequisite for #2. Java has in practice done poorly at meeting goal #1 but has been quite solid at #2.

    9. Re:Yeah, yeah, yeah. by 0123456 · · Score: 2

      Note that while Java may prevent common bugs like buffer overflows, they may simply cause it to throw an unexpected exception which is caught by random code which then causes the software to behave in an unexpected way. So it's an improvement, but not a magic solution to all your security issues.

      And you can probably do all kinds of exciting stuff with random Java programs by throwing so much data at them that they run out of memory and explode in a hail of cascading exceptions.

    10. Re:Yeah, yeah, yeah. by dgatwood · · Score: 1

      Yes. If you truly cannot have buffer overflows, then there are many things the language cannot do. You will never, for example, be able to write a device driver for any existing hardware architecture in any language that does not allow you to construct fixed-length buffers and fixed data structures. By definition, any language that supports those things can experience a buffer overflow.

      This is not to say that languages should not have string handling capabilities that are immune to buffer overflows, mind you, but that does not make buffer overflows impossible; it merely makes them less common.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    11. Re:Yeah, yeah, yeah. by i+kan+reed · · Score: 1

      No, it doesn't, but the original point is that the industry does nothing systematic for security. It's untrue. We actually work pretty hard as a whole on considering at least nominal security. Perfect security requires a non-existent level of perfection, so we address the problems with our software as it stands, and plan for the underlying basic security concepts that are well known and we can afford to.

      I honestly belief that software engineering is natively one of the most security conscious professions. We don't ask our architects to plan buildings with a constant eye to possible flaws like we ask our programmers to. I would imagine we don't push electrical engineers through hoops to prevent hot wiring cars either. I know there are reasons for computers to be higher risk, but as far as fundamentals go, software ISN'T BAD.

    12. Re:Yeah, yeah, yeah. by i+kan+reed · · Score: 1

      I wasn't saying it was a magic bullet, I was saying it addressed a fairly basic common security problem by being an advancement in technology. But it's 20 years old now, better things have come along too.

    13. Re:Yeah, yeah, yeah. by blueg3 · · Score: 1

      Buffer overflows are independent of whether you have fixed-length buffers and fixed data structures. You can have them with variable-length buffers as well.

      The essential problem that causes a buffer overflow is that your language supports a data-copying (or data-writing) operation that either does not care about or must be explicitly told the amount of space available in the destination. This essentially means that you must have range-checking for all pointers.

      Last I knew, Ada is both immune to buffer overflows and has been used to write device drivers.

    14. Re:Yeah, yeah, yeah. by Anonymous Coward · · Score: 0

      By definition, any language that supports those things can experience a buffer overflow.

      No, they can experience an index out of range error. Buffer overflows are consequence of unchecked access to memory, not fixed length data structures.

      You can write device drivers simply by providing support for arrays with specified placement, not necessarily at languge level, compiler/runtime level is enough. You might get bounds checking related slowdown with this, but it is easily eliminated with most use cases in low-level programming - access to static index is trivial and can be checked at compile time, variable indexes are either checked at runtime or at compile time with sufficiently smart value range analysis. In any case you won't be able to clobber some value outside of range.

      Nothing says you have to have Wild West like C/C++ pointer arithmetic to write OS level code.

    15. Re:Yeah, yeah, yeah. by Anonymous Coward · · Score: 0

      You can use dependent typing as a anti-overrun measure - it's not as good as formal proof for whole programs properties, but still helps you with some problems.

    16. Re:Yeah, yeah, yeah. by dgatwood · · Score: 1

      You can write device drivers simply by providing support for arrays with specified placement, not necessarily at languge level, compiler/runtime level is enough.

      No, it isn't. Not on any hardware built in the past two or three decades. Hardware is almost invariably configured at run time these days; the order in which devices are iterated depends on when they were plugged in. Heck, we now have hot-pluggable hardware that looks like an actual PCI device (Thunderbolt). There's no way to compute the addresses for those at compile time. You can't even compute them at boot time. Unless you completely change the way communication between the OS and devices occurs (e.g. moving to a pure message-based protocol), you cannot write drivers without pointers. Period.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    17. Re:Yeah, yeah, yeah. by Anonymous Coward · · Score: 0

      These must be figments of my imagination.

      All you need is ability to say something to like "val myiospace = new MMIORange(baseaddr, length)" and "myiospace[42] = x". You might get a drop in speed for bounds checking, but as the compiler/JIT compiler is aware of this MMIORange type it can safely eliminate those in most cases.

      Hope your "Period." passes without further frustration.

    18. Re:Yeah, yeah, yeah. by dgatwood · · Score: 1

      Whether the "driver" is written in a low-level language with pointers or not, the piece of code that is actually interacting with the hardware (in this case, the JIT) is not written in a pointerless language. You can always add layers of abstractions to try to hide what's going on at the bottom layer. That doesn't change what is going on at the bottom layer. It's just a convenient fiction.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    19. Re:Yeah, yeah, yeah. by Anonymous Coward · · Score: 0

      Shift'em goalposts!

      "You need pointers to write drivers" -> "You need pointers to write underlying VM". Classy move.

      And you are already wrong on this part:

      the piece of code that is actually interacting with the hardware (in this case, the JIT) is not written in a pointerless language

      JX-OS, for example, actually fully compiles classes to machine code on load. Accesses to device memory become a bunch of plain old movs and cmps for range check and another mov for actual access and accesses to ports become plain in and out instructions.

      As I said, only thing you need is compiler-level equivalent of C++'s placed new.

    20. Re:Yeah, yeah, yeah. by dgatwood · · Score: 1

      And compiler-level support for the equivalent of an address in memory (pointer). After all, that's what the address of the device is.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  3. Yes, blame the developers! by BagOBones · · Score: 5, Interesting

    Most web app exploits ARE the developers fault!
    - They don't check their inputs (length) buffer over flow
    - They parse or merge database commands (SQL injection)
    - They don't limit abuse (brute force retry attacks)

    Yes some of these can be mitigated at other levels, but ALL are common APPLICATION DEVELOPER ISSUES! by measure of deployment to number of exploits I would say the programing languages and OS already do a MUCH better job than the application developers...

    --
    EA David Gardner -"... but the consumers have proven that actually what they want is fun."
    1. Re:Yes, blame the developers! by Korin43 · · Score: 3, Interesting

      - They parse or merge database commands (SQL injection)

      I would argue that this one is sometimes the fault of the tool. In most database APIs, there's a function like:


      run_sql(String command, Object[] data)

      But the language that most amateur programmers use only has:


      mysql_query(String command);

      Looking at that function signature, who's the know that you're supposed to also use mysql_real_escape_string. Even if you know what you're doing, you might accidentally use addslashes or mysql_escape_string. Or forget it for one parameter.

      Interestingly, the language that does this best, is also the second worst language ever invented (after PHP). In ColdFusion, if you do this:

      select * from cats where cat_name = '#catname#'

      It's perfectly safe, since ColdFusion detects that catname is inside of quotes, so it automatically escapes it. You can still use variables inside of SQL, since it only escapes them when they're inside quotes.

    2. Re:Yes, blame the developers! by BagOBones · · Score: 1

      Your example is still a failure of the developer understanding the tool which caused the problem, not the tool missing an alternate secure way to do it.

      --
      EA David Gardner -"... but the consumers have proven that actually what they want is fun."
    3. Re:Yes, blame the developers! by InvisibleClergy · · Score: 1

      This so much. I went from ColdFusion development to PeopleSoft, and I find myself missing such nice things from ColdFusion.

    4. Re:Yes, blame the developers! by Anonymous Coward · · Score: 0

      There are such things as bad tools.

      The tool is bad if the defining characteristics of the tool are its misfeatures. Take out the crap bits from PHP and it starts to not be like PHP.

      They've been deprecating the crap bits (stuff like magic quotes, register globals, addslashes) but there's pretty much lots of crap left and they even added some more.

      http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

    5. Re:Yes, blame the developers! by Anonymous Coward · · Score: 1

      > I would say the programing languages and OS already do a MUCH better job than the application developers...
      Unless the language in question is either PHP or JavaScript.
      The first was written by someone with no clue about language design or network security. The second was written by a competent enough programmer who was constrained by having to write the language and library from scratch within a week.
      PHP's idea of a database API was an "execute string as SQL" function, pushing the responsibility for avoiding injection attacks onto the developer (by "developer", I mean someone whose entire programming knowledge amounts to the first two chapters of "Learn PHP in 15 Minutes"). PHP isn't a web development language, it's an exploit development language.
      And JavaScript has eval(); usually that's a stupid idea, but in a language designed specifically for remote execution, it's an insanely stupid idea. I'll know that the government has started taking "cybersecurity" seriously when they pass a law requiring any "eval" function to be called "inject_me_harder".

    6. Re:Yes, blame the developers! by baggins2001 · · Score: 1

      I have blamed the developers, but the greatest source of issues I've seen usually circles back to managers and users. These fundamental issues/problems are still going on
      - Prototypes are taken directly into production. The prototypes intention was to actually flesh out the business rules. After initial testing does it do what the customer wants or can it do what the customer wants, customer is happy and wants it right now.
      So how did the prototype get so poor -- after 4 or 5 iterations where the developer saw multiple weeks of work get dumped and trashed, the code got more turn and burn. Backend gets sloppy and just good enough so the shiny front end works.
      It may not be business rules, insert any other complex issue here that is poorly described and spec'd.

      - I have seen where developers get assigned to departments where they are reporting directly to a business manager or someone in sales. They churn out shiny code. Business Manager or Sales manager are all happy because they are getting new tools.
      Actually saw a horror story of this. Developer went and asked and got a view created in a database. Application allowed for an unintentional SQL injection. Data was lost and nobody noticed a large chunk of data missing for 2 weeks. The DBA got blamed. They just didn't want to blame an out of control developer.
      But basically it pointed back to a developer who was churning out non-peer reviewed code. Which is actually a management problem.
      - Then there is the industry publishing problem. (This I think is one of the biggest problems)
      I haven't read a beginners or intermediate programming book in awhile, but when I did, I never saw chapters that addressed these issues. Example after example never checking for buffer over flow or SQL injection. If it is such an easy problem to deal with , why aren't they addressed in beginning example code.

      --
      He who said 1,000,000 monkeys on 1,000,000 typewriters would eventually type the great novel, never saw an AOL chat room
    7. Re:Yes, blame the developers! by Korin43 · · Score: 1

      I can't bring myself to actually miss anything about ColdFusion, but I do find it interesting that they managed to solve the #1 security problem on the web. If only they could automatically detect when you're trying to store a password, and run it through bcrypt first ;)

    8. Re:Yes, blame the developers! by Korin43 · · Score: 1

      Say someone sells a car where there's three pedals: a gas pedal in the normal place, a brake pedal in an unusual place, a pedal that functions like a brake normally, but swerves into oncoming traffic if you're going over 50 mph. Is it the users fault that suddenly they're all crashing? The manual clearly states, "don't ever use the pedal where the brake pedal used to be, because you might swerve into oncoming traffic". But still, isn't it mainly the manufacturer's fault for including that pedal at all?

    9. Re:Yes, blame the developers! by BagOBones · · Score: 1

      Developers are not end users... they are some level of engineer, as they are BUILDING things for end users to use... They should be reading some kind of docs before choosing tool / function they use for the job... the more powerful the language the more you need to know.

      In your example the developers should be the ones that build the BAD CAR with the exploit in it that was sold, they where not the poor end users that purchased it.

      --
      EA David Gardner -"... but the consumers have proven that actually what they want is fun."
    10. Re:Yes, blame the developers! by Korin43 · · Score: 1

      They should be reading some kind of docs before choosing tool / function they use for the job... the more powerful the language the more you need to know.

      This is the exact opposite of how normal people describe powerful languages. The most powerful languages let you get the most work done while fighting your language the least. With a language like Java or Python, I can generally *guess* what the correct function to do a task is, and it tends to work (although if you do this in Java, you tend to get the worst possible implentation -- but it will work correctly). In PHP, you need to read the full documentation for every function you call, then Google it to make sure the documentation isn't lying or leaving something important out (like "calling this function will call the interpreter to crash", or "using this function will expose remote execution vulnerabilities").

      In your example the developers should be the ones that build the BAD CAR with the exploit in it that was sold, they where not the poor end users that purchased it.

      I agree. You might notice that the BAD CAR represent PHP (the thing which I'm saying sucks), and I *do* blame the developers, not users.

    11. Re:Yes, blame the developers! by MtHuurne · · Score: 1

      In my opinion, acting like an engineer means accepting that you're only human and are going to make mistakes. Therefore, adopt tools and practices that reduce the chance of mistakes and reduce the damage when mistakes do occur.

      In the case of SQL, pick a database interface that automatically escapes every string substituted into a query. This one architectural decision eliminates an entire class of bugs; it's much more effective than double checking hundreds of individual query constructions. And it has the added advantage that most queries will be using prepared statements which can execute faster than query strings.

    12. Re:Yes, blame the developers! by Bengie · · Score: 1

      This is the exact opposite of how normal people describe powerful languages. The most powerful languages let you get the most work done while fighting your language the least.

      When a language is doing lots of work for you, you'd better know what kind of work it's doing.

  4. Totally off-base by i+kan+reed · · Score: 3, Insightful

    Computers are inherently instruct-able. That's their power, and that's where all security flaws come form. The underlying problems don't arise out of an industry-wide antipathy. If anything the reality is opposite, the entire industry in quite interested in the fundamentals of security.

    The problem lies in the fact that we want to be able to tell computers what to do with a wide assortment of options on each of multiple layers(machine, operating system, high level language, and user application). Every one of those layers necessarily includes things we won't want to do that someone else could want to(i.e. security flaw)

    This is like blaming car theft on a general malaise towards car security, when in fact it's a simple matter of cars that don't go wherever the driver wants or only ever accepts one driver is nigh useless.

    1. Re:Totally off-base by neonKow · · Score: 1

      I disagree. While what you're saying COULD be true, everything I've heard from everyone from programmers to IT employees point to the opposite. As if the news weren't enough. Sure, a security firm getting hacked might be an instance of "if someone wants to hack you badly enough, they will," but many more problems arise because management makes the decisions about where to spend resources, and they're always pushing edge for features because that is where the money is.

    2. Re:Totally off-base by damm0 · · Score: 1

      The car industry did move towards key fobs that authenticate legitimate holders. And the computer industry can do similar kinds of tricks.

    3. Re:Totally off-base by i+kan+reed · · Score: 1

      We do. We do all the time. That doesn't mean that every choice made should be with a "Security first, freedom second" attitude. Every situation needs known severe risks addressed, and everything else played by ear. That's just how complex projects work.

    4. Re:Totally off-base by i+kan+reed · · Score: 1

      Whoa, I'm blown away by the concept that there are compromises that establish a balance of different needs due to budget limitations. That never affects anything but security.

    5. Re:Totally off-base by neonKow · · Score: 1

      The underlying problems don't arise out of an industry-wide antipathy. If anything the reality is opposite, the entire industry in quite interested in the fundamentals of security.

      Whoa, I'm blown away by the concept that there are compromises that establish a balance of different needs due to budget limitations. That never affects anything but security.

      Stop being stupid. Sarcasm doesn't make you right, and my point is quite clear, but I see I need to spell it out for you anyway.

      There IS industry-wide apathy, and the reason is because higher-ups benefit more from pushing features that edge out the competition next month than they do from long-term investment in security that might save them two years from now, which is what they are doing. If the managers/CEOs at a small car maker could save money by making one identical key/lock across all their cars, then they would, and they would jump ship before someone discovered and exploited the problem, after they took their big raise for saving the company big bucks...in the short term.

      Yes, computers are powerful, but that doesn't mean there NEED to be security flaws, especially not at the level we're seeing them for most software. For example: sanitizing your inputs for SQL queries doesn't get rid of any functionality for your application, but not doing so is one of the biggest reasons people lose money. However, you could easily have PHP automatically sanitize form requests so no database special-characters are passed on, and have programmers set a flag to take user-input literally when it's necessary. This default would work wonderfully in 99% of all PHP web applications that take user-input. Such safeguards aren't implemented because they take time and money to implement in a time where we everyone is tripping over their own feet to race to be the first with new features.

  5. "Rock-solid HW/OS"? We'll get right on that... by jeffb+(2.718) · · Score: 2

    ...because we love hearing not only the clamor for new features, but also:

    "Why won't you run on commodity hardware? I can get a system that does everything yours does, plus more [including things others make it do against my will], for half the price!"

    "Why is your system so much slower? Every benchmark shows that other systems can do X in a quarter of the time [leaving the other 75% for executing malware]."

    "Why does your system make it such a PITA for me to do this simple operation, when all the other systems let me [or any unauthenticated user] do it with a few simple lines of code?"

    1. Re:"Rock-solid HW/OS"? We'll get right on that... by X0563511 · · Score: 1

      ... and yet such PITA systems like SELinux do exist and are utilized.

      Solutions are there, people need to just stop being lazy bitches about it.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
  6. Just Ask Apple by Ukab+the+Great · · Score: 1, Insightful

    When you protect developers and users from themselves, when you start making engineering tradeoffs that reduce functionality and tinkering and fiddling ability in exchange for greater security and stability, some people start screaming that you've being evil, paternalistic and unfreedomly and not letting them decide for themselves whether they want to make tragic mistakes.

    1. Re:Just Ask Apple by neonKow · · Score: 1

      I'd say ask IT security people. Apple is hardly a good example since their reasons for their walled garden model has been more about what makes money than what makes things secure. It's been very successful at creating a certain experience for the users, but only recently has it taken up the slack as far as security goes, so I feel Apple deserves the criticisms it receives.

    2. Re:Just Ask Apple by Xtifr · · Score: 1

      That's funny--I don't hear that sort of screaming about OpenBSD, which is miles ahead of Apple on making a solid, secure system. Maybe it's not the greater security and stability that pisses people off. And it's not the reduced functionality, because OpenBSD has that too. Maybe it's the reduced ability to tinker and fiddle, and the fact that you don't actually own what you bought, and the fact that Apple really are arrogant and paternalistic.

      (Actually, I think OSX is a perfectly adequate system. It's Apple's mobile devices that I avoid like the plague.)

  7. It is a double edge sword by brainzach · · Score: 3, Insightful

    If you design your tools and infrastructure to prevent those with bad intent, it can also prevent those with good intent from using your system.

    There is no magical solution that will solve our security needs. In reality, everything will require tradeoffs which developers have to balance out according to what they are trying to do.

    1. Re:It is a double edge sword by DamonHD · · Score: 1

      Wait, the evil bit[RFC 3514]? ...

      Rgds

      Damon

      --
      http://m.earth.org.uk/
    2. Re:It is a double edge sword by damm0 · · Score: 1

      The great majority of applications today could be coded up in environments similar to what developers are already used to using, but constrained by sandboxes, if the sandbox author were to provide useful tools for the developer to do things they want to do. Examples include local storage on the file system, database interactions, etc.

      Oddly enough, efforts to solve the concurrency problem might also help our security problem. Witness http://flowlang.net/ for example. Being able to analyze the source lattice of a particular variable also gives us useful hints about what safety mechanisms might need to be put in place. If your variable includes user input without going through any of the input checking routines and is then passed to a string concatenation routine before being passed to the database... the run time can detect that easily and abort or check!

    3. Re:It is a double edge sword by marcosdumay · · Score: 1

      f your variable includes user input without going through any of the input checking routines and is then passed to a string concatenation routine before being passed to the database... the run time can detect that easily and abort or check!

      Like Perl?

  8. Well that was 7 minutes I won't get back by eimsand · · Score: 2
    Ugh. What a flaky, uninformed piece of drivel that was.

    The author can think of himself as an artist all he wants to. Here's a newsflash: other "arts" have to do things responsibly, too.

    His whole argument is like an architect blaming the bricks when his/her poorly designed building falls over.

    1. Re:Well that was 7 minutes I won't get back by nobodyatnowhere · · Score: 1

      That took you 7 minutes to read?

    2. Re:Well that was 7 minutes I won't get back by eimsand · · Score: 1

      I had to stop and smack my head against the table twice.

    3. Re:Well that was 7 minutes I won't get back by Tarsir · · Score: 1
      Agreed. This was an article with many low points, but I think the following two excerpts highlight the flawed reasoning quite well:

      The underlying platforms and infrastructures we develop on top of should take care of [ensuring security], and leave us free to innovate and create the next insanely great thing.

      The other major factor in why things are so bad is that we don't care, evidently. If developers refused to develop on operating systems or languages that didn't supply unattackable foundations, companies such as Apple and Microsoft (and communities such as the Linux kernel devs) would get the message in short order.

      This article is missing even a gesture towards explaining why "the infrastructure" should be responsible for security while developers create their masterpeices, and boils down to mere whining: "Security isn't fun so someone else should do it for me!" Perhaps the worst part is that there is a good argument to be made that the OS and hardware should take of security, and a fundamental limit to how much security they can offer; the blog author just doesn't make it. Having the OS plug a given security hole once is more efficient than having each application duplicate the effort of plugging the hole. On the other hand, security is necessarily a trade-off for functionality, so the only fully secure application is one with no permission to do anything.

    4. Re:Well that was 7 minutes I won't get back by Anonymous Coward · · Score: 0

      Anytime someone pulls out the 'Why do we still have multiple operating systems?' complaint, I pay close attention to whatever else they're saying. I am constantly updating my list of horrible ideas that I should always avoid, and I know I may find a few new entries for that list nearby.

  9. IT weenies don't know anything about security by nobodyatnowhere · · Score: 1

    America's biggest threat is not terrorism. It's complacency. For such an arrogant industry, IT "solutions" sure do have a LOT of holes. That's what you get when you demand quantity over quality.

    1. Re:IT weenies don't know anything about security by X0563511 · · Score: 1

      Correction: MANAGERS don't know anything about security.

      Let me assure you, IT does - unless MANAGEMENT has ensured they only hire those who don't. The ones that do, however, cannot exercise it because of MANAGEMENT.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    2. Re:IT weenies don't know anything about security by Anonymous Coward · · Score: 0

      Wrong. Most IT workers are idiots, in particular most system administrators are idiots. (Most programmers are idiots, too, but I digress.) Case in point:

      Let's let a group of people who don't anything about programming, who aren't interested in programming (because that eats into their video game time), become the gatekeepers and administrators of bug-ridden corporate software. What result?

      The entire IT industry is fscked up. At each level you have incompetent people doing the work. Things would be much more secure if the sysadmins washed the floors, the programmers administered the systems, and the grey beards pulled out of retirement to program the software.

      Managers are never the problem because they're entirely clueless. All they do is talk, and all you have to do is talk back. There's no substance to what they're saying, so don't pretend like there is. If they say Foo, you say Foo. If they say Bar, you say Bar. That's as far as the interaction ever need go.

    3. Re:IT weenies don't know anything about security by Billly+Gates · · Score: 1

      The probem is always management. It is taught in business school. They tell the other guys what to do and set the budget.

      In a large office with 3,000 users a few IT support guys are rushing around constantly and do not have the time to update and do testing. The budget is never set high enough to do it as they are viewed as cost sink or cost center by the finance department. The bean counters are much to blame as do the management for not selling themselves better about the hidden costs not shown in Excel by the CPAs in board meetings on why you need IT.

    4. Re:IT weenies don't know anything about security by RabidReindeer · · Score: 0

      America's biggest threat is not terrorism. It's complacency. For such an arrogant industry, IT "solutions" sure do have a LOT of holes.

      That's what you get when you demand quantity over quality.

      I only wish it was complacency. As long as we want it faster, cheaper, it's going to suck in the security department. And as long as security is something that's the responsibility of "clever" coders and architects and not people who are trained specifically for security, it's never going to be as good as everyone thinks it is.

      I've dealt with a lot of homegrown security frameworks over the years, and most of them could be broken in under 15 minutes by people with minor technical expertise because the so-called geniuses who invented them expected people to try breaking in through the front door and didn't secure the windows.

      If you've got a choice, use a standard security framework built to professional specs. Don't design, implement and maintain your own. No matter how clever you are.

    5. Re:IT weenies don't know anything about security by AK+Marc · · Score: 1

      Where did you get your MBA from? Invariably, when I see someone make up lies about what is taught in business school, they haven't attended one. I can only guess that they are too stupid to pass, so they never try, but instead take on the anti-education stance of "[business] school bad". So, either you have a business degree, and I'm wrong. Or you are an anti-education liar. Which is it?

  10. Oblig Farside by BenSchuarmer · · Score: 2

    I've got a Farside on my cube wall. The caption is "Fumbling for his recline button, Ted unwittingly instigates a disaster." The picture is a guy sitting in an airplane seat about to grab a switch that's labeled "wings stay on" and "wings fall off".

    It's a reminder to me to try to avoid giving my users a way to shoot themselves in the foot.

    On the other hand, people need powerful tools to get their jobs done, and those tools can do horrible things when used incorrectly. There's only so much we can do to make things safe.

  11. That's why I code in .NET by JcMorin · · Score: 1

    I .NET there is no buffer overflow or html inject (querystring and post data are scanned by default) or sql inject (using SqlParameter all data are encoded). I "feel" a lots safer about basic security problem.

    1. Re:That's why I code in .NET by Billly+Gates · · Score: 1

      My specialty is not .NET.

      I can tell you that when I rewipe my computer with a fresh Win 7 image there are over 120 security updates and half are .NET. Hours later there are more security updates with the .NET platform. I do not think it is secure as you think.

  12. Wah, wah, wah. by Shoten · · Score: 2

    The article focuses on security problems that have been largely addressed, in exactly the way he's complaining hasn't happened yet. He focuses on smack stashing and buffer overruns, for example...and disregards the latest higher-level languages that manage memory in ways that makes these attacks far less common. He entirely ignores the most frequent and effective attacks (XSS, SQL injection) nor does he talk about the underlying causes of such vulnerabilities. (I, for one, am extremely curious how a SQL injection attack can be the fault of a fundamentally insecure operating system, since in many cases the attack traverses across multiple different OSes with nary a hiccup.) I'm not entirely convinced that he even understands the current state of what most vulnerabilities look like, to be honest. And finally, he gives absolutely no indications as to how to accomplish this lofty goal of an OS that would prevent there from being such a thing as an insecure app in the first place. It looks to me that all he's doing is whining about the fact that he's having to learn about proper and secure programming methods, which is taking away from his hobby of eating bear claws two at a time.

    --

    For your security, this post has been encrypted with ROT-13, twice.
  13. Clamoring for new features by Anonymous Coward · · Score: 0

    Gimme a fuck'in break!
    People aren't clamoring for a new browser update any more than the latest flash player.
    This crap is forced down their throats in an effort to grab market share, screw competitors and make a buck.
    Customers have almost no direct control.

  14. Author needs to back up a few steps by Anonymous Coward · · Score: 0

    Forget about protecting me from my bugs ... how about protecting me from the OS's bugs? Windows has so many bugs in very basic functions that I'm amazed anyone manages to write robust software.

    For example, the atof() function, which has been around since at least the 80's (probably the 70's) still has bugs on Windows. Microsoft's documentation says: "The function stops reading the input string at the first character that it cannot recognize as part of a number." No, it doesn't. It will keep reading until it hits a '\0' even though the extra bytes it is reading won't impact the returned value. This can make reading a number from a large buffer excruciatingly slow. And, if you aren't lucky enough to have a null byte hanging around at the end of the buffer, atof() might just keep going until it tries to read outside of your program's memory space, causing the OS to kill it.

    Building robust software on Windows is like building a house on quicksand.

  15. WTF Slashdot by Anonymous Coward · · Score: 0

    WTF, seriously? You're going to post this to a tech site?

    What fucking moron decided to write this summary for slashdot? What fucking moron decided it was a good submission? Yes, I realize the answers are blackbearnh and Soulskill - seriously guys. It's shit like this that makes me wish I read CNN instead. Stop insulting your readers.

    Go ahead and mark this post flamebait - that's what the article itself is, so I am just posting in kind.

  16. Tried it... by Anonymous Coward · · Score: 0

    Yes, because way back in the olden times, before the clamoring for new features overtook infrastructure stability demands, things were completely secured. Never mind that many of the infrastructure components from that era still in use today have to be protected by layers of modern security due to the huge and gaping security holes... we don't have time for actual facts!

  17. it's us, we are the industry by Anonymous Coward · · Score: 0

    software community has a massive blind spot, and this is the inability to identify root cause. think not? identify one process once a developer checks in code that identifies and resolves root cause. our industry every day spends millions of dollars automating bad process. only we can fix that, and there is no better place to do this, than in open source, because there are no constraints. it will not happen in industry, this is where open source efforts can truly lead the way.

  18. So close, and yet so far by ka9dgx · · Score: 1

    Blaming the users, developers, tool chains, internet, or operating systems isn't going to help fix anything because those aren't the root cause of the problem.

    Complexity is the problem. The solutions we're all used to using involve adding even more complexity on top of things, which makes it impossible to secure things.

    There is another approach. It's called capability based security, and here's how it works:

    For a given process, create a list of the files it needs to access, and the rights it needs for each. That list goes to the operating system, along with the program to run. The OS then checks the list consistently any time a file or other resource is needed. There is a special (but not onerous) way for the process to request access for other files from the OS (like when you need to open or save a file with a new name) called a "power box".

    At no time is a process allowed to just try things out and scan around.

    This means that you can simply and effectively limit the side effects of a given program, and not have to worry about buffer overflows, etc... because they can only result in processes which end up with the same limited access.

    A capability based security system provides a realistic, reasonable, and fairly easily understood way of providing security which does NOT require trusting code (outside that of the actual OS).

    This is the way forward out of the security morass we find ourselves in. I've been preaching this message for a while, and I hope that there are some out there in this wilderness who agree with me.

  19. Stupid article. Important point. by Animats · · Score: 3, Interesting

    The article is stupid. But the language and OS problem is real.

    First, we ought to have secure operating system kernels by now. Several were developed and passed the higher NSA certifications in the 1980s and 1990s. Kernels don't need to be that big. QNX has a tiny microkernel (about 70KB) and can run a reasonable desktop or server environment. (The marketing and politics of QNX have been totally botched, but that's a different problem.) Microkernels have a bad rep because CMU's Mach sucked so badly, but that was because they tried to turn BSD into a microkernel.

    If we used microkernels and message passing more, we'd have less trouble with security problems. The way to build secure systems is to have small secure parts which are rigorously verified, and large untrusted parts which can't get at security-critical objects. This has been known for decades. Instead, we have bloated kernels for both Linux and Windows, and bloated browsers on top of them.

    On the language front, down at the bottom, there's usually C. Which sucks. The fundamental problems with C are 1) "array = pointer", and 2) tracking "who owns what". I've discussed this before. C++ doesn't help; it just tries to wallpaper over the mess at the C level with what are essentially macros.

    This is almost fixable for C. I've written about this, but I don't want to spend my life on language politics. The key idea is to be able to talk about the size of an array within the language. The definition of "read" should look like int read(int fd, &char[n] buf; size_t n); instead of the current C form int read(int fd, char* buf, size_t n); The problem with the second form, which the standard UNIX/Linux "read" call, is that you're lying to the language. You're not passing a pointer to a char. You're passing an array of known size. But C won't let you say that. This is the cause of most buffer overflows.

    (It's not even necessary to change the machine code for calling sequences to do this. I'm not proposing array descriptors, just syntax so that you can talk about array size to the compiler, which can then do checking if desired. The real trick here is to be able to translate old-style C into "safe C" automatically, which might be possible.)

    As for "who owns what", that's a language problem too. The usual solution is garbage collection, but down at the bottom, garbage collection may not be an option. Another approach is permissions for references. A basic set of permissions is "read", "write", "keep", and "delete". Assume that everything has "read" for now. "write" corresponds to the lack of "const". "delete" on a function parameter means the function called has the right to delete the object. That's seldom needed, and if it's not present, the caller can be sure the object will still be around when the function returns. "Keep" is more subtle. "Keep" means that the callee is allowed to keep a reference to a passed object after returning. The object now has multiple owners, and "who owns what" issues come up. If you're using reference counts, only "keep" objects need them. Objects passed without "keep" don't need reference count updates.

    Do those few things, and most low-level crashes go away.

    I won't live to see it.

    1. Re:Stupid article. Important point. by mhogomchungu · · Score: 1

      int read(int fd, &char[n] buf; size_t n);

      char buffer[10] ;
      &buffer[9] will point to the address of the last element of the buffer.
      &buffer[10] is outside the buffer range -->> BUG, C programming 101.

      if the function as stated above requires that n be the buffer size, then:

      1. You will always be passing a pointer to outside the buffer size.
      2. You will always be required to read ONLY the full size of the buffer.This will prevent reading more than what the buffer can hold, but it will also prevent reading less than the buffer size. Solving a problem due to programmer carelessness by handicapting other programmers since they will no longer be able to call "read" to read data of various sizes that are under the buffer limit.

      The problem with the second form, which the standard UNIX/Linux "read" call, is that you're lying to the language. You're not passing a pointer to a char. You're passing an array of known size. But C won't let you say that. This is the cause of most buffer overflows.

      The API takes a pointer to a memory address, and writes n bytes from the beginning of the pointer address.
      The API does not care if you gave it an array or not and thats a good thing because you can then read data to not only arrays, but to any arbitrary position in the array.

    2. Re:Stupid article. Important point. by Animats · · Score: 1

      The intent of the new syntax is that &char[n] buf means passing a reference to an array of size n. char[n] is an array type, something C currently lacks. Syntax like this is needed so that you can have casts to array types.

      I've had a few go-rounds at this syntax problem. See "Strict pointers for C". Unfortunately, there's no solution that's backwards-compatible with existing code. However, mixing files of old-style and new-style code is possible, and mechanical conversion of old-style code to new-style code looks possible.

      It's worth looking at this again now that C's market share is back above that of C++.

    3. Re:Stupid article. Important point. by dog77 · · Score: 1

      I agree 100% that movement towards a micro kernel would be a huge improvement. Now if someone could develop a CPU intended for a micro kernel.

      As for programming languages, I think it is the OS that needs to do a better job, not the language itself. I want to be able to run any application, driver, or library binary and not have it take over my system. Most components should be installed with limited permissions, and only expand permissions as needed, and it should be easy to rescind permissions later on. Libraries should be in a separate context from applications, and so if an application uses a compromised library, the library can't look at the applications memory.

      There should be a way to monitor and control the OS through a 3rd party JTAG like device. Where it can inpsect any aspect of the system; verify checksums of applications, drivers, etc; freeze tasks; and halt the entire OS if it needs to.

      Encryption/authentication and certificate/key management should be handled on a dedicated secure device . It only takes one security flaw, and your computer is at risk to having all of its passwords compromised. When an SSL connection is made, your computer should never get a hold of any security information necessary to establish the connection, only given the temporary key material to make a single connection, or better yet have its connection be completely controlled through the security device.

    4. Re:Stupid article. Important point. by Anonymous Coward · · Score: 0

      Amazing. With your "permissions for references" you have reinvented memory management in Objective-C, aka reference counting. Bravo. Who knows, maybe tomorrow you will invent "foreach" loops where you can't run out of bounds? Sigh, so many "inventors" and nobody using the already existing tools...

    5. Re:Stupid article. Important point. by Anonymous Coward · · Score: 0

      from the look of what you wrote, the size of the array should be known at compile time. This is not a very common occurrence.

      If the size of an array is not known at compile time, then to avoid buffer overruns you have to do bounds-checks at run-time. But these are very expensive.

      C/C++ allow the programmer to decide when/how to do bounds checking, as he/she sees fit. C++ already provides for bounds checking at run-time using vector::at, but this is probably too slow.

    6. Re:Stupid article. Important point. by Anonymous Coward · · Score: 0

      The term microkernel has jack and shit to do with the size of said kernel

  20. Oh no! by Anonymous Coward · · Score: 0

    This chainsaw is too dangerous!

    How am I supposed to chop down the tree with a nail file?

  21. 99% Wrong by Anonymous Coward · · Score: 0

    There are established and well-founded rules regarding static load and fire protection safety in regulations/laws for buildings.
    The equivalent thing would be outlawing the use of C++ for anything carrying confidential/secret information. But what's reality ? Powerpoint is one of the most-used tools along with Acrobat Reader, especially in government, military and big business. So the Risk Of Being Fucked By China is being discounted against Cute Dancing Bunnies.
    Some programmers know about the risks, but the typical, experienced C++ guy has his preconceived notions about the superiority of C++ versus anything. In truth, he/she is protecting his/her long-time investment into learning C++. No rationality, no responsible behaviour whatsoever. Most programmers and of course their managers are simply Software Development Whores.

    1. Re:99% Wrong by 0123456 · · Score: 1

      The equivalent thing would be outlawing the use of C++ for anything carrying confidential/secret information.

      True. All future operating systems should be written in Ada instead of C/C++.

    2. Re:99% Wrong by colinrichardday · · Score: 1

      There are established and well-founded rules regarding static load and fire protection safety in regulations/laws for buildings.

      But none of those make buildings vandalism- and arson-proof. Builders don't have to worry too much about malice; programmers do.

    3. Re:99% Wrong by Deorus · · Score: 1

      C++ is perfectly safe if you know what you're doing. The great thing about C++ is that it supports everything without ever getting in your way. Standard containers (including std::string) are perfectly safe; if you do shit, you get an exception, not a core dump.

      C++ offers all the advantages of higher level language in a language at the same conceptual level as C, which is important for debugability, as the number of tools available to analyze, debug, and profile machine code is far greater than the number of tools available to debug, profile, and analyze byte code; and while you can claim that Java can be compiled to machine code, it differs from C or C++ in that it demands so much from its abstract machine that its own core can not function without a runtime, meaning almost all interactions with the hardware itself have to go through that runtime thus making it much harder to debug without tools specifically designed to understand the runtime.

      You can write functional, declarative, statically typed, dynamically typed, event-driven, object-oriented, reflective, and meta code using C++, but you can't do most of these using Java. You can even implement your own allocators, smart pointers with specific garbage collection algorithms, and safe containers with it (if the standard ones aren't good enough for you) without needing another language, and you can link directly with machine object code from other compiled languages as well as export your own functions into libraries usable by other programs. The only thing you can't do very well in C++ is weak typing, but Objective-C++ has that covered, too...

      The only problem with C++ are the people who do not really understand the language and approach it as if it was C with objects instead of a completely new language partially compatible with C.

  22. A Clueless American by Anonymous Coward · · Score: 0

    ..that's what you are. Just because all the "important" (ie. mostly "rich") keep drumming C,C++, Java, .net and the Microsoft/Adobe Virus APIs means nothing. Just because Mr Bill Programmer-Salesman talks of "Secure Development Lifecycle" means exactly nothing. Just because every C++ coder and their dog think that their particular code is "safe" means shit.
    Reality is - C++ is an el-cheapo solution millions of people are knowledgeable in.

    Reality is - Microsoft and Adobe are first and foremost concerned about MONEY. Security is not generating money, it costs money - so it's a nuisance to the typical software company. At least in the short run.

    Reality is, even the best C++ developers make lots of security-relevant (ie exploitable) errors, because it is so easy. Just check all the bugs in Chrome.

  23. Ah ah by Billly+Gates · · Score: 1

    Ask any MBA or beancounter. THey will gladly tell you that IT is a cost center that adds no value so there is no costs at all associated running IE 6 with no security updates after June 7th 2009, on a Tuesday that wont work with intraCrap from MegaCorp.

    It is not like any financially sensitive information is ever used on computers anyway and since it is a dollar sink there is nothing wrong with using that and switching to typewritters since after all they are just a cost. ... (... end sarcasm)
    My rant above is a serious issue. Especially for hospitals for HIPA requirements that still use IE 6 and unsupported who no updates, XP SP 2. The bean counters tell doctors what medical appropriate procedures to run too and not just how to handle IT and it drives me crazy when I contract work for them.

    The worst offenders are not that McCrappy or Symantic endpoint, but software that is 100 security updates behind! Can't get more updates because the intranet app developers are lazy and do not want to support it, or are evil and do this on purpose so your employer can buy version B for $150,000 so they can run updates again or join the rest of the world and join Windows 7.

    A patched Windows 7 office with IE 9, up to date updates and no flash or outdated java running in the internet zone, is like 300% more secure. The calls for malware go down drastically. The problem is always the MBAs and the obsession over the share price going up.

  24. Like "RSA Security" and the F-22 (and China ?) by Anonymous Coward · · Score: 0

    I am sure the Chinese Air Force likes those RSA "security" tokens, which gave them the one-time passwords to Lockheed-Martin networks and lots of juicy F-22 data.

    Boy, throw away all commercial security thingies and learn how to roll your own (e.g. use a J2ME app to perform two-factor authentication). Then you know the real risks and can keep the Chicoms out. If not, you are just a Victim.

  25. Most Importantly by Anonymous Coward · · Score: 0

    "Why can't your system display Dancing Bunnies from IdiotTube ??"

  26. TFA is another... rant by Anonymous Coward · · Score: 0

    How is crappy s/w different from the local police?

    No news here I say.

  27. Oh Boy by Anonymous Coward · · Score: 0

    Sorry for being condescending, but all you describe is already out there. AppArmor, for example.

    The problem with your post is that you view it as a Silver Bullet, which it is not. I agree that it would seriously improve security and should definitely be done. I agree that managers are fucking idiots if they don't allocate time for creating sandboxing profiles ( typically requires just a few days of engineering time),

    But at least "simple" sandboxing is not a Silver Bullet for several reasons. Imagine you are the security admin at Lockheed Martin and you duly create all these sandbox profiles. So you create a profile for this dangerous piece of crap called "Powerpoint" (e.g. using "Sandboxie"). From now on Powerpoint processes on Lockmart computers will only open *.ppt and *.pptx files. Nice. But now comes the Chinese Spearfish and extracts 1500 Powerpoints to Chengdu from Mr LockheedMartin CEO. These files contain all the summaries of the hard work of Lockheed Martin Scientists and Engineers, including key measurement data.

    So the Chicoms could not download the "raw" measurement files (say radar signatures from differen aspects to 0,1 degree accuracy), but they got all the highly secret "tips and tricks" related to controlling the signature, the type of absorbing paint used, the maintenance and operations issues. That is how powerpoint is used in a modern big business - it is used to store and communicate critical data and "know how". It contains the essence of hundreds of man-years of engineering work and that is exactly what intelligence is about - extracting knowledge, not extracting low-level data.

    So boy, go back to your "thinking zone" and come up with something vastly more complex and nuanced. And then, please integrate it with existing business workflows, consider the ergonomics of all that. Sandboxing is valuable, but it is by no means a Silver Bullet !

    1. Re:Oh Boy by ka9dgx · · Score: 1

      The AppArmor model isn't really capabilities. It's building a kind of sandbox, but of the wrong kind.

      A good model is to let the user chose what they want to allow to happen... directly. If they don't feed a file to a process, it won't be able to touch it, ever, in a capabilities based system.

      Having system administrators trying to figure out all the possible uses of a program isn't going to work, for the exact reasons you gave. The users are in a far better position to decide what they want done. A capability system allows just that, without weird random side-effects or restrictions.

    2. Re:Oh Boy by Anonymous Coward · · Score: 0

      You are retarded. Gaining access to files has fuck-all to do with whether or not powerpoint is locked down.

  28. We get to choose... by Genda · · Score: 1

    We can have a wide open no holds barred space to create anything good, bad or indifferent. Or we can lock it all down according to someone's idea of safe, fair and convenient. Under the second plan. a thousand things you are going to want to do will not be possible because they exceed the mandate of the security environment (no matter where you arbitrarily draw the line.) So you get to pick your demons. Me I like it the way it is. That's just me.

  29. HP's MPE Operating System by Anonymous Coward · · Score: 0

    ..was done in a PASCAL variant. They had lots of users who loved the stability and ease of use. Unfortunately, Unix and WNT came along, so the corporate drones killed it. Sad.

    http://en.wikipedia.org/wiki/HP_Multi-Programming_Executive

  30. You WILL Live To See by Anonymous Coward · · Score: 0

    See here:

    https://sourceforge.net/p/sappeurcompiler/code-0/2/tree/trunk/doc/manual.pdf

    This is a compiler I implemented two years ago. It is still quite rough at the edges, but I do think it could already be useful for some real projects.

    Unfortunately, the reception on the interwebs was not really positive. Programmers are fiercely loyal to whatever they know best; similar to catholic popes and religion. Most programmers are actually completely closed to rational discussion about programming tools. So maybe, yes, you won't live to see real-world, high-performance programs in a fully type safe language in your lifetime.

  31. Security gets the short stick by Anonymous Coward · · Score: 0

    You might as well blame the users while you're at it, since it's a rare client indeed who buys a system with security as their #1 priority. In fact you're lucky if security is anywhere in the top 5 choice criteria, and that's for enterprise buyers. In the retail world it's much, much worse than that.

    I've seen the RFP's. IT gets their share of criteria, and it accounts for maybe 15% of the total score. Security has to fight it out for a small portion of that 15%. It sucks but ultimately money talks and the developers/vendors/authors respond to that. Even in the FOSS world, where money isn't such a driving factor, if the audience isn't selecting software based on security, how much effort can we really expect the programmers to put into that part of the system?

  32. Java... by frankgerlach74 · · Score: 1

    The high-level ideas of Java are sound, but the implementation (or "execution" in manager-speak) has been, and still is, awful. So awful that it is now considered a security risk to have Java Web Start enabled in browsers. I also managed to crash a JVM (about a year ago) by running a PDF parser on the JVM. I am quite confident a properly crafted PDF could have taken over my user id. So, in practice, Java is highly dangerous.

  33. Proper Failure Is GOOD by frankgerlach74 · · Score: 1

    A properly failing program is vastly more secure than one which will open the gates to the confidential database. A proper exception stacktrace can usually be used to fix programming errors. Your post is actually demonstrating your security saviness. Proper programs do not "catch exceptions by random code". Unexpected exceptions should terminate the thread or maybe the whole process, depending on the circumstances. And that is the default behaviour.

  34. Also Possible: Paper And Pencil by frankgerlach74 · · Score: 1

    That's vastly more secure than CAD workstations.

  35. Idiotic Developers by Anonymous Coward · · Score: 0

    In my case, the cost of crappy security is $107,000. Thanks to our mission-critical software having CWE-732 and CWE-602 we have to move everything away from the workstation clients on to servers to secure them. All these damn users on 2003 (Because the software doesn't work on 2008/Vista/7) Terminal Servers is costing us a fortune.

  36. why not? by Chirs · · Score: 1

    for a home machine why not run a GUI?. It's not like it hurts anything.

  37. Not About Freedom by frankgerlach74 · · Score: 1

    It is not about freedom, but about the egregious laziness, ignorance and anti-professionalism on the side of the "management talent". These people are happy so spend fortunes on lawyers and to listen for hours to lawyers, but they think it professionals should better be ignored.

    1. Re:Not About Freedom by i+kan+reed · · Score: 1

      Even the companies not in the tech sector I've worked for have had massively larger IT budgets than legal budgets.

  38. And you show exactly what's the problem! by Anonymous Coward · · Score: 0

    Interestingly, the language that does this best, is also the second worst language ever invented (after PHP). In ColdFusion, if you do this:

    select * from cats where cat_name = '#catname#'

    Oh, wow. That's like PHP's mysql_real_escape_foo() and it's so wrong it hurts!

    Because to know how to "quote" something in SQL you need to know the context (e.g. am I assigning/comparing to an integer column? Am I using the quoted snippet as a name?) -- and you aren't thinking the PHP libraries (or the Cold Fusion ones) are parsing the SQL statement to find out, are you?

    But then, PHP has PDO, which kind of works. People still sell mysql_real_escape_blahblah() as the panacea.

    It's our own stupidity, my friend.

  39. So.. by Anonymous Coward · · Score: 0

    how would a capabilities-based system help in my scenario of these 1500 pptx files ?

    1. Re:So.. by ka9dgx · · Score: 1

      When you open an email, you only give it access to write to a window on the screen, and a connection to the email server. This would mean that a rogue email could at worst send out copies of itself, if it managed to confuse the reader. The process would not be able to randomly go out and open files, write them, etc.

      Lots of things get fixed when you say no by default instead of yes.

  40. Crappy underlying operating systems? by dgharmon · · Score: 1

    "Everyone these days knows that you have to double- and triple-check your code for security vulnerabilities, and make sure your servers are locked down as tight as you can. But why? Because our underlying operating systems, languages, and platforms do such a crappy job of protecting us from ourselves".

    That's not true, if the underlying Operating System is designed with build-in security, then any potential security vulnerabilities in the applications are very much mitagated and baring software bugs, the Linux security model does the job.

    --
    AccountKiller
    1. Re:Crappy underlying operating systems? by Anonymous Coward · · Score: 0

      bullshit

      The underlying OS can not stop:

      SQL Injection
      XSS
      command injection if said app is not giving proper permissions
      buffer overflows can still be exploited in userland
      etc
      etc
      etc

      Most of the successful web app attacks are apps running on Linux and Linux is not at fault for them.

      It is the shiity PHP "devs". Yes I know shitty PHP is redundant.

  41. Not true by frankgerlach74 · · Score: 1

    "avoid buffer overruns you have to do bounds-checks at run-time. But these are very expensive." In the real world, this creates a runtime overhead of about 10 to 20%. Hardly an issue compared to the security costs of a successful penetration

  42. The Only Problem With C++ by frankgerlach74 · · Score: 1

    ...is that every C++ programmer thinks he is writing "robust" code and that array bounds, safe pointers and so on are not necessary in their case. Because they are so special, of course. Reality is, people make mistakes in anything non-trivial and the bad guys will exploit these mistakes. And that includes things like the Linux kernel and Google Chrome. I don't know the situation with ::std::string, but ::std::vector::operator[]() does not check bounds and it is used millions of times in real-world code. So the STL promotes unsafe-by-default programming. Finally, C and C++ do have no proper concept of multi-threading and there are probably millions of race-condition problems waiting out there to be exploited by the Russkies and Chinese.

    1. Re:The Only Problem With C++ by Deorus · · Score: 1

      For starters, all C++ sequence containers implement .at(), which is bounds-checked. Secondly, both C11 and C++11 support threads. Third, I'd laugh my ass off if anyone even attempted to write a kernel using a safer language that doesn't implement pointers or the concepts of auto and static duration. Even C++ (which implements those concepts) is deemed unworthy of kernel-code because of the potential performance issues caused by implicit copy constructors used for type conversions, the consequences of semantically-unconstrained abstraction, and the constant need to ensure that all code is exception-safe.

      Higher-level concepts are not problem-free either, XSS, click jacking, and SQL injections are all good examples of security issues related to high-level security concepts. Yes, you can address these problems using frameworks, but in the same way you can address your safety issues in C++ using STANDARD containers and smart pointers, or even implement your own.

      Programming languages are general purpose tools, so anything that limits a programmer's ability to shoot himself in the foot, limits the language's usefulness, which is why C remains as popular as it does -- it does not get in your way and it does not hide anything from you.

      One last thing: as a user, I try avoid anything written in Java as much as possible. Not because Java can't be fast or reliable but rather because most Java programmers (like most C++ programmers) have so little understanding of the semantic implications of what they're actually doing that they end up generating horribly bloated and unstable messes. Every time I have to deal with an application written in Java, be that a servlet, applet, or stand-alone application, I immediately expect it to either crash or grind to a halt if I behave differently from what most people are expected to behave. The main reasons why Java is successful are because, unlike C++, it has always been pushed into the enterprise world by big-iron companies (Sun and Oracle) and it mimics C++, with each version being more C++-like than the previous.

    2. Re:The Only Problem With C++ by frankgerlach74 · · Score: 1

      "For starters, all C++ sequence containers implement .at(), which is bounds-checked." Why is that the safe one and not operator[]() ??
      "both C11 and C++11 support threads." But the compiler still cannot tell whether you accidentally use some global data structures or not.
      "Even C++ (which implements those concepts) is deemed unworthy" I also deem it unworthy, but for the reason that it is a portable assembler with very little compile and runtime checking as compared to other languages
      "I try avoid anything written in Java as much as possible." I do so, too and my posts are not meant to promote Java. Rather, something like a hardened Ada with Destructors. Or something like I did myself: https://sourceforge.net/projects/sappeurcompiler/

    3. Re:The Only Problem With C++ by Deorus · · Score: 1

      "For starters, all C++ sequence containers implement .at(), which is bounds-checked." Why is that the safe one and not operator[]() ??

      The only thing specified by standard C++ regarding operator[] is its semantic (a[n] <=> *(a + n)); everything beyond that is unspecified. Two versions of operator[]() (one const, another mutable) are declared for all sequence containers except std::array, which is intended to work like a raw array when one is expected while supporting an interface that makes it compatible with other C++ containers for use in generic programming (these goals are accomplished by making the raw array inside std::array the first member of the class, thus validating all implicit conversions from std::array<T, N> to T[N]). Since the standard does not specify an implementation for operator[]() beyond the aforementioned semantics, implementations are free to do whatever they wish with the edge cases. On my system (Mac OS X 10.7.4), sequence containers are extended when an out-of-bounds access is performed on a mutable sequence container using operator[](), and I agree with this implementation, not only because it makes containers safe, but also because it does so without duplicating the functionality of at().

      "both C11 and C++11 support threads." But the compiler still cannot tell whether you accidentally use some global data structures or not.

      Doing so is not the compiler's job because objects can represent all kinds of resources. For example: I can have an object representing a TCP connection, which would be unreasonable to expect a compiler to understand, and that is precisely why object-oriented programming exists, so that objects can take care of themselves.

      "Even C++ (which implements those concepts) is deemed unworthy" I also deem it unworthy, but for the reason that it is a portable assembler with very little compile and runtime checking as compared to other languages

      And that's where you're wrong. C++ is one of the strongest languages when it comes to static analysis, not only because it is a statically typed language but also because it allows you to perform static generic programming, static reflection, and meta programming IN THE LANGUAGE ITSELF. Regarding the lack of safety, you have already been proven wrong: implementations can make standard containers as "safe" as they wish, the standard provides options that are guaranteed to be safe everywhere, and nothing is stopping you from either using the standard smart pointers or implementing your own.

      "I try avoid anything written in Java as much as possible." I do so, too and my posts are not meant to promote Java. Rather, something like a hardened Ada with Destructors. Or something like I did myself: https://sourceforge.net/projects/sappeurcompiler/

      The only differences between us is that I am comfortable with a flexible language whereas you have to restrict yourself in order to feel safe, as your arguments about C++ not being safe are completely unfounded.

  43. Here's why: by Anonymous Coward · · Score: 0

    What if OS developers used the same logic: "Why should we build a secure OS if every app that runs on it is going to have blatant security holes in it?".
    The answer is that you aren't trying to make your systems impenetrable, what you are doing is trying to design it so that *WHEN* it is penetrated it won't be your fault.

     

  44. Maybe... by frankgerlach74 · · Score: 1

    but have you ever seen a manager sitting down with his most experienced software developers and system admins and tell them "let's design a security policy which is both effective and acceptable to end-users" ? Surely they shell out lots of money on IT, but all the reasoning related to security risks boil down to "we are a business and we these twenty-five plugins installed on all corporate PCs". Convenience trumps security any time, in my experience. Security is definitely not managed - it is considered a nuisance and something not really worth bothering about. A "chief security officer" will be appointed and then the subject will be ignored, when the rational thing to do would be more user education and designing security policies and processes in a way that integrate into the business processes. As opposed to obstructing them and then being circumvented by users. The underlying reason for that sad reality is a lack of management attention and serious desire to improve that aspect of the business.

  45. Yes And No by frankgerlach74 · · Score: 1

    Yes: "Well designed equipment today is much safer ... reality that industrial accidents are everyone's problem. The resulting disabilities are a tax on society." Yes. "The argument that safety is futile and no effort should be made to improve it is the voice of laziness" No: "A remote code execution exploit is a serious matter and should be accounted for in business decisions while calculating risk avoidance. " How the heck can you calculate the financial loss from malware inside your network ? It might range from the mundane to the destruction of the company, if a capable, cheaper-cost-base competitor gets the complete crown jewels. Also, you are regurgitating the Beancounter/MBA Fallacy "what you cannot quantify you cannot understand and change". We all go great lengths in terms of hygiene and use of condoms, without anybody calculating the "financial loss" from AIDS or the plague. We know it is horrible and we spend serious effort (e.g. daily dishwashing) to make sure we don't get the diseases. Also, I find it completely impossible to quantify the losses from an exploitable weakness. There are too many variables inside and outside your company to make a proper statement. All we can say is "damage might be from zero to complete financial destruction of company". Of course, you might make a more detailed statement if the exploit only matters in a specific department (e.g. only accounting uses Windows and the exploit). But still, how can you properly quantify your financial details being in the hands of your asian competitor ??

  46. Re:Yes And No / Properly Formatted by frankgerlach74 · · Score: 1

    Yes: "Well designed equipment today is much safer ... reality that industrial accidents are everyone's problem. The resulting disabilities are a tax on society."
    Yes. "The argument that safety is futile and no effort should be made to improve it is the voice of laziness"
    No: "A remote code execution exploit is a serious matter and should be accounted for in business decisions while calculating risk avoidance. "
    How the heck can you calculate the financial loss from malware inside your network ? It might range from the mundane to the destruction of the company, if a capable, cheaper-cost-base competitor gets the complete crown jewels.
    Also, you are regurgitating the Beancounter/MBA Fallacy "what you cannot quantify you cannot understand and change". We all go great lengths in terms of hygiene and use of condoms, without anybody calculating the "financial loss" from AIDS or the plague. We know it is horrible and we spend serious effort (e.g. daily dishwashing) to make sure we don't get the diseases.

  47. Really ?? by Anonymous Coward · · Score: 0

    A mainframe guy I was having a internet conversation with claimed that S/360/390 (whatever stupid name they currently use) operating systems normally don't expose this C/C++ weakness of passing around pointers to buffers. They always have the length field with the buffer, so that all routines can be securely implemented. Only with Unix and WNT came these stupid things like sprintf().

    So your "irony" might actually be close to the truth. Just don't confuse Unix with "old". Old is the mainframe stuff and I never heard of Virus scanners for these.

  48. I Doubt by Anonymous Coward · · Score: 0

    ...that this would really work properly. Because that would essentially erect an impervious border between the user-generated pptx files and the "pptx from email" files. User might want to copy a diagram or some text from "pptx from email" file into their own pptx files. They would want to store these pptx files in some local repository (such as sharepoint or SVN).

    But yes, your approach would definitely shore up security dramatically.

    Maybe a "secure rendering" and a "secure clipboard" function of the operating system could facilitate that. These facilities would accept only very simple formats (such as ASCII text or bitmap files) from the Powerpoint process which has an "pptx from email" currently opened. It would definitely kill the cut-and-pasting of nicely formatted and colored tables, but that would be IMO an acceptable price of good security. .

    The "store outside email system" issue could be fixed by tagging files, similar to the way secret information is labelled in government. A file labelled "external" would always run inside Powerpoint in the restricted fashion as described above. Only files labelled "internal-project-x" would allow for copy-pasting of files which are also labelled "internal-project-x". Copy-paste to "internal-project-y" would not work. .

    In the end, what matter is real workflows and how to secure them without forcing the user to do stupid and/or very time-consuming things. Simpleton solutions won't cut it, as they are almost always too restrictive.

    Finally I think it is very, very, very important that the security system will tell the user why some operation is not permitted. Additionally, users have to be well-trained in all aspects of that system, or they will simply hate it and try to circumvent.

    1. Re:I Doubt by ka9dgx · · Score: 1

      You doubt that it would work, but at least you're thinking about it.

      If the user gets to decide what to feed to a process at run-time, instead of the process having all of the users access the user can then be responsible for their choices, which the OS will respect. Right now we don't even have a good way to do this. (As I said, AppArmor isn't capabilities)

      Being able to even express the idea coherently is a step in the right direction towards doing something with that idea. Thanks for helping me do that.

  49. So Bigmouth by Anonymous Coward · · Score: 0

    ..how would you protect that CTO of a technology company ? This man needs access to 1500 pptx files to do his daily work, he needs to communicate by email. A single spearfish email could take over his powerpoint process and then do all kinds of reconnaissance/extraction/collection on these 1500 pptx files. Don't tell me this CTO does not need external email. That is too restrictive, as this man needs to communicate with external customers and partners. I am genuinely curious.

  50. How would that help ? by Anonymous Coward · · Score: 0

    All of your ideas will not defend against malware extracting your secret data to google mail or displaying bogus data to you. You would still enter your facebook password via a web form under the control of malware.

  51. Bad advice by Benfea · · Score: 1

    Experts say Macs will be targeted more and more in upcoming years. Low market share is no longer protecting the platform, it seems.

  52. Google Chrome ?? by Anonymous Coward · · Score: 0

    It would probably be unnecessarily clunky to ask the user before App X can access a file. Better make it like Google Chrome: The "file open" functionality is part of the operating system sandbox. When you open file fa, it will start a process PA, configure it to just have access to fa (and the file it always needs to properly function) and command it to open fa. That way a spearfish file fs cannot access any other files.

    This approach will not work for indexing engines and probably not for IDEs,though.