A Turkish grad student has devised a serious, real-world attack on Twitter that targeted a recently discovered vulnerability in the secure sockets layer protocol.
The exploit by Anil Kurmus is significant because it successfully targeted the so-called SSL renegotiation bug to steal Twitter login credentials that passed through encrypted data streams. When the flaw surfaced last week, many researchers dismissed it as an esoteric curiosity with little practical effect.
For one thing, the critics said, the protocol bug was hard to exploit. And for another, they said, even when it could be targeted, it achieved extremely limited results. The skepticism was understandable: While attackers could inject a small amount of text at the beginning of an authenticated SSL session, they were unable to read encrypted data that flowed between the two parties.
Despite those limitations, Kurmus was able to exploit the bug to steal Twitter usernames and passwords as they passed between client applications and Twitter's servers, even though they were encrypted. He did it by injecting text that instructed Twitter's application protocol interface to dump the contents of the web request into a Twitter message after they had been decrypted.
"My point is I think that it's not so hard to make it work," said Kurmus, who lives in Zurich and recently completed his masters thesis at the Eurecom Institute. "Maybe some other people did the same thing and did not make it public, so this is why I think it's important that people would take this bug more seriously."
Twitter proved an ideal platform to carry out the attack for several reasons. First, every request sent over the microblogging site includes the account holder's username and password. Second, the site's API made it easy to post the contents of the intercepted data stream into a message that an attacker could then retrieve.
Finally, many Twitter users send and receive messages using third-party applications. Many of those programs ignore error pages like those that would have resulted from Kurmus's attack, preventing victims from knowing anything was amiss.
Twitter's security team closed the hole earlier this week.
The flaw in the transport layer security protocol was discovered by a researcher from PhoneFactor, a provider of two-factor authentication services. It allows man-in-the-middle attackers to insert text at the beginning of an SSL stream each time a session is negotiated. The vulnerability stems from the ability for either party in an SSL transaction to renegotiate the session, usually so one can refresh its cryptographic keys.
Members of an industry-wide consortium had been meeting in secret since late September to hash out a fix that will be rolled into thousands of individual pieces of hardware and software that implement the TLS protocol. The bug became public when it was disclosed by a researcher not involved in the project. So far, OpenSSL is the only provider that is close to releasing a patch, according to this status page.
In the interim, websites that want to protect themselves can simply follow Twitter's example and disable renegotiation.
To be sure, Kurmus's attack only worked because Twitter's API allowed him to post the captured data steam to a tweet that he was then able to retrieve. But it's not a stretch that variations on that attack that steal authentication cookies would work on webmail services and other websites that transmit messages, researchers said.
"It's likely that other websites would still be vulnerable," said Ivan Ristic, a London-based security expert who specializes in SSL. "Any site that allows people to publish messages or posts or send email or any sort of information can potentially be abused in this way." ®
This story was updated to correct Kurmus's nationality.