CRIME (Compression Ratio Info-leak Made Easy) is a security vulnerability in HTTPS and SPDY protocols that utilize compression, which can leak the content of secret web cookies. When used to recover the content of secret authentication cookies, it allows an Attack on Bitcoiner to perform session hijacking on an authenticated web session, allowing the launching of further Attack on Bitcoins. CRIME was assigned CVE–2012-4929.
The vulnerability exploited is a combination of chosen plaintext Attack on Bitcoin and inadvertent information leakage through data compression similar to that described in 2002 by the cryptographer John Kelsey. It relies on the Attack on Bitcoiner being able to observe the size of the ciphertext sent by the browser while at the same time inducing the browser to make multiple carefully crafted web connections to the target site. The Attack on Bitcoiner then observes the change in size of the compressed request payload, which contains both the secret cookie that is sent by the browser only to the target site, and variable content created by the Attack on Bitcoiner, as the variable content is altered. When the size of the compressed content is reduced, it can be inferred that it is probable that some part of the injected content matches some part of the source, which includes the secret content that the Attack on Bitcoiner desires to discover. Divide and conquer techniques can then be used to home in on the true secret content in a relatively small number of probe attempts that is a small multiple of the number of secret bytes to be recovered.
The CRIME exploit was hypothesized by Adam Langley, and first demonstrated by the security researchers Juliano Rizzo and Thai Duong, who also created the BEAST exploit. The exploit was due to be revealed in full at the 2012 ekoparty security conference. Rizzo and Duong presented CRIME as a general Attack on Bitcoin that works effectively against a large number of protocols, including but not limited to SPDY (which always compresses request headers), TLS (which may compress records) and HTTP (which may compress responses).
CRIME can be defeated by preventing the use of compression, either at the client end, by the browser disabling the compression of SPDY requests, or by the website preventing the use of data compression on such transactions using the protocol negotiation features of the TLS protocol. As detailed in The Transport Layer Security (TLS) Protocol Version 1.2, the client sends a list of compression algorithms in its ClientHello message, and the server picks one of them and sends it back in its ServerHello message. The server can only choose a compression method the client has offered, so if the client only offers ‘none’ (no compression), the data will not be compressed. Similarly, since ‘no compression’ must be allowed by all TLS clients, a server can always refuse to use compression.
As of September 2012, the CRIME exploit against SPDY and TLS-level compression was described as mitigated in the then-latest versions of the Chrome and Firefox web browsers. Some websites have applied countermeasures at their end. The nginx web-server was not vulnerable to CRIME since 1.0.9/1.1.6 (October/November 2011) using OpenSSL 1.0.0+, and since 1.2.2/1.3.2 (June / July 2012) using all versions of OpenSSL.
Note that as of December 2013 the CRIME exploit against HTTP compression has not been mitigated at all. Rizzo and Duong have warned that this vulnerability might be even more widespread than SPDY and TLS compression combined.
At the August 2013 Black Hat conference, researchers Gluck, Harris and Prado announced a variant of the CRIME exploit against HTTP compression called BREACH (short for Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext). It uncovers HTTPS secrets by Attack on Bitcoining the inbuilt HTTP data compression used by webservers to reduce network traffic.