物联网时代下的缓冲区溢出威胁 |
中国软件评测中心网安中心 |
目前物联网产业高速发展,随着LPWAN以及5G的崛起,可以预测物联网的发展速度将会更为迅猛。《办公厅关于深入推进移动物联网全面发展的通知》(工信厅通信〔2020〕25号)中提出到2020年底,国内移动物联网连接数达到12亿。在物联网庞大的设备数量背后,信息泄露、设备监控、数据欺骗等安全问题已经成为影响广泛的社会性问题。而缓存区溢出则是物联网安全的严重威胁之一。 |
一、缓存区溢出漏洞广泛存在 |
据国家信息安全漏洞共享平台2020年11月—2021年1月数据显示,三个月内物联网终端设备类披露缓冲区溢出漏洞18个,其中高危漏洞11个,中危漏洞7个,涉及华为、IBM、Intel、Dell等多家行业企业。 |
漏洞情况举例如下: |
Huawei Mate 30缓冲区溢出漏洞(CVE-2020-9209),攻击者可以利用该漏洞通过向目标设备发送带有特定参数的包,致使设备行为异常。 |
IBM MQ Appliance缓冲区溢出漏洞(CVE-2020-4869),远程攻击者可利用该漏洞可以发送一个特别设计的SNMP查询,使设备重新加载。 |
Intel NUC Kit缓冲区溢出漏洞(CVE-2020-12337),该漏洞源于不适当的缓冲区限制,可能允许特权用户通过本地访问潜在地启用特权升级。 |
Dell Inspiron缓冲区溢出漏洞(CVE-2020-5388),该漏洞源于包含一个不适当的SMM通信缓冲区验证漏洞。本地经过身份验证的攻击者可以利用该漏洞通过使用SMI来获得SMRAM中任意代码的执行。 |
二、缓冲区溢出的本质 |
缓冲区是程序运行时,操作系统为了保存用户输入数据、程序临时数据而在内存中分配的一片连续的内存存储空间。缓冲区溢出是一种程序缺陷,缓冲区中填入超出内存边界的数据,致使数据覆盖了相邻的内存空间,使得程序崩溃或信息被篡改,被非法利用易造成严重后果。 |
三、物联网设备易受溢出攻击的原因分析 |
基于物联网设备内存容量小,物联网系统及底层开发普遍使用C/C++语言,物联网操作系统相比通用操作系统可用资源有限的三个特点,物联网设备易被攻击者利用缓冲区溢出漏洞攻击。 |
(一)缓冲区溢出基于缓冲区的有限性。物联网设备为平衡功能和成本,大多配置较小的内存容量,而内存越小,通常缓冲区也越小,溢出操作越容易。 |
(二)缓冲区边界缺乏检查是溢出的主要原因。物联网设备采用的操作系统普遍由C/C++语言编写。在C和C++语言编写的程序中,编译器注重程序的运行效率,缺乏对数组和指针的边界检查,可以被攻击者利用。 |
(三)通用操作系统,配备大量资源,可以通过增加资源损耗来加强防御能力。而物联网操作系统,注重实时性,为保证性能尽可能减少额外资源开销,不能采用以资源换安全的方式。 |
四、物联网设备缓冲区溢出的防范技术 |
目前,考虑到资源开销和性能问题,研究者们更多地从硬件或者软硬件结合的角度去思考如何解决缓冲区溢出与物联网设备安全的问题。相关研究如:Bresch等人提出了一种轻量级的硬件防范对策Speculoos,通过对目标核心进行最小程度的硬件修改,防止物联网设备处理器堆栈中的返回地址损坏,进而达到防范缓冲区溢出攻击的目的;XuBin等人提出了一种基于监视模型和安全标签的架构增强安全硬件设计,用于检测缓冲区溢出攻击;另一批研究者Shao等人则在更早以前提出了一种软硬件结合的HSDefender技术。 |
|
总的来说,采取硬件机制或软硬件结合的安全机制,实现缓存区边界检查、缓冲区基地址随机化以及控制内存地址读写权限,一定程度上可以帮助物联网设备达到防范缓存区溢出的目的。 |