原文首发于公号“360 IoT安全” (https://mp.weixin.qq.com/s/JUQEgWCxdu_oGibEPcjdjw)

一分钟阅读摘要

Syed Rafiul Hussain 在今年的CCS‘19会议上的一篇名为5GReasoner的论文,并且他报告的漏洞已被收录GSMA CVD-2019-0029。经分析我们认为论文中的漏洞大部分是已知问题,实现相关的,或利用难度很高风险很小。对使用4G/5G连接的IoT设备,我们建议的CheckList为:1) 终端是否允许降级到2G?2) 业务怕不怕DoS攻击?3)应用层安全是否足够强?


论文的主要内容

CCS 2019会议中,一篇论文 5GReasoner: A Property-Directed Security And Privacy Analysis Framework For 5G Cellular Network Protocol。作者利用自己的分析方法,系统性的检查了5G的NAS层协议与RRC层的协议的安全性,发现了多个潜在的安全风险。第一作者Syed Rafiul Hussain也是去年 LTEInspector 论文的作者,我们去年写过一篇对LTEInspector的解读文章在团队的blog上。

5GReasoner沿用了LTEInspector的方法论,都是对协议构造一种数学模型,可以自动化的系统性的,全方位无死角的检查协议在安全方面的完备性。5GReasoner相比LTEInspector进一步的扩展了模型的能力,比如从单层扩展到多层协议栈(主要就是NAS和RRC),把协议payload的建模做得更完善,攻击者在模型中的行为更复杂化。

5GReasoner发现的潜在的风险主要集中在DoS攻击,用户身份信息的泄露(大部分是临时身份信息),以及位置信息泄露,广播消息的伪造等。这些5G中的风险点主要由于在初始的上下行交互流程中,一些控制消息是不进行加密和完整性保护的;同时为了给手机提供必要的接入参数以及寻呼等作用,系统消息和寻呼消息都是以明文广播的形式散发给手机的,这些消息是可以进行伪造的。

DoS攻击是很难避免的,就算协议标准为了保护这些初始消息而进行了额外的保护,但是攻击者同样可以使用大功率干扰的措施简单粗暴的DoS到所有用户的连接。而对初始连接的消息进行保护的代价很高,因为此时的5G安全上下文还没有建立,无法保护在此之前的消息。

在3GPP SA3中有一个Study Item(研究项目),TR 33.809 Study on 5G security enhancements against false base stations,其中就有以上几类比较典型的安全漏洞。这些消息可以通称为’Unprotected unicast messages and system information’。

首先这些漏洞均是协议方面的设计漏洞,所有厂商的设备都会受到影响。其次,3GPP目前还没有讨论出一个更新的,大家都接受的,能够平衡安全和成本的方案。

所以敲黑板!划重点!

  • 5G仍然会存在伪基站
  • 5G仍然会存在DoS类攻击(包含降级攻击)
  • 5G仍然存在广播消息伪造

如果以后各位读者再看到新闻说到以上几类5G问题,不要惊讶,这几个顽固的问题还没有解决。

(DoS攻击的段位体现在是用暴力斧头砍断,还是妙手飞针挑断;防守的段位体现在能否’看见’谁下的刀,以及挂掉以后能不能快速复活)

那么5GReasoner中提到的几种其他危害:可追踪用户位置;可以消耗流量使被攻击者产生天价账单;可以获取永久身份信息SUPI。这几种漏洞的危害如何呢?

GSMA CVD项目对媒体的回答是:
Spokes person Claire Cranton said the vulnerabilities were “judged as nil or low-impact in practice.” 在实际网络中危害非常低。

我们在分析了论文之后,也请教了华为和中国移动相关的安全专家(没有官方表态,仅限技术交流讨论),大家一致的观点是:大部分是已知问题,实现相关的(意思就是跟具体代码实现有关,与标准无关),可规避的(通过实现规避),或利用难度很高风险很小。

详细技术分析

下面详细讨论一下论文中列出的一些漏洞。在论文的第6部分,共列举了11种漏洞。这部分稍微细节了一点,不感兴趣的话,可以直接跳到末尾,看3G/4G/5G IoT设备常见的安全检查点有哪些。

6.1.1 NAS Counter Reset

DoS类和账单欺诈。为了防重放攻击,NAS层的数据包有序列号,序列号就有溢出重置的情况。这个攻击方法就是用中间人(伪基站+伪终端),首先保存一次0号数据包(Security Mode Command 和 Security Mode Complete),然后再某个合适的时间重放一次,于是终端(UE,User Equipment)与网络(AMF: Mobility Management Function)的连接的counter就失去同步了,然后连接中断,终端会重新发起连接建立。“Causing DoS and user-battery depletion”。前面说了DoS类攻击确实是存在的,不用过于忧虑。

但这个攻击还提到了:“It is also possible to replay the same user-plane packets over and over again with same (key_gNB) to cause over billing to the client.” 意思是说,重放用户面的数据包,会导致计费系统记上额外的流量费用。这个问题,要看计费系统究竟是如何实现的了,未经验证,很难说。

DoS类。它的原理是中间人不断的向UE发送sec_mode_command消息,当然UE能认出这是假消息,于是UE回应sec_mode_reject。标准中没有规定如果不断收到这种异常消息UE应该怎么办,所以是由实现决定的。UE可能失败一定次数之后,发起重新建立连接的过程。

6.1.3 Exposing NAS Sequence Number

隐私泄露类。因为sec_mode_command和sec_mode_complete是在安全上下文建立前的消息,也就是RRC层还没有加密,所以这两条消息中的NAS序号是明文的。所以如果一直监听某个用户的信号,可以观察到它什么时候建立了一个session,counter是多少,大致估计一下这个用户的手机的流量活动情况。我们认为,这个观察能挖掘的信息非常非常有限。

6.1.4 Neutralizing TMSI Refreshment

DoS类和追踪类。攻击方法是拦截网络发出的config_update_command消息,使UE的TMSI更新不成功,于是当网络对UE发起寻呼的时候,会先使用新TMSI,发现失败之后会使用旧TMSI。最终效果可以使攻击者追踪TMSI。但我们觉得其中有两个难点:第一,攻击者需要猜出哪个消息是config_update_command,这个消息一般是被RRC层加密的;第二,网络侧发出的config_update_command如果是要求acknowledgement的话,网络侧就会知道TMSI更新不成功,所以这是实现相关的,需要实验测试。

6.1.5 Cutting off the Device

DoS类。初始连接消息,registration request 和 deregistration request 都是不加密无完保的。那么攻击者可以怎么做呢?UE本来连接在网络上,攻击者用这个UE的C-RNTI(临时身份)发起注册或者取消注册的请求,然后呢,当然这个请求流程是走不通的,于是该UE的连接就断了,然后该UE只好发起重新连接。

6.2.1 Denial-of-Service with rrc_setup_request

DoS类。跟6.1.5的问题类似,只不过是RRC层的问题。攻击者可以向网络发出RRC连接建立请求,重建请求,resume请求,然后网络就中断之前跟UE建立好的连接,启动连接建立流程。

6.2.2 Installing Null Cipher and Null Integrity

隐私泄露和追踪类。这个攻击方法,我们强烈怀疑是不可行的。5G不是对IMSI加密了吗?也就是把永久ID,SUPI加密为SUCI。这个方法是这样的,在RRC连接建立过程中,中间人冒充AMF,骗UE说我不支持完保不支持加密,于是UE没法只好进入“有限服务模式(limited Service mode)”,也就是只能拨打紧急呼叫电话的状态。此时呢,中间人再去询问UE,你的ID是什么,作者认为UE可能会报告SUPI,“UE may expose its SUPI in plaintext”。我们认为,UE很可能不会报告SUPI,这个取决于运营商对SIM卡的配置。

6.2.3 Lullaby Attack

DoS类。攻击者发送RRC Reconfiguration消息给UE,UE做完整性检查以后发现消息不对,于是UE会重新启动连接建立过程。

6.2.4 Incarceration with rrc_reject and rrc_release

DoS类。基本原理就是,当UE发起连接的时候,伪基站不断的say NO。这个确实是可行的。实际情况是,在NAS层say NO,效果更好。不同的UE反应不同,取决于实现。

6.3.1 Exposing Device’s TMSI and Paging Occasion

追踪类。这个攻击需要知道攻击目标的手机号。做法基本上跟以前3G/4G那种paging追踪类似,把UE的RRC连接打断,然后给攻击目标不停的拨打电话,于是网络会不断发出paging消息,paging的时候会携带TMSI,于是攻击者就知道目标的TMSI了。TMSI是一个临时ID,更新的周期由运营商决定,可长可短,所以追踪效果说不好。

6.3.2 Exposing Device’s I-RNTI

追踪类。I-RNTI (Inactive RNTI)是UE处于Inactive状态的一个临时ID,与6.3.1攻击类似,可以不停的拨打电话,产生paging消息,从paging消息中获得对应的I-RNTI。

以上总结了论文中列举的11种漏洞。关于如何修复,实际上3GPP SA3一直(持续很多年了)在讨论这些unicast messages 和 system information 如何保护的问题。但是这些消息本身的功能有限,只能实现DoS攻击。而DoS攻击是很难避免的,就算协议标准为了保护这些初始消息而进行了额外的保护,但是攻击者同样可以使用大功率干扰的措施简单粗暴的DoS到所有用户的连接。对这些消息进行保护的代价很高,寻呼信道的劫持,以及TMSI身份信息的泄露这些问题估计会一直存在,因为安全性危害较小,不足以花费巨大的成本去更改自2G以来就一直沿袭的一些设计理念。

另外,对于追踪类风险,实际上除了手机的4G/5G之外,还有WiFi MAC地址追踪,蓝牙MAC地址追踪。对应的防御技术有WiFi地址随机化和蓝牙地址随机化。今年有一个研究成果就是讨论蓝牙追踪风险的,我们也有相应的讨论。这两年无线耳机普及得非常快,而无线耳机的蓝牙地址通常是固定的,值得关注。

IoT安全检测要点

在我们做安全测评的时候,对使用3G/4G/5G类网络接口的IoT设备,通常会在我们的4G/5G实验网(电磁屏蔽室内)中对终端做检查,包括:

  • DoS类攻击测试。各种协议类DoS攻击测试,包括暂时性DoS攻击和长期DoS攻击。有些终端会挂掉直到上电重启才会恢复,这取决于各厂商实现。
  • 4G/5G内网侧开放端口扫描。这里指内网网段的终端间的互通,由于各运营商设置不同,内网中终端互通的数据包过滤能力不一样。对于高安全要求的业务来说,可以假设内网防护是不够的,端口对外可见。
  • 4G/5G流量抓取和分析。检查应用层加密是否已启用,强度是否足够。对于高安全要求的业务来说,可以假设4G/5G流量对攻击者是可获取的,管道永远是不可信任的。这个方向,是可以持续深挖无止境的。比如百度安全实验室今年BlackHat的议题,腾讯KeenLab对特斯拉的远程攻击。

对业务团队来说,当使用4G/5G网络连接时,需要思考几个问题:

  1. 终端是否允许降级到2G?一旦允许,那短板就很明显了。
  2. 这个业务如果遇到DoS攻击,影响大吗?DoS攻击一般是近场攻击,比如伪基站的距离可以在几十到几百米,这个业务场景中攻击者有机会靠近目标吗?对于低时延,需要及时响应的场景,DoS攻击的危害就比较大。
  3. 应用层加密和鉴权是否足够强?攻击者突破加密的难度,突破鉴权的难度如何,是否与业务数据的价值相匹配。怎样算“足够”?这个标准就得各业务团队自己拿捏了。
    最后,业务团队和安全团队综合考虑风险和防御成本,设计合适的安全方案。