文章总结: 本文详述了针对紫光展锐UIS7862A车载调制解调器的安全研究。研究员在3GRLC协议中发现栈溢出漏洞,实现了调制解调器上的远程代码执行。通过ROP链绕过内存保护单元,修改NAS协议处理程序实现驻留。最终利用硬件漏洞横向移动至安卓应用处理器,获取最高权限执行任意代码,揭示了车载SoC的严重安全风险。 综合评分: 93 文章分类: 车联网安全,漏洞分析,二进制安全,漏洞POC,渗透测试
我们如何接管车载主机调制解调器
原创
卡巴斯基
卡巴斯基威胁情报
2026年1月7日 17:31 北京 标题已修改
引言
Introduction
想象一下,你正驾驶着崭新的电动汽车在高速公路上疾驰。突然,巨大的多媒体显示屏上满是经典3D射击游戏《毁灭战士》(Doom)的画面。它完全取代了导航地图或控制菜单,而你意识到此刻有人正在远程玩这款游戏。这并非梦境,也不是过度活跃的想象力在作祟——我们已经证明,在当今世界,这完全是一个现实可行的场景。
物联网如今在现代世界中扮演着重要角色。不仅智能手机和笔记本电脑连接到了网络,工厂、汽车、火车甚至飞机也都接入了网络。大多数情况下,这些交通工具和设备通过安装在其中的调制解调器,利用3G/4G/5G移动数据网络提供连接。这些调制解调器越来越多地集成到片上系统(System-on-Chip,SoC)中,该系统使用通信处理器(Communication Processor,CP)和应用处理器(Application Processor,AP)同时执行多种功能。通用操作系统(如安卓系统)可在应用处理器上运行,而负责与移动网络通信的通信处理器则通常在专用操作系统上运行。在微架构层面,片上系统内应用处理器、通信处理器和随机存取存储器(Random Access Memory,RAM)之间的交互是一个“黑匣子”,只有制造商才知晓——尽管整个片上系统的安全性都依赖于它。
绕过3G/LTE安全机制通常被视为一项纯粹的学术挑战,因为当用户设备(用户设备,User Equipment,UE)连接到蜂窝基站(演进型Node B,Evolved Node B,eNB)时,会建立一条安全的通信通道。即便有人能够绕过其安全机制、发现调制解调器中的漏洞并在其上执行自己的代码,这也不太可能危及设备的业务逻辑。该逻辑(例如,智能手机上的用户应用程序、浏览历史、通话和短信)存储在应用处理器上,并且据推测无法从调制解调器访问。 为了弄清楚这是否属实,我们对一款现代片上系统——紫光展锐UIS7862A(其集成了2G/3
G/4G调制解调器)进行了安全评估。这款片上系统可在多个供应商的各种移动设备中找到,或者更有趣的是,可在现代中国汽车的中央信息娱乐显示屏(head unit)中找到,这种汽车如今在路上越来越常见。中央信息娱乐显示屏是汽车的关键部件之一,其信息安全遭到破坏会对道路安全以及用户数据的保密性构成威胁。
在我们的研究过程中,我们在紫光展锐UIS7862A调制解调器的蜂窝协议栈的各个层级发现了多个关键漏洞。本文讨论了3G无线链路控制(Radio Link Control,RLC)协议实现中存在的基于栈的缓冲区溢出漏洞(CVE-2024-39432)。该漏洞可在连接早期阶段(在激活任何保护机制之前)被利用,以实现远程代码执行。
重要的是,获得在调制解调器上执行代码的能力,只是对整个片上系统进行全面远程攻击的切入点。我们后续的努力集中在获取对应用处理器的访问权限上。我们发现了多种实现这一目标的方法,包括利用以隐藏的外设直接内存访问(Direct Memory Access,DMA)设备形式存在的硬件漏洞,在片上系统内进行横向移动。这使我们能够在正在运行的安卓内核中安装自己的补丁,并以最高权限在应用处理器上执行任意代码。相关章节将提供详细信息。
获取调制解调器固件
我们研究的核心对象——调制解调器,是在一款中国汽车的头部单元电路板上发现的。
主机电路板
电路板元件说明
利用调制解调器的硬件信息,我们拆焊并读取了嵌入式多媒体存储卡,该卡中包含调制解调器操作系统的完整镜像。随后,我们对获取到的镜像进行了分析。
远程访问调制解调器(CVE-2024-39431)
受调查的这款调制解调器,与任何现代调制解调器一样,实现了多种协议栈:2G、3G和LTE。显然,设备支持的协议越多,其潜在的入侵点(攻击途径)就越多。此外,漏洞在OSI网络模型栈中所处的层级越低,其被利用后可能造成的后果就越严重。因此,我们决定分析数据链路层(RLC协议)的数据包分片机制。
我们之所以关注该协议,是因为它用于在基站和调制解调器之间建立安全加密的数据传输通道,特别是用于传输更高层的NAS(非接入层)协议数据。NAS代表3G/UMTS协议栈的功能层。它位于用户设备(UE)和核心网之间,负责两者之间的信令传输。这意味着,RLC协议中若存在远程代码执行(RCE)漏洞,将允许攻击者在调制解调器上执行自己的代码,绕过所有现有的3G通信保护机制。
无线链路控制(RLC)协议采用三种不同的传输模式:透明模式(TM)、非确认模式(UM)和确认模式(AM)。我们只关注非确认模式(UM),因为在这种模式下,3G标准既允许对数据进行分段处理,也允许将多个较小的高层数据片段(协议数据单元,PDU)拼接成一个单一的数据链路层帧。这样做是为了最大化信道利用率。在RLC层,数据包被称为服务数据单元(SDU)。
在固件中约75,000个不同功能中,我们找到了处理传入SDU数据包的功能。在处理接收到的SDU数据包时,会对其首部字段进行解析。数据包本身由一个必选首部、可选首部以及数据组成。可选首部的数量不受限制。当最低有效位(E位)等于0时,表示可选首部结束。算法会按顺序处理每个首部字段,只要它们的E位等于1。在处理过程中,数据会被写入调用函数栈上的一个变量中。栈深度为0xB4字节。可解析的数据包大小(即首部数量,每个首部在栈上占2字节)受SDU数据包大小0x5F0字节的限制。
因此,只需使用一个首部数量超过栈深度(90个首部)的数据包,便可实现漏洞利用。值得注意的是,这个特定功能缺少栈保护机制(stack canary),当栈发生溢出时,就有可能覆盖该函数中的返回地址和一些非易失性寄存器的值。不过,只有以二进制形式结尾为1的值(即最低有效位等于1的值)才能实现覆盖。值得注意的是,程序在ARM架构的Thumb模式下运行,因此所有返回地址的最低有效位都必须等于1。这是巧合吗?也许吧。
无论如何,发送第一个带有适当数量“正确”首部的虚拟SDU数据包,就会导致设备重启。然而,在那一刻,我们无法获取设备崩溃的位置和原因的相关信息(尽管我们怀疑原因可能是试图将控制权转移到从我们数据包中获取的地址0xAABBCCDD处)。
在系统中实现持久化驻留
首先且最重要的一点观察是,我们知道指向新接收到的SDU数据包的指针存储在寄存器R2中。我们可以使用面向返回的编程(Return Oriented Programming,ROP)技术来执行我们自己的代码,但首先需要确认这确实可行。
我们利用可用的AT命令处理器将数据移动到随机存取存储器(RAM)区域。在可用的AT命令中,我们找到了一个合适的功能函数——SPSERVICETYPE。
接下来,我们利用面向返回编程(ROP)小工具(gadgets)覆盖了地址0x8CE56218,同时未干扰后续传入的SDU数据包处理算法的正常运行。为实现这一目标,只需返回到调用SDU数据包处理程序的那个函数即可,因为该处理程序是作为回调函数被调用的,这意味着栈上不存在数据链接。鉴于该函数仅在栈上增加了0x2C字节的空间,我们需确保操作在此空间范围内完成。
操作系统环境下的栈溢出
在找到合适的ROP链后,我们发送了一个包含该链作为有效载荷的SDU数据包。结果,我们在SPSERVICETYPE的AT命令控制台中看到了输出0xAABBCCDD。我们的代码奏效了!
接下来,我们以此类推,输入了我们数据所在栈帧的地址,但结果发现该地址不可执行。于是,我们面临的任务是弄清楚调制解调器的内存保护单元(MPU,Memory Protection Unit)设置。我们再次采用面向返回的编程(ROP)链方法,生成了逐个读取内存保护单元(MPU)表项(每次读取一个双字,DWORD)的代码。经过多次迭代后,我们得到了以下表格。
表格证实了我们的猜测——代码段仅被映射为可执行权限。尝试更改配置时触发了另一条ROP链,但此时同一代码段在内存保护单元(MPU)映射表的未使用槽位中被赋予了写权限。得益于MPU的编程特性,特别是重叠机制的存在,以及编号较高的区域具有更高优先级这一事实,我们得以向该代码段写入数据。
接下来只需利用指向我们数据的指针(仍存储在寄存器R2中),修补刚被解锁写权限的代码段即可。关键问题是具体要修补什么内容。最简单的方法是通过向非接入层(NAS)协议处理程序中添加我们的代码来对其进行修补。为此,我们使用了NAS协议命令之一——移动性管理(MM)信息命令。这使我们能够一次性发送大量数据,并通过MM状态命令接收一个字节的响应数据,从而确认修补成功。
最终,我们不仅成功在调制解调器端执行了自定义代码,还通过高级NAS协议实现了与调制解调器的双向全功能通信。具体而言,我们使用了一个MM状态数据包,其原因字段值为0xAA。
然而,能够在调制解调器上执行我们自己的代码,并不意味着我们就能访问用户数据。难道不是吗?
关于开发出导致在车载信息娱乐系统主机上运行《毁灭战士》(Doom)游戏的地址解析(AR)漏洞利用技术的详细介绍文章完整版,可在工业控制系统网络安全应急响应小组(ICS CERT)网站上查阅。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:卡巴斯基威胁情报 卡巴斯基《我们如何接管车载主机调制解调器》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论