Security
Holes discovered in SSL certificate validation
A stinging indictment of the state of SSL client applications was recently published as part of the Proceedings from the ACM Computer and Communications Security (CCS) conference. The six authors of the paper (three each from Stanford and The University of Texas) describe testing that certainly should have been done as part of the application development process, but clearly wasn't. The problem stems partly from the libraries that provide SSL certificate verification, because developers are not using them properly. By and large the low-level library cryptographic protocol implementations are fine, the authors found, but the APIs are designed so poorly that developers commonly misuse them.
The paper
[PDF] is entitled "The Most Dangerous Code in the World:
Validating SSL Certificates in Non-Browser Software" and lives up to that
label. It is truly an eye-opening read. The researchers simulated
man-in-the-middle attacks using a combination of
self-signed and invalid SSL certificates along with a valid certificate for
the amusing AllYourSSLAreBelongTo.us domain to observe the effects
on various applications. The observations led to the overall conclusion: "SSL certificate validation is completely broken in many critical software applications and libraries
".
The researchers used Windows and Ubuntu laptops, a Nexus One smartphone, and an iPad 2 as clients for their testing. A second Ubuntu system running custom Java and C proxies, as well as the Fiddler web debugging proxy, served as the man in the middle. As they noted, the kind of attack that can be launched from the proxies is precisely what SSL is meant to thwart—their testing did not go beyond what an active man in the middle could do:
What they found was client applications that largely (or completely) accepted various kinds of invalid certificates and blindly sent private information (cookies, authentication information, credit card numbers) over an unsecured link. In many cases, the proxies could make the actual SSL connection to the remote server and funnel the data along—while surreptitiously storing the data away for (ab)use at a later time.
The paper gives plenty of examples of where the applications go wrong. Much of it can be blamed on bad library APIs, they said, in essentially all of the low-level SSL libraries (OpenSSL, GnuTLS, JSSE, CryptoAPI, etc.):
While that is certainly a problem, the application authors do bear some of the responsibility as well. It is not difficult to test an application against a few types of bad certificates. Because of the complexity of the APIs, developers should probably have been more wary that they might have made a mistake. Given that there is some kind of security requirement for the application (why use SSL otherwise?), it would seem prudent to verify proper functioning. Using a well-tested, industry-standard library is certainly an important piece of the puzzle, but there is more to it than just that.
There is also the problem of higher-level libraries perched atop OpenSSL, et al. The researchers found that libraries like Apache HttpClient, cURL, and the PHP and Python SSL libraries all had flaws in certificate validation. In fact, Python's urllib, urllib2, and httplib documentation warns that no certificate checking is done by the libraries, which evidently doesn't stop "high security" applications from still using them. One of the examples shows how this can all go awry:
These kinds of errors would almost be comical, if they weren't so serious. While it may sound difficult for attackers to position themselves "in the middle", the prevalence of wireless networking these days makes it easier. Taking over an access point (or just running a hostile one as "Free Airport WiFi", say) puts an attacker squarely in the middle. Users that are running the vulnerable applications over a link to a bad access point are susceptible to many kinds of attacks. Compromise of home routers is another possibility. Obviously, malware running upstream in the wired internet is equally dangerous (if harder to pull off).
The researchers conclude the article with recommendations for both application and SSL library developers. For the most part, they are pretty common-sense suggestions (do test your application, don't have multiple inconsistent error reporting mechanisms, etc.) that could certainly apply more widely than just SSL applications and libraries. Obviously, they could not test each and every non-browser SSL-using client (or even all of the SSL client libraries) out there, but the list of vulnerable components from the abstract is rather astonishing:
Perhaps the most distressing piece of this research is the appearance—at least—that developers are being pretty cavalier about checking the security baked into their supposedly "high security" applications. Beyond that, it is amazing that payment processors who are dealing with credit cards (and, importantly, credit card fraud) have seemingly not been very diligent about the code they distribute to their customers. All in all, this research shows that even "secure" applications and libraries often skimp on important verification testing—a seriously sad state of affairs.
Brief items
Security quotes of the week
Rooted with nothing but the remote control it came with.
New vulnerabilities
cgit: code execution
| Package(s): | cgit | CVE #(s): | CVE-2012-4465 | ||||||||||||||||
| Created: | October 31, 2012 | Updated: | November 28, 2012 | ||||||||||||||||
| Description: | From the CVE entry:
Heap-based buffer overflow in the substr function in parsing.c in cgit 0.9.0.3 and earlier allows remote authenticated users to cause a denial of service (crash) and possibly execute arbitrary code via an empty username in the "Author" field in a commit. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
dokuwiki: path disclosure
| Package(s): | dokuwiki | CVE #(s): | CVE-2011-3727 CVE-2012-3354 | ||||||||||||||||||||
| Created: | October 30, 2012 | Updated: | April 9, 2013 | ||||||||||||||||||||
| Description: | From the Red Hat bugzilla [1, 2]:
A full path disclosure flaw was found in the way DokuWiki, a standards compliant, simple to use Wiki, performed sanitization of HTTP POST 'prefix' input value prior passing it to underlying PHP substr() routine, when the PHP error level has been enabled on the particular server. A remote attacker could use this flaw to obtain full path location of particular requested DokuWiki page by issuing a specially-crafted HTTP POST request. (CVE-2012-3354) DokuWiki 2009-12-25c allows remote attackers to obtain sensitive information via a direct request to a .php file, which reveals the installation path in an error message, as demonstrated by lib/tpl/index.php and certain other files. (CVE-2011-3727) | ||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||
drupal7: code execution
| Package(s): | drupal7 | CVE #(s): | |||||||||
| Created: | October 29, 2012 | Updated: | October 31, 2012 | ||||||||
| Description: | From the Drupal advisory:
A bug in the installer code was identified that allows an attacker to re-install Drupal using an external database server under certain transient conditions. This could allow the attacker to execute arbitrary PHP code on the original server. | ||||||||||
| Alerts: |
| ||||||||||
exim4: arbitrary code execution
| Package(s): | exim4 | CVE #(s): | CVE-2012-5671 | ||||||||||||||||||||||||||||||||
| Created: | October 26, 2012 | Updated: | November 1, 2012 | ||||||||||||||||||||||||||||||||
| Description: | From the Debian advisory: It was discovered that Exim, a mail transport agent, is not properly handling the decoding of DNS records for DKIM. Specifically, crafted records can yield to a heap-based buffer overflow. An attacker can exploit this flaw to execute arbitrary code. | ||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||
java: multiple unspecified vulnerabilities
| Package(s): | OpenJDK | CVE #(s): | CVE-2012-5078 CVE-2012-5080 CVE-2012-5082 | ||||
| Created: | October 25, 2012 | Updated: | October 31, 2012 | ||||
| Description: | From the CVE entries: CVE-2012-5078: Unspecified vulnerability in the JavaFX component in Oracle Java SE JavaFX 2.2 and earlier allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors. CVE-2012-5080: Unspecified vulnerability in the JavaFX component in Oracle Java SE JavaFX 2.2 and earlier allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors. CVE-2012-5082: Unspecified vulnerability in the JavaFX component in Oracle Java SE JavaFX 2.2 and earlier allows remote attackers to affect availability via unknown vectors. | ||||||
| Alerts: |
| ||||||
kdelibs: multiple vulnerabilities
| Package(s): | kdelibs | CVE #(s): | CVE-2012-4512 CVE-2012-4513 | ||||||||||||||||||||||||||||||||||||||||
| Created: | October 31, 2012 | Updated: | February 28, 2013 | ||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory:
A heap-based buffer overflow flaw was found in the way the CSS (Cascading Style Sheets) parser in kdelibs parsed the location of the source for font faces. A web page containing malicious content could cause an application using kdelibs (such as Konqueror) to crash or, potentially, execute arbitrary code with the privileges of the user running the application. (CVE-2012-4512) A heap-based buffer over-read flaw was found in the way kdelibs calculated canvas dimensions for large images. A web page containing malicious content could cause an application using kdelibs to crash or disclose portions of its memory. (CVE-2012-4513) | ||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||
kernel: information leak
| Package(s): | kernel | CVE #(s): | CVE-2012-0957 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | October 29, 2012 | Updated: | November 6, 2012 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla:
The uname() syscall since 3.0 with the UNAME26 personality leaks kernel stack memory contents. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
libqt4: CRIME attack
| Package(s): | libqt4 | CVE #(s): | CVE-2012-4929 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | October 31, 2012 | Updated: | November 12, 2014 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the CVE entry:
The TLS protocol 1.2 and earlier, as used in Mozilla Firefox, Google Chrome, and other products, can encrypt compressed data without properly obfuscating the length of the unencrypted data, which allows man-in-the-middle attackers to obtain plaintext HTTP headers by observing length differences during a series of guesses in which a string in an HTTP request potentially matches an unknown string in an HTTP header, aka a "CRIME" attack. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mozilla: multiple vulnerabilities
| Package(s): | firefox, thunderbird, xulrunner, seamonkey | CVE #(s): | CVE-2012-4194 CVE-2012-4195 CVE-2012-4196 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | October 29, 2012 | Updated: | November 8, 2012 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory:
Multiple flaws were found in the location object implementation in Firefox. Malicious content could be used to perform cross-site scripting attacks, bypass the same-origin policy, or cause Firefox to execute arbitrary code. (CVE-2012-4194, CVE-2012-4195, CVE-2012-4196) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
optipng: use after free
| Package(s): | optipng | CVE #(s): | |||||
| Created: | October 31, 2012 | Updated: | October 31, 2012 | ||||
| Description: | From the optipng changelog:
Version 0.7.3 fixed a use-after-free vulnerability in the palette reduction code. This vulnerability was accidentally introduced in version 0.7. Version 0.7.4 fixed the previous fix, which failed to fix the option -fix. (Thanks to Gynvael Coldwind and Mateusz Jurczyk for the report.) | ||||||
| Alerts: |
| ||||||
python-django: information disclosure
| Package(s): | python-django | CVE #(s): | CVE-2012-4520 | ||||||||||||||||||||||||||||||||||||||||
| Created: | October 30, 2012 | Updated: | March 8, 2013 | ||||||||||||||||||||||||||||||||||||||||
| Description: | From the Mageia advisory:
The Host header parsing in Django 1.3 and Django 1.4 -- specifically, django.http.HttpRequest.get_host() -- was incorrectly handling username/password information in the header. Using this, an attacker can cause parts of Django -- particularly the password-reset mechanism -- to generate and display arbitrary URLs to users. | ||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||
request-tracker: multiple vulnerabilities
| Package(s): | request-tracker3.8 | CVE #(s): | CVE-2012-4730 CVE-2012-4732 CVE-2012-4734 CVE-2012-4735 CVE-2012-4884 | ||||||||||||
| Created: | October 29, 2012 | Updated: | November 8, 2012 | ||||||||||||
| Description: | From the Debian advisory:
CVE-2012-4730: Authenticated users can add arbitrary headers or content to mail generated by RT. CVE-2012-4732: A CSRF vulnerability may allow attackers to toggle ticket bookmarks. CVE-2012-4734: If users follow a crafted URI and log in to RT, they may trigger actions which would ordinarily blocked by the CSRF prevention logic. CVE-2012-4735: Several different vulnerabilities in GnuPG processing allow attackers to cause RT to improperly sign outgoing email. CVE-2012-4884: If GnuPG support is enabled, authenticated users attackers can create arbitrary files as the web server user, which may enable arbitrary code execution. | ||||||||||||||
| Alerts: |
| ||||||||||||||
rtfm: privilege escalation
| Package(s): | rtfm | CVE #(s): | CVE-2012-4731 | ||||
| Created: | October 29, 2012 | Updated: | October 31, 2012 | ||||
| Description: | From the Debian advisory:
It was discovered that RTFM, the FAQ manager for Request Tracker, allows authenticated users to create articles in any class. | ||||||
| Alerts: |
| ||||||
Page editor: Jake Edge
Next page:
Kernel development>>
