Bug allows attackers to issue invalid certificates, but is difficult to exploit and only affects OpenSSL versions released since last month.
Today, OpenSSL released a fix for a new “high-severity” vulnerability that could enable man-in-the-middle attackers to impersonate a certificate authority, issue invalid certs, trick applications into treating the invalid cert like a legitimate one, and intercept or modify “secure” communications. The vulnerability, CVE-2015-1793, impacts any application that verifies certificates, including SSL/TLS/DTLS clients and servers.
Sounds bad, but the bug only affects OpenSSL versions 1.0.1n, 1.0.1o, 1.0.2b, and 1.0.2c, the oldest of which was released in June. No exploits have been reported so far, and security researchers say that exploitation would not be easy.
CVE-2015-1793 is an alternative chains certificate forgery bug. As the advisory explains:
- During certificate verification, OpenSSL (starting from version 1.0.1n and 1.0.2b) will attempt to find an alternative certificate chain if the first attempt to build such a chain fails. An error in the implementation of this logic can mean that an attacker could cause certain checks on untrusted certificates to be bypassed, such as the CA flag, enabling them to use a valid leaf certificate to act as a CA and “issue” an invalid certificate.
Users of 1.0.1n /1.0.1o have been advised to upgrade to 1.0.1p and users of 1.0.2b/1.0.2c have been advised to upgrade to 1.0.2d.
Although the vulnerability could be nasty, experts say it is not in the same category of other recent SSL vulnerabilities like Heartbleed and FREAK. First, because it requires that the attacker already have a certain degree of access to the target.
According to Chris Eng, vice-president of research for Veracode, exploiting CVE-2015-1793 “is not quick or easy, making it nowhere near as serious as Heartbleed. For starters, an attacker can’t simply directly attack a vulnerable server due to the nature of the vulnerability.
“Going after an individual is also challenging,” Eng says, “since the major browsers — Chrome, Firefox, IE — don’t use OpenSSL. Even if a user with a vulnerable niche browser were to be targeted, the culprit would have to first deploy a man-in-the-middle (MitM) attack to get access to the browser itself. From there, they would need to serve a forged certificate to the browser directly.”
“This vulnerability is only useful to an active attacker who is already capable of performing a man-in-the-middle (MITM) attack, either locally or upstream from the victim,” Tod Beardsley of Rapid7 wrote today. “This limits the feasibility of attacks to actors who are already in a privileged position on one of the hops between the client and the server, or locally on the same LAN and can impersonate DNS servers or gateway routers. In short, the vulnerability is not useful for passive attacks, or for widespread, untargeted attacks.”
Further, the scope of the attack is narrow.
“Since the bug only affects a few OpenSSL versions that were released in June 2015,” says Eng, “major operating systems like RHEL, Ubuntu and CentOS are not vulnerable since they hadn’t yet incorporated the problematic updates at time of release.”
“A certificate validation flaw in a TLS library largely affects only clients,” says Ivan Ristic, director of engineering at Qualys. “Servers need certificate validation only when mutual authentication is enabled, which is a minor use case. … there’s certainly lots of server-type tools that might use OpenSSL for client operations. For them, this vulnerability is potentially significant, but attackers would need to exploit them on a case-by-case basis. As such, this is nowhere near Heartbleed.”
“To be clear,” says Eng, “this is a bad vulnerability and a nice find by the BoringSSL team; however, the overall impact is expected to be minimal.”