# KRACK

KRACK ("Key Reinstallation Attack") is a replay attack (a type of exploitable flaw) on the Wi-Fi Protected Access protocol that secures Wi-Fi connections. It was discovered in 2016 by the Belgian researchers Mathy Vanhoef and Frank Piessens of the University of Leuven. Vanhoef's research group published details of the attack in October 2017. By repeatedly resetting the nonce transmitted in the third step of the WPA2 handshake, an attacker can gradually match encrypted packets seen before and learn the full keychain used to encrypt the traffic.
The weakness is exhibited in the Wi-Fi standard itself, and not due to errors in the implementation of a sound standard by individual products or implementations. Therefore, any correct implementation of WPA2 is likely to be vulnerable. The vulnerability affects all major software platforms, including Microsoft Windows, macOS, iOS, Android, Linux, OpenBSD and others.
The widely used open-source implementation wpa_supplicant, utilized by Linux and Android, was especially susceptible as it can be manipulated to install an all-zeros encryption key, effectively nullifying WPA2 protection in a man-in-the-middle attack. Version 2.7 fixed this vulnerability.
The security protocol protecting many Wi-Fi devices can essentially be bypassed, potentially allowing an attacker to intercept sent and received data.

## Details

The attack targets the four-way handshake used to establish a nonce (a kind of "shared secret") in the WPA2 protocol. The standard for WPA2 anticipates occasional Wi-Fi disconnections, and allows reconnection using the same value for the third handshake (for quick reconnection and continuity). Because the standard does not require a different key to be used in this type of reconnection, which could be needed at any time, a replay attack is possible.
An attacker can repeatedly re-send the third handshake of another device's communication to manipulate or reset the WPA2 encryption key. Each reset causes data to be encrypted using the same values, so blocks with the same content can be seen and matched, working backwards to identify parts of the keychain which were used to encrypt that block of data. Repeated resets gradually expose more of the keychain until eventually the whole key is known, and the attacker can read the target's entire traffic on that connection.
According to US-CERT:
   "US-CERT has become aware of several key management vulnerabilities in the 4-way handshake of the Wi-Fi Protected Access II (WPA2) security protocol. The impact of exploiting these vulnerabilities includes decryption, packet replay, TCP connection hijacking, HTTP content injection, and others. Note that as protocol-level issues, most or all correct implementations of the standard will be affected. The CERT/CC and the reporting researcher KU Leuven, will be publicly disclosing these vulnerabilities on 16 October 2017."
The paper describing the vulnerability is available online, and was formally presented at the ACM Conference on Computer and Communications Security on 1 November 2017. US-CERT is tracking this vulnerability, listed as VU#228519, across multiple platforms. The following CVE identifiers relate to the KRACK vulnerability: CVE-2017-13077, CVE-2017-13078, CVE-2017-13079, CVE-2017-13080, CVE-2017-13081, CVE-2017-13082, CVE-2017-13084, CVE-2017-13086, CVE-2017-13087 and CVE-2017-13088.
Some WPA2 users may counter the attack by updating Wi-Fi client and access point device software, if they have devices for which vendor patches are available. However, vendors may delay in offering a patch, or not provide patches at all in the case of many older devices.

## Patches

Patches are available for different devices to protect against KRACK, starting at these versions:
| System | Version | Patched |
| Android | Android 5.0 and later | Android 2017-11-06 security patch level |
| ChromeOS | All | Stable channel 62.0.3202.74 |
| iOS | iOS 11 | iOS 11.1 for iPhone 7, iPad Pro 9.7 inch, and later devices; iOS 11.2 for all other supported devices |
| LineageOS | 14.1 (Android 7.1) and later | 14.1-20171016 |
| macOS High Sierra | 10.13 | macOS 10.13.1 |
| macOS Sierra | 10.12 | Security Update 2017-001 Sierra |
| OS X El Capitan | 10.11 | Security Update 2017-004 El Capitan |
| tvOS | 11 | tvOS 11.1 |
| watchOS | 4 | watchOS 4.1 |
| Windows | 7 | KB4041681 or KB4041678 |
| Windows | 8.1 | KB4041693 or KB4041687 |
| Windows | 10 | KB4042895 (initial version) KB4041689 (version 1511) KB4041691 (version 1607) KB4041676 (version 1703) Windows 10 version 1709 and later have the patch included in its release |
| Windows Server | 2008 | KB4042723 |
| Windows Server | 2012 | KB4041690 or KB4041679 |
| Windows Server | 2016 | KB4041691 |
| Ubuntu Linux | 14.04 LTS, 16.04 LTS, 17.04 | Updates as of October 2017 |
| Blackberry 10 | 10.3.3 | 10.3.3.3049 |

## Workarounds

In order to mitigate risk on vulnerable clients, some WPA2-enabled Wi-Fi access points have configuration options that can disable EAPOL-Key frame re-transmission during key installation. Attackers cannot cause re-transmissions with a delayed frame transmission, thereby denying them access to the network, provided TDLS is not enabled. One disadvantage of this method is that, with poor connectivity, key reinstallation failure may cause failure of the Wi-Fi link.

## Continued vulnerability

In October 2018, reports emerged that the KRACK vulnerability was still exploitable in spite of vendor patches, through a variety of workarounds for the techniques used by vendors to close off the original attack.