什么是KRACK?
根据比利时安全研究人员Mathy Vanhoef在论文《Key Reinstallation Attacks:Forcing Nonce Reuse in WPA2》中指出,利用WPA/WPA2协议协议层中存在的逻辑缺陷,能够触发密钥的重安装,可能使中间人攻击者获得解密无线数据包的能力。
发布漏洞的论文
而据通用漏洞披露网站(CVE)标识的KRACK漏洞可达10几个,如下列表,实际上这十几个漏洞均指向“密钥重装攻击”。
以下为此次漏洞相关的CVE编号:
CVE-2017-13077: 在四次握手中重装成对加密密钥(PTK-TK)
CVE-2017-13078: 在四次握手中重装组密钥(GTK)
CVE-2017-13079: 在四次握手中重装完整组密钥(IGTK)
CVE-2017-13080: 在组密钥握手中重装组密钥(GTK)
CVE-2017-13081: 在组密钥握手中重装完整组密钥(IGTK)
CVE-2017-13082: 接受重新传输的快速BSS切换(FT)重新关联请求,处理的同时重装成对加密密钥(PTK-TK)
CVE-2017-13084: 在PeerKey握手中重装STK密钥
CVE-2017-13086: 在TDLS(Tunneled Direct-Link Setup,通道直接链路建立)握手中重装TDLS PeerKey(TPK)
CVE-2017-13087: 处理无线网络管理(WNM)休眠模式响应帧时重装组密钥(GTK)
CVE-2017-13088: 处理无线网络管理(WNM)休眠响应帧时重装完整组密钥(IGTK)
通过分析,能够发现这类安全缺陷存在于 WiFi 标准本身,而非特定某些产品或者实现方案中。本质上,为了保证通信安全,一个密钥只应该安装和使用一次,而WPA2却没有保障这一点。
此外,论文中的POC(Proof of Concept,概念验证),对一部 Android 手机执行了一次 KRACK。在本次演示中显示,攻击者有能力对受害者传输的全部数据进行解密。对于攻击方而言,这一攻击方式非常易于实现,因为Android 以及 Linux 会在攻击者的引导下(重新)安装一条全零加密密钥。
论文也指出,在攻击其他设备时(无全零加密密钥漏洞的设备),虽然解密全部数据包难度极大,但攻击者仍然有能力解密相当一部分数据包。实际上,论文作者承认,他自己还没有这部分攻击的POC。