Slashdot Mirror


Bug In the GnuTLS Library Leaves Many OSs and Apps At Risk

New submitter williamyf writes "According to this article at Ars Technica, '[A] bug in the GnuTLS library makes it trivial for attackers to bypass secure sockets layer (SSL) and Transport Layer Security (TLS) protections available on websites that depend on the open source package. Initial estimates included in Internet discussions such as this one indicate that more than 200 different operating systems or applications rely on GnuTLS to implement crucial SSL and TLS operations, but it wouldn't be surprising if the actual number is much higher. Web applications, e-mail programs, and other code that use the library are vulnerable to exploits that allow attackers monitoring connections to silently decode encrypted traffic passing between end users and servers.' The coding error may have been present since 2005."

9 of 231 comments (clear)

  1. We all knew it was coming... by neiras · · Score: 5, Informative

    From February 16 2008: Howard Chu of OpenLDAP: GnuTLS Considered Harmful

    Looking across more of their APIs, I see that the code makes liberal use of strlen and strcat, when it needs to be using counted-length data blobs everywhere. In short, the code is fundamentally broken; most of its external and internal APIs are incapable of passing binary data without mangling it. The code is completely unsafe for handling binary data, and yet the nature of TLS processing is almost entirely dependent on secure handling of binary data.

    Incredible that GnuTLS is used anywhere at all. It's just mind boggling.

    1. Re:We all knew it was coming... by sk999 · · Score: 4, Informative

      Just downloaded the latest patched source code. Here's the summary:

      find . -name '*.c' | xargs grep strlen | wc -l
      522

      find . -name '*.c' | xargs grep strcat | wc -l
      44

      Just as flawed as ever.

  2. Severe, and yet not severe. by Frobnicator · · Score: 3, Informative

    The bug requires a carefully-crafted certificate. That certificate will verify as valid and trusted when it should not be. The connection will still be secure, it will just be with an untrusted person.

    So basically it allows a very dedicated attacker to forge a cert and become a MitM attack.

    We all know governments have done this for years. It is widely known that root CA certificates have been violated by spy agencies. A few searches on Google will show bunches of news stories where attackers (all types, government attackers, ID theft attackers, etc) have made fake certificates, abused the CA model, and engaged in similar MitM attacks to what this allows.

    SSL/TLS communications are just as secure as they always were. If you have personally verified and trusted the certificates the attack wouldn't work, it is only when your trust model allows a cert that you don't personally trust to be used in authentication, and even then it still allows a secure connection but to a wrongly-trusted individual.

    The flaw is the trust model and using a cert that you don't personally trust to be valid, which is a well-known issue.

    --
    //TODO: Think of witty sig statement
  3. Re:Different Software - Same Problem by Desler · · Score: 2, Informative

    No the issue was with conditionals and braces. The same issue would have happened even if it were two return statements .

  4. Re:Different Software - Same Problem by BasilBrush · · Score: 3, Informative

    No the issue was with conditionals and braces. The same issue would have happened even if it were two return statements .

    And a return statement before the end of a function is essentially a goto. A language that takes the step to rule out gotos should also not allow early returns.

  5. Re:Waiting for Microsoft's "Goto Fail" by Anonymous Coward · · Score: 3, Informative

    It was a bug in multiple implementations of TLS including OpenSSL, NSS, and Microsoft's thing because they didn't expect cert authorities to give out certs with null bytes in the CN field.

  6. Re:Different Software - Same Problem by BasilBrush · · Score: 3, Informative

    Yeah, force people to write a big pile of nested bracket spaghetti...

    1. "nested brackets" (blocks) are by definition not spaghetti. Spaghetti is exclusively the result of gotos and their control equivalents (like the early return).

    2. Nested blocks are refactorable into smaller functions. That's the way to cut them down to size, not to use gotos.

    I mean really! People still trying to argue with structured code in 2014! You'd think it was still the 1980s.

  7. Re:AHAHAHAHAH by bonch · · Score: 5, Informative

    The bug was found due to observed behavior, not due to a code review.