无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告

安天安全研究与应急处理中心(Antiy CERT)

 

 

 

初稿完成时间:201710172200

首次发布时间:201710231200

本版更新时间:201710231200



PDF报告下载

1          概述

欧洲鲁汶大学的博士后安全研究员Mathy Vanhoef1015日披露无线网络(Wi-Fi)保护协议标准WPA2的高危漏洞[1,2]。漏洞允许在Wi-Fi范围内的攻击者监听计算机和接入点之间的Wi-Fi流量。该漏洞影响协议本身,且对WPAWPA2均有效,因此支持WPA/WPA2协议的软件或硬件均受到影响。

漏洞披露后,安天与炼石的工程师迅速响应,对该漏洞展开联合分析,形成此报告。

2          漏洞分析

WPA全名为Wi-Fi Protected Access,有WPAWPA2两个标准,是一种保护无线网络(Wi-Fi)安全的协议[3]WPA实现了IEEE 802.11i标准的大部分,是在802.11i完备之前替代WEP的过渡方案,后被WPA2取代。由于WPAWPA2均基于802.11i,因此在技术层面上几乎是相同的,主要区别在于WPA2要求支持更安全的CCMPWPAWPA2均使用802.11i中定义的四次握手,客户端(Station, STA)和接入点(Access Point, AP)通过四次握手相互验证和协商名为成对临时密钥(Pairwise Transient Key, PTK)的会话密钥。PTK通过成对主密钥(Pairwise Master Key, PMK)、AP随机数ANonceSTA随机数SNonce和双方MAC地址等计算生成,其中PMK由登录密码等双方均已知的信息计算生成。而后续正常数据加密所使用的临时密钥(Temporal KEY, TK)即派生自PTK。各密钥、参数的关系如下图所示。

2 1 四次握手中各密钥、参数关系

四次握手的过程可概括如下:

1AP发送自己的随机数ANonceSTA

2STA生成随机数SNonce,计算出PTK,并将SNonce和信息完整性校验码MIC发送给AP

3AP收到SNonce,计算出PTK(此时双方都已有PTK),将组密钥GTK加密后连同MIC发给STA

4STA收到GTK,安装PTKGTK,发送ACK确认。AP收到确认后安装PTK

2 2 四次握手过程

Vanhoef将披露的漏洞攻击命名为KRACKKey Reinstallation Attack),攻击者通过在Wi-Fi范围内利用中间人的手段对WPA/WPA2协议的四次握手交互验证的第三阶段进行攻击。此时受害者已经安装了密钥,通过中间人手段进行增量式重放攻击后,迫使受害者使用攻击之前的密钥流加密数据。鉴于WPA/WPA2为对称加密,因此可以通过简单的明文密文得到可重复利用的密钥流。攻击者一旦获得密钥流就可以对Wi-Fi流量数据解密。

2.1         利用原理

此漏洞利用的核心在于密钥重装,该模式基于WPA/WPA2协议中建立连接时的四次握手流程。在四次握手过程中,AP和客户端将会协商一个用于加密接下来通信数据的加密密钥,客户端在收到AP发来的第三次握手的信息(消息3)后会核实MIC,若正确将会安装加密密钥key,用于加密正常的数据帧,并向AP发送响应作为确认。根据协议规则,若AP无法正确接收到确认,将引发数据重传,重新发送消息3。客户端每次接收到消息3时都会重装相同的会话密钥。攻击者可利用此次握手过程,暴力增量式发送消息3,从而强制重置数据保密协议使用的增量传输数据包数(nonce)和接收重放计数器,导致密钥重用。攻击者可以通过这种方法重放、解密和/或伪造数据包。

KRACK攻击可分为4种场景:

1)客户端(受害者)接受消息3的明文重传时的密钥重装攻击;

2)受害者仅接受消息3的加密重传时的密钥重装攻击;

3)对组密钥握手攻击即时密钥安装;

4)对组密钥握手攻击延迟密钥安装。

2 3 接受消息3明文重传时执行密钥重装攻击示意图

2-3中展示了攻击者解密一个密文数据包的攻击流程。如果攻击者已知第一个发送的密文数据包的明文,则可以恢复出用于加密该明文数据的密钥流。由于四次握手协议的设计允许通过重传消息3来重装密钥PTKGTK,并重置待发送数据包的nonce值,导致客户端使用相同的密钥流加密下一个数据包,进而导致攻击者可以解密客户端发送的下一个密文数据包。

上述解密过程是基于攻击者知道第一个数据包明文这一前提,然而攻击者有时无法预知数据包中的全部字段值(比如可能存在的随机字段), 所以攻击者可能需要多次重传消息3以收集更多数据来进行解密。图2-3中仅展示了恢复一个密文数据包的攻击过程,但是攻击者可以通过多次重传并合理选择重传时机(等待客户端在重传之前发送足够多的数据),甚至通过解除对客户端的认证来迫使客户端重新执行四次握手协议,实现解密多个数据包的目的。

2 4 接受消息3明文重传时使用全0替换真实密钥攻击示意图

由于2.42.5版本的wpa_supplicantAndroid 6及以上的版本)在收到重传的消息3后对密钥重装过程的错误实现,使得在客户端接收到攻击者重传的消息3后,数据加密密钥TK被置为全0。这一错误实现极大的简化了密文恢复攻击,利用数据加密密钥为全0这个信息,攻击者不再需要已知明文条件就可以解密客户端发送的后续数据包。基于上述背景,攻击者通过中间人攻击迫使客户端改用全0的密钥之后,就可实现对客户端流量劫持,监控并篡改客户端发出的全部数据。

2.2         KRACK攻击nonce重用的密码分析

Nonce重用引发的后果与所采用的数据保密协议密切相关。三种数据保密协议TKIPCCMPGCMP所采用的数据加密算法分别为流密码RC4、认证加密算法AES-CCM和认证加密算法AES-GCM,其中AES-CCMAES-GCM的加密部分都是基于CTR模式的流式加密。即可认为TKIPCCMPGCMP三种协议均采用流式加密,即明文数据与算法生成的密钥流按比特逐位异或后得到密文数据。流式加密的问题是在密钥固定的条件下重用nonce时总会生成相同的密钥流。这一特性可以被利用来解密数据包。

2 5 CTR模式下加密过程示意图

上图展示了CTR模式下用密钥k和计数器ctr加密明文消息 的过程,其中 分别表示一个分组长度(采用AES算法时为128比特,明文消息长度并不一定是分组长度的整数倍)。注意图中没有展示CCMGCM模式中应用CTR模式进行加密时所涉及到的一些细节。正确使用的情况下,计数器ctr的值不断累加(值不重复!!)并在算法和密钥的作用下生成具有强伪随机特性的密钥流 ,则对应的密文

TKIP中基于RC4流密码的加密过程与此类似不再赘述

KRACK的攻击中,通过重放消息3能够达到迫使受害者重用nonce,导致上述加密过程中相同计数器ctr值的重复出现相同密钥相同计数器ctr条件下,生成的密钥流值相同,攻击者可据此解密数据包KeyStream表示该密钥流,P1P2表示两组明文数据,假设KeyStreamP1P2具有相同的比特长度,则两组明文对应的密文分别为

C1 = P1 ^ KeyStream

C2 = P2 ^ KeyStream

其中 ^ 表示逐比特异或操作。攻击者可以通过网络收集到密文C1C2,如果攻击者知道密文C1对应的明文P1,则可以据此恢复明文P2的信息

P2 = C2 ^ keystream = C2 ^ (P1 ^ C1)

在实际情况中,通常能找到已知内容的数据包,所以可以认为在密钥固定的条件下重用nonce时获得密文数据包可根据上述过程解密。即使已知内容的数据包确实无法获得,当对消息类型有足够的知识(比如消息为英文字符)的条件下,也可能解密还原出明文。值得注意的是,虽然nonce重用会导致密文数据包被解密,但并不导致密钥TKPTKPMKWiFi登陆密码的泄露,因此WPA2的密码体系只是被绕过,并没有被攻破。分组密码算法(AES)本身的安全性保证了即使在输入 和输出 已知的条件下,加密密钥k也不会泄露

TKIPCCMPGCMP三种数据加密协议,在数据机密性之外,还提供数据完整性保护。而重用nonce在不同的数据加密条件下在数据完整性保护方面会带来不同等级的安全隐患。

使用TKIP协议时,当解密完整的TKIP数据包之后(包括MIC字段),攻击者可进一步攻击Michael算法获得相应的MIC密钥。这是由于Michael算法本身的脆弱性导致的,在给定明文数据以及MIC值的条件下,攻击者可恢复出MIC密钥。借助恢复出的MIC密钥,攻击者可伪造该数据传输方向上的数据帧(TKIP在不同的数据传输方向上使用不同的MIC密钥)。

使用CCMP协议时,虽然有研究展示了在重用nonce条件下数据伪造攻击的可能性,但都是停留在理论层面的攻击,难以在实际中生成真正的伪造数据包,仅能执行重放攻击以及数据包解密。

使用GCMP协议时nonce重用导致的安全问题最为严重。nonce重用使得攻击者能够恢复出GCM模式中的认证密钥(H),由于GCMP协议在数据传输的两个方向上使用相同的密钥进行数据保护,这赋予了攻击者在数据传输的两个方向上均可伪造数据包的能力。作为认证加密的一种工作模式,GCM模式由CTR加密算法以及GHASH验证算法组合而成,其中CTR算法部分直接采用传递给GCM模式的密钥k进行加密,而GHASH运算所需的验证子密钥HAES算法利用密钥k加密全128比特的全0明文得到的128比特密文值。法国密码学家Joux指出当nonce重用时,攻击者可恢复出验证子密钥H的值(注意从H的值无法推算出GCM的输入密钥,这是由AES算法本身的安全性保证的)。攻击者获得H的值之后,GCMP所提供的数据完整性保护形同虚设,也因此攻击者可以伪造数据包。

总体来说,对于TKIPGCMPKRACK攻击影响极其严重,攻击者可以对数据包重放、解密和伪造。对于CCMP,虽然攻击者不能伪造,但是基于TCP/IP协议的特点,只要攻击者能够获得序列号,攻击者就可以劫持TCP流并将恶意数据注入到其中,后果同样十分严重。

3          漏洞影响及响应情况

通过此漏洞可实现解密Wi-Fi流量数据、数据包重组、TCP连接劫持、HTTP内容注入等。KRACK攻击是通用的,适用于连接或使用WPA/WPA2WiFi网络的所有类型设备。针对个人和企业网络以及所使用的任何加密套件(WPA-TKIPAES-CCMPGCMP)都有效,包括AndroidiOSWindowsLinux MacOSOpenBSD以及嵌入式和物联网(IoT)设备。尤其是Android 6及以上的版本,研究人员表示可针对Android 6系统客户端wpa_supplicant“完美攻击”,并且该攻击技术易于实现。根据安天移动安全统计数据,Android设备中Android 6系统占比约为41.9%

由于此次漏洞影响较大,范围较广,供应商纷纷发起响应或发布补丁,部分供应商响应情况见下表:

3 1 部分供应商响应情况[4]

厂商名称

官方响应

注释

最近检查

最近更新

Apple

没有官方响应,通过twitter发布非官方响应。

苹果已确认wpa2漏洞,并在最新的 beta 版本iOSmacOS tvOS watchOS中修复此漏洞。

2017-10-17

2017-10-17

Arch Linux

wpa_supplicant,hostapd

N/A

2017-10-16

2017-10-16

AVM

链接

正在调查此安全问题,并会在需要时发布更新。根据链接内容,EOMEOS产品也将更新

2017-10-17

2017-10-17

Cisco

链接

思科表示无线产品受到这些漏洞的影响

2017-10-16

2017-10-16

Debian

链接

添加修补程序来修复WPA协议漏洞(CVE-2017-13077CVE-2017-13078CVE-2017-13079CVE-2017-13080CVE-2017-13081CVE-2017-13082CVE-2017-13086 CVE-2017-13087CVE-2017-13088)。

2017-10-16

2017-10-16

Fedora

链接

固定版本:可手动安装

2017-10-17

2017-10-17

FortiNet

链接

FortiAP 5.6.1修补以下漏洞

CVE-2017-13077 CVE-2017-13078 CVE-2017-13079 CVE-2017-13080 CVE-2017-13081 CVE-2017-13082

2017-10-16

2017-10-16

FreeBSD Project

链接

基于wpa_supplicant 2.5 建议使用有线连接或安装security / wpa_supplicant端口或软件包,直到修补完成。

2017-10-16

2017-10-16

HPE Aruba

链接

N/A

2017-10-16

2017-10-16

Intel Corporation

链接

N/A

2017-10-16

2017-10-16

LineageOS

链接

N/A

2017-10-17

2017-10-17

Linux

补丁链接

wpa_supplicant 2.4及以上版本受到影响。 wpa_supplicant v2.6版本受到影响。

2017-10-16

2017-10-16

Microsoft

补丁链接

单击链接时,请接受EULA,然后再次单击该链接

2017-10-16

2017-10-16

Mikrotik

链接

上周发布了固定版本,所以如果经常升级设备,则不需要进一步的操作。

2017-10-16

2017-10-16

OpenBSD

链接

针对OpenBSD 6.16.0,已经发布了无线堆栈的勘误补丁。状态转换错误可能导致重新安装旧的WPA密钥。通过syspatch程序可以获得amd64i386平台的二进制更新。源代码补丁可以在相应的勘误页面找到。由于这会影响内核,因此在修补后将需要重启。

2017-10-16

2017-10-16

Red Hat, Inc.

此漏洞会影响Red Hat Enterprise Linux 67 LINK提供的wpa_supplicant的版本,链接

N/A

2017-10-16

2017-10-16

Sophos AP

链接

N/A

2017-10-17

2017-10-17

SUSE/openSUSE

链接

N/A

2017-10-16

2017-10-16

TP-Link

链接

N/A

2017-10-17

2017-10-17

Ubuntu

链接

Ubuntu 17.04Ubuntu 16.04 LTSUbuntu 14.04 LTS中,可以直接更新wpasupplicanthostapd

2017-10-16

2017-10-16

WatchGuard

链接

20171015 星期日:AP120,320,322,420:,版本8.3.0-657,仅云模式。

20171030日,星期一:AP300:版本2.0.0.9AP100,102,200,版本1.2.9.14AP120,320,322,420:,版本8.3.0-657,非云(GWC模式)

2017-10-16

2017-10-16

WiFi Alliance

链接

用户应参考Wi-Fi设备供应商的网站或安全建议,以确定他们的设备是否已经受到影响,并且安装可用的更新。

2017-10-16

2017-10-16

注:

如表中链接无法打开,可以从参考资料4中获取。

我们对表中Linux对应的八个补丁进行了分析,下面展示了各个补丁的作用原理。

1.         rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch

在握手阶段Reassociation-Response时避免将TK重新安装到驱动程序部分,防止密钥重装攻击。

另外,只有在TK确认已经被卸载时,才允许安装配置,且不允许重复安装(当且仅允许成功配置一次)

 


2.         rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch

跟踪当前正在使用的GTKIGTK,当接收到(可能重传)的第一次握手阶段的消息或WNM-睡眠模式响应时,如果密钥已经在使用中,则不安装新的密钥。这阻止了攻击者欺骗客户端去重置或更改与组密钥关联的序列计数器的行为。

安装igtk时:

WNM-睡眠模式响应时:

 


3.         rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch

这个补丁追踪最后配置的GTK / IGTK值,分别与EAPOL-Key帧和WNM-睡眠模式帧配合,因为当这两种不同的机制的GTK / IGTK发生变化时候,跟踪单个值不足以及时发现检测可能的密钥重新配置行为。

记录两种模式下的GTK

记录两种模式下的Igtk

4.         rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch

跟踪PTK是否已经安装到驱动程序,并且TK部分已经从内存中清除。 这样可以防止攻击者欺骗客户端来安装全零TK

5.         rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch

用于PTK rekeying的授权状态机,会在随机数生成的时候绕过authenication2状态,而直接进入之PKT-START状态,因为此时无需再次确认PMK,可能导致随机数不“随机”,或遭致其他问题。

针对此问题,当切换至PTKSTART状态时,便生成一个新的ANonce

 

6.         rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch

当成功配置TPK-TK后,禁止重新配置相同的参数至驱动。

 

7.         rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch

如果WNM-睡眠模式尚未使用,则忽略对应的WNM-睡眠模式请求。这可以避免处理意外的重传数据帧。

8.         rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch

驱动部分除非在客户端明确请求一个新的连接时才会开启一个连接事件。不过,重新配置相同的成对密钥或组密钥会导致nonce被重用的问题,因此要进行额外的检查以避免恶意攻击的发生,包括因为某种环境因素导致意外收到重传数据包的情况。

4          结论

KRACK漏洞利用主要针对WPA/WPA2的四次握手过程,没有利用AP接入点,而是针对客户端的攻击。因此,用户的路由器可能不需要更新。对于普通家庭用户,应多关注各终端设备厂商的安全公告,及时更新配置或打补丁,优先更新笔记本电脑和智能手机等客户端。

对该漏洞的利用并没有破坏密码体系本身,而是对实现过程进行了攻击,因此基本可以绕过所有的安全监控设备。利用该漏洞能够在一个良好实现的网络环境中,通过良好实现的WiFi打开攻击面,为后续攻击打开通路。

目前使用WPA2的大多数家庭和商业无线应用客户端升级相对容易,但对于数百万难以及时更新的IoT无线设备,可能造成巨大影响。请大家保持警惕,我们会持续关注相关事件并积极应对。

 

附录一:参考资料

  1. Mathy Vanhoef, Frank Piessens. Key Reinstallation Attacks
  2. https://www.krackattacks.com/

  3. Mathy Vanhoef, Frank Piessens. Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2
  4. https://papers.mathyvanhoef.com/ccs2017.pdf

  5. Wikipedia. WPA
  6. https://zh.wikipedia.org/wiki/WPA

  7. Kristate, Github. Vendor Response
  8. https://github.com/kristate/krackinfo#vendor-response-complete

 

附录二:关于安天

安天是专注于威胁检测防御技术的领导厂商。安天以提升用户应对网络空间威胁的核心能力、改善用户对威胁的认知为企业使命,依托自主先进的威胁检测引擎等系列核心技术和专家团队,为用户提供端点防护、流量监测、深度分析、威胁情报和态势感知等相关产品、解决方案与服务。

安天的监控预警能力覆盖全国、产品与服务辐射多个国家。安天将大数据分析、安全可视化等方面的技术与产品体系有效结合,以海量样本自动化分析平台延展分析师团队作业能力、缩短产品响应周期。安天结合多年积累的海量安全威胁知识库,综合应用大数据分析、安全可视化等方面经验,推出了可抵御各类已知和未知威胁的多样化解决方案。

全球超过一百家以上的著名安全厂商、IT厂商选择安天作为检测能力合作伙伴,安天的威胁检测引擎目前已为全球近十万台网络设备和网络安全设备、超过八亿部移动终端设备提供安全防护,其中安天移动检测引擎是全球首个获得AV-TEST年度奖项的中国产品,并在国际权威认证机构AV-C的2015年度移动安全产品测评中,成为全球唯一两次检出率均为100%的产品。

安天技术实力得到行业管理机构、客户和伙伴的认可,安天已连续五届蝉联国家级网络安全应急服务支撑单位资质,亦是中国国家信息安全漏洞库六家首批一级支撑单位之一。

安天是中国应急响应体系中重要的企业节点,在红色代码II、口令蠕虫、震网、破壳、沙虫、方程式、白象、魔窟等重大安全事件中,安天提供了先发预警、深度分析或系统的解决方案。

 

安天实验室更多信息请访问:

https://www.antiy.com(中文)

http://www.antiy.net(英文)

安天企业安全公司更多信息请访问:

https://www.antiy.cn

安天移动安全公司(AVL TEAM)更多信息请访问:

http://www.avlsec.com

 

 

 

微信扫描关注 安天

文章分享二维码


 

附录三:关于炼石

炼石网络是一家专注于业务应用安全与数据安全领域的创新型服务商。公司首创基于委托式安全代理技术的CASB实现模式,自主研发出CipherGateway业务应用安全网关,能够在不改变应用系统的情况下,以适配的方式,将与业务紧密结合的安全机制集成到应用系统中,为应用提供近乎于內建的安全能力,让企业以前所未有的便捷方式丰富应用系统的安全功能,从源头应对业务应用安全与数据安全风险。


炼石网络更多信息请访问:

http://www.ciphergateway.com

 

扫描二维码关注炼石网络