GnuTLS certificate verification vulnerability announced (CVE-2014-0092)
"It was discovered that GnuTLS did not correctly handle certain errors that could occur during the verification of an X.509 certificate, causing it to incorrectly report a successful verification. An attacker could use this flaw to create a specially crafted certificate that could be accepted by GnuTLS as valid for a site chosen by the attacker."
[+] [-] tptacek|12 years ago|reply
https://www.gitorious.org/gnutls/gnutls/commit/6aa26f78150cc...
Uninitialized "result" variable? Any time the code hits one of those "cleanup" gotos, it's probably returning nonzero unexpectedly?
Later: @filcab on Twitter points out the much dumber issue, which is that if issuer_version is < 0, the function returns issuer_version and not zero. Ow.
(Who uses GnuTLS?)
[+] [-] dfc|12 years ago|reply
I had forgotten about libcurl3-gnutls. There are a lot of things that depend on the libcurl3-gnutls, that list is long and distinguished. But I feel a little icky listing things without actually verifying they are affected. Just because they depend on the libs does not mean they use the bad code in the lib.
If you want to see what depends on libgnutls26 or libcurl3-gnutls in debian:
The --installed filter selects only those things that you have installed that depend on X: Scoreboard:[+] [-] sanxiyn|12 years ago|reply
[+] [-] est|12 years ago|reply
According to this https://en.wikipedia.org/wiki/GnuTLS
Apache httpd (configurable), GNOME, wireshark
[+] [-] mike-cardwell|12 years ago|reply
[+] [-] vdm|12 years ago|reply
People who want IPv6, DTLS, decent cli tools (gnutls-cli), pkcs11.
https://lwn.net/Articles/486369/
[+] [-] cjg_|12 years ago|reply
[+] [-] illumen|12 years ago|reply
Good on them for looking for similar errors in their own code. Thanks Redhat, for the audit, and for making the internet safer!
This is a win for Free software (and OSS), since the history of the bug can be traced, and outside developers can audit it. We still don't know how the bug got in there with the Apple bug - since the repository is not open.
[+] [-] stephenr|12 years ago|reply
GNUTLS has a (using your words) "similar" bug in the wild for more than 13 YEARS, and its nothing but praise because "they audited the code"?
[+] [-] lawnchair_larry|12 years ago|reply
[+] [-] midas007|12 years ago|reply
https://twitter.com/kaepora/status/440687403012227073
[+] [-] zvrba|12 years ago|reply
IMO, C is no longer suitable as a systems programming language. It has stopped being that a long time ago, and its only value is ABI stability. (COM and similar technologies work with C++ and other languages, so C is unnecessary even for that purpose.)
[+] [-] illumen|12 years ago|reply
These are genuine questions, it would be great to hear your answers about these things :)
[+] [-] yetfeo|12 years ago|reply
Neither is C++. People writing new systems level code should seriously consider safer languages. ATS, Rust, Mercury, OCaml, SML, and many others.
[+] [-] simias|12 years ago|reply
Maybe C++ is better suited, maybe it isn't. I don't care. It's not the problem here.
The problem is poor test coverage and code auditing. You could rewrite it in prolog for all I care, it doesn't address this core issue. Don't miss the forest for the trees.
[+] [-] jmnicolas|12 years ago|reply
"GnuTLS is a secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple C language application programming interface (API) to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, OpenPGP and other required structures. It is aimed to be portable and efficient with focus on security and interoperability."
from : http://www.gnutls.org/
[+] [-] lawnchair_larry|12 years ago|reply
[+] [-] rkangel|12 years ago|reply
The "goto fail" pattern seems pretty common though - I was wondering what it had in its favour apart from being a easier to type (which would also be true of "not checking for errors" for example).
[+] [-] mpyne|12 years ago|reply
Like any other design pattern (C or otherwise) it's easy to misuse or abuse and it's not suited to every combination of library usage.
[+] [-] computer|12 years ago|reply
Edit: See https://www.gitorious.org/gnutls/gnutls/blame/6aa26f78150ccb...
[+] [-] blueskin_|12 years ago|reply
[+] [-] rweir|12 years ago|reply