Google released a tool that can be used to test whether the SSL/TLS encrypted connections opened by applications or devices are vulnerable to man-in-the-middle attacks.
A man-in-the-middle (MitM) attack refers to a situation where an attacker is in a position to intercept and manipulate traffic between a client and a server. It is the kind of threat that the SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols are meant to protect against.
In practice, however, encrypted SSL/TLS connections can often be vulnerable to MitM attacks due to bad client configurations or unpatched vulnerabilities in libraries that are used by software developers to implement these protocols in their applications.
“Most platforms and devices have secure defaults, but some applications and libraries override the defaults for the worse, and in some instances we’ve seen platforms make mistakes as well,” said Chad Brubaker, an Android security engineer at Google, in a blog post. “As applications get more complex, connect to more services, and use more third party libraries, it becomes easier to introduce these types of mistakes.”
The tool created and released by Google is called nogotofail and has been used internally by the company’s engineers to find SSL/TLS implementation errors in applications for some time. It was released on GitHub Tuesday as an open source project.
Nogotofail can be deployed as a router, VPN server or proxy on a network to simulate MitM attacks against devices that establish SSL/TLS connections to the Internet. It uses deep packet inspection to discover all SSL/TLS traffic instead of just monitoring ports typically associated with the two protocols, such as port 443.
The tool includes a client component for Android and Linux systems that tells the MitM component what specific tests to run. The client is also important for tracking which applications that run on the tested systems opened certain SSL/TLS connections, something that can be hard to determine just from the MitM side.
Nogotofail can check for weaknesses like vulnerabilities in third-party SSL/TLS libraries, susceptibility to attacks that strip the SSL/TLS or STARTTLS encryption and improper certificate validation, a widespread problem in applications.
In 2012 researchers from Stanford University and the University of Texas at Austin tested non-browser software and concluded that “SSL certificate validation is completely broken in many critical software applications and libraries.”
Later that year, researchers from the Leibniz University of Hannover and Philipps University of Marburg in Germany found that 1,074 out of 13,500 popular Android applications from Google Play contained SSL code that either accepted all certificates, including self-signed ones, or accepted certificates issued for domain names different than the ones the apps connected to.
More recently, researchers from security firm IOActive tested the iOS mobile banking apps of 60 financial institutions and found that 40 percent of them did not properly validate the authenticity of digital certificates received from servers.
The discovery of flaws in SSL/TLS libraries is not uncommon either. A critical vulnerability dubbed Heartbleed reported in April in the widely used OpenSSL library triggered an unprecedented patching effort and attracted a lot of media attention. However, other serious bugs were found in SSL libraries this year as well.
In February Apple patched a critical certificate validation vulnerability in its SSL library for iOS and Mac OS X. The bug stemmed from an extra “goto fail” line in the library’s code and it’s what likely inspired the name for Google’s new tool.