欢迎光临散文网 会员登陆 & 注册

WiFi协议又一个安全漏洞

2023-04-02 14:14 作者:stonehat  | 我要投稿

一大早起来,看到一个视频,标题是“WIFI协议曝漏洞,无线网络不再安全【黑客新闻】”。嗯,虽然明白是标题党(WiFi就没安全过),但还是成功吸引了我这个资浅的前网络安全从业人员的兴趣。看完视频后,云里雾里的,不清楚到底是个什么漏洞,突然就拍脑袋决定浪费一个周日上午,仔细研究一下。

额,首先是找原始论文。嗯,说实话,工作后,自己的技能里,提升最大的,就是找英文文献——国内的新闻,一般都是翻译的外文新闻,而且不放原文链接。所以,一般要找的话,先要找到英文版的新闻,再在里面翻论文的标题或链接——国外的记者其实也很多不放这些东西的,哈哈。

在这篇文章里顺利了找到了链接:

WiFi protocol flaw allows attackers to hijack network traffic (bleepingcomputer.com)

论文链接:

usenix2023-wifi.pdf (mathyvanhoef.com)

先看了下这个Bill Toulas写的报导,很欣慰,比起其他几篇新闻,这篇里对技术细节有一些描述,大致理解了下原理和过程,如下:

原理是,路由器收到“节能标记”(终端进入节能模式,不再接收数据)后,会将发送给这个终端的报文缓存起来,等到终端重新 wake up 后,再将这些数据发送给终端。而攻击者利用这个节能-唤醒功能,先发送节能标记让路由器缓存后,再要求路由器重发送明文报文或者使用群地址加密密钥(group-address encryption key)加密——这之后的报文将不再安全。

漏洞的核心就在于,让路由器认为终端睡眠了,之后强行改变安全上下文。

但是,看完后,还有一些疑惑:

攻击成功的关键点有两个:

1. 发送“睡眠标记”的报文。——但是,这个不应该被加密吗?攻击者怎么利用的呢?

2. 其次改变路由器的安全上下文(也就是发送 Auth. / Association Request)。——额,这个操作感觉和“节能模式”没关系。那么,不再睡眠模式里,这个攻击有用吗?


为了回答这两个问题,还得看下论文。不过,跳过了大段的摘要介绍以及后面的实施细节,只找了这两个问题相关的段落。

第二个问题,倒是很快找到了答案,它也是这篇论文的重点了:Auth. / Association Request  应该要被Wi-Fi Management Frame Protection (MFP) 标准加密保护,因此在正常通信时,是不会被攻击者利用的。但是,本文进入节能模式后,安全上下文被改变,才导致其被利用。

而论文中的“Lessons Learned”也说,问题的根本在于“标准没有充分地讨论安全上下文改变的过程和影响”:

We believe the root cause of the identified issues in that the standard is not sufficiently explicit in handling security context changes.


第一个问题,找了好久没有找到答案。于是,不得不去翻标准——真心不想翻IEEE的标准,太长了,至今没有看完过哪怕一篇IEEE的标准……

看了一会儿,才明白,这个疑惑是自己的知识盲区导致的:

TAs changing Power Management mode shall infom the AP of this fact using the Power Management bits within the Frame Control field of transmitted frames.

这个Powere-Saving位是在传输帧的帧控制域(Frame Control field)里,例如:

图片来自网络
图片来自网络

所以,这个bit位无法被加密到。攻击者只需要修改一个普通报文的Pwr Mgmt的值即可。


嗯,花了一个小时,疑惑解决完了。不过,论文在后面还详细讨论了好多东西:

3.3 General Attack Strategy and Methodology

3.4 Frame Leaks in FreeBSD

3.5 Frame Leaks in Linux and Hardware

3.6 Defenses

4 Abusing the Queue for Network Disruptions

5 Overriding the Victim’s Security Context

6 Discussion on Impact and Lessons Learned

应该是攻击的细节,以及一些影响和如何应对的讨论。不过,没有仔细看了,毕竟不从事这一行了,不想把整个周日全部花在这上面。:)


最终,讨论下,对自己的影响和学习到(思考)的东西吧。

  1. 对我自己应该影响不大。老早就知道WiFi不安全了,平时主要依靠的还是TLS的安全性(虽然也有很多针对TLS的攻击,不过,大部分情况下还是可靠的)。主要的影响,在于HTTP服务,和一些局域网的服务(大部分局域网的服务都是弱安全的,甚至大部分都是明文的)。毕竟大部分时候,我们都假设局域网内是安全可信的环境,因此,局域网的服务更多地是考虑速度问题,而不是安全问题。

  2. 因此,对于普通人而言,更重要的,是要把自己的局域网打造得和“安全专家们所假设的”那样安全可信。例如,老生常谈的,不要连接陌生的wifi,不要让陌生人连入自己的wifi等等——在这个攻击里,如果路由器在被攻击者诱导删除终端的密钥后,如果使用明文发送报文的话,攻击者即使没有WiFi密码也能得到报文数据;但是,如果路由器实现得好一些,使用group-address encryption key加密,那么没有WiFi密码的攻击者应该也得不到数据。

  3. 为什么Power-Saving位不放到加密域里?两种可能:先设计了节能模式功能,应用之后再考虑的安全加密功能。而设计加密功能的老兄,根本推动不了去修改协议,把它放到加密域里去。第二种可能,设计者经过讨论,认为这个位不会被攻击者利用,或者利用了危害也不大。如果原因是第二种,那么就再一次证明以前的一个猜想:设计时认为不会被利用的信息,最终都会被攻击者所利用。以前想过一个极端结论:要安全,那就把除了会话标识符(解密时要用,所以不能加密)以外的东西都加密起来。哈哈,不过无法实现——加密太多,速度太慢了。

  4. 论文作者认为问题的根因在于标准制定者没有彻底讨论安全上下文改变的细节和影响。但我觉得更普遍的问题在于:MFP和Power-Saving两个机制在设计时,互相“不知道对方”。这在我们平时工作中非常常见:我自己设计了一个功能,自己考虑的时候,觉得非常好,各个方面都考虑到了。但是,一上到实际环境里,总能发现各种问题:与老系统之间相互影响产生问题、与同步开发的其他系统之间的相互影响产生问题、与之后新上线的系统之间的相互影响也产生了问题。现网运行的系统就像是一个不知道加了多少种化学药品,而且还在不停地加入新化学药品的烧杯,里面每时每刻都在发生难以预测的化学变化。我觉得,除了拉普拉斯妖,没人谁能将这样一个系统完全掌握,那也就不可能有一个存在,能设计一个绝对安全的系统加入其中。

  5. 目前的安全体系里,没有绝对安全,只有相对安全。安全人员们的设计初衷就是,让攻击者付出的成本高于收益。因此,平时使用网络设施时,别妄想一套解决方案,解决所有场景:该“裸奔”的时候就“裸奔”,该上“大锁”的时候就上“大锁”。

参考:

  1. 封面、头图、攻击原理步骤以及部分摘抄出自论文《Framing Frames: Bypassing Wi-Fi Encryption by Manipulating Transmit Queues》

  2. WiFi protocol flaw allows attackers to hijack network traffic (bleepingcomputer.com)

  3. 802.11 帧格式和分类详解 - 肉滚滚和代码 - 博客园 (cnblogs.com)

  4. 《802.11-1997 - IEEE Standard for Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications》

  5.  Network traffic hijacking facilitated by WiFi protocol vulnerability | SC Media (scmagazine.com)



WiFi协议又一个安全漏洞的评论 (共 条)

分享到微博请遵守国家法律