【年度报告连载十】固件安全分析

admin 2022年4月10日00:11:42评论255 views字数 3972阅读13分14秒阅读模式

编者按

《互联网基础设施与软件安全年度发展研究报告(2020)》第二章《物联网安全测量与分析报告》,共八个小节,分别为:物联网安全发展趋势、物联网安全威胁模型分析、固件安全、密码学安全、云安全、通信安全、App 安全、总结。我们已经发布了前两节内容,本文为第三小节《固件安全》。


本文共3429字。文末有惊喜!

物联网终端的表现形式多样,包括传感器、通信路由网关、视频监控、智能家居设备等,但其具体的各项软件功能,都是通过终端固件实现的。本节将对目前公开收集的1,854个固件进行安全性分析,这些固件的厂商信息如图2-9所示。(具体的固件分析工作基于奇安信“木啄”物联网漏洞挖掘平台。)


(注:本文数据均为截至2020年7月的数据)

【年度报告连载十】固件安全分析

图2-9   固件厂商统计


01

代码漏洞

代码漏洞是指开发者在编码实现时,缺乏安全实践经验而导致的安全缺陷。常见的代码漏洞包括命令注入、缓冲区溢出、格式化字符串、释放后重用(UAF)、重复释放(Double Free)、空指针引用、除零异常、sizeof指针、信息泄露、硬编码后门等。


大多数缓冲区溢出及命令注入漏洞,可以追踪到C标准库,比如memcpy、strcpy、strcat、sprintf等函数的误用。在新近的安全编码实践中,比如Fortify源码检测工具,均会对这些危险函数进行检测,不推荐直接使用。但在对前述物联网固件中已解析的共208万个二进制文件进行统计分析后,发现memcpy、strcpy、sprintf、strcat等危险函数的使用量依旧非常大,其中memcpy在48万个二进制中均有使用,使用率23.4%,具体结果如图2-10所示。 

【年度报告连载十】固件安全分析

图2-10  危险函数统计


1.命令注入


根据CNNVD漏洞描述,命令注入(CWE-78:OS Command Injection)是指,软件使用来自上游组件的受外部影响的输入构造全部或部分操作系统命令,但是没有过滤或没有正确过滤掉其中的特殊元素,这些元素可以修改发送给下游组件的预期操作系统命令。


命令注入漏洞在传统PC领域已经较为少见,但在物联网场景下,因海量终端的多样性,以及开发者对安全的重视程度不足,导致命令注入类漏洞仍是主流漏洞之一,且因命令注入漏洞利用难度低、稳定性好,也普遍得到攻击者的青睐。


基于奇安信“木啄”物联网漏洞挖掘平台,我们针对1,854个物联网固件,综合采用污点传播分析和符号执行的程序分析技术,对潜在的命令注入类漏洞进行检测。如图2-11所示,仅有12.7%的固件未检测到任何安全风险,一半以上的固件可能存在50个以上的命令注入漏洞点。

【年度报告连载十】固件安全分析

图2-11  命令注入类漏洞检测情况


2.缓冲区溢出


缓冲区溢出(CWE-119: Buffer Overflow)是指,软件在内存缓冲区上执行操作,但是它可以读取或写入缓冲区的预定边界以外的内存位置。某些语言允许直接访问内存地址,但是不能自动确认这些内存地址是有效的内存缓冲区,这可能导致在与其他变量、数据结构或内部程序数据相关联的内存位置上执行读/写操作。利用该问题,攻击者可能执行任意代码、修改预定的控制流、读取敏感信息或导致系统崩溃。


前文提到的多款Netgear被曝远程代码执行漏洞就是一个典型的缓冲区溢出漏洞,漏洞发生在Netgear厂商共79款不同设备的的httpd程序中,具体为程序中更新固件功能时的验证固件环节(见图2-12)。当image以*#$^字节串开头时,image内容会通过memcpy函数被复制到栈上的缓冲区,而memcpy的第3个参数size值,从image的第5~8字节处获取。也就是说,size的值用户可控,如果size值超出栈上缓冲区大小的值,则造成缓冲区溢出漏洞。


其他诸如格式化字符串、UAF、DoubleFree、空指针引用、除零异常、sizeof指针、信息泄露、硬编码后门等漏洞不再一一举例说明。

【年度报告连载十】固件安全分析

图2-12  79款Netgear路由器漏洞代码

02

件安全

在软件研发过程中,开发者越来越多地依赖于流行的第三方开发平台、开发工具或框架。然而,这类第三方或开源软件产生的安全漏洞,也势必会影响到所开发软件产品的安全可靠性。


这种情况在物联网产品开发场景中尤为突出,同时由于物联网固件具有碎片化严重、更新迭代慢的特点,导致对第三方库或开源软件的同步往往远滞后于最新版本。根据我们的测量结果发现,针对1,854个固件,共发现549,731个已知的拥有CVEID的漏洞。如图2-13所示,取分析结果的前20位,其中OpenSSL版本滞后所带来的漏洞数量最多,共检测到31.7万处,平均每个固件包含170个OpenSSL已知CVE漏洞(OpenSSL作为第三方组件,可能被同时用于libcrypto.so和libssl.so等多个软件中,漏洞数量累加计算)。

【年度报告连载十】固件安全分析

图2-13  组件CVE数量


OpenSSL库带来的潜在漏洞最多,具体分析OpenSSL库版本,结果如图2-14所示,从0.9.6到1.1.1均有使用(截止撰文时间,OpenSSL最新版本为1.1.1g),1.0.2版本使用量最大,占总数的36.1%;其次是1.0.1,占总比例的33.4%。

【年度报告连载十】固件安全分析

图2-14  OpenSSL库版本统计

03

配置安全

配置安全,即配置文件安全,主要包括误配置和敏感配置文件泄露两类问题。配置文件属于固件中的敏感信息,攻击者通过对配置文件的分析,可快速定位敏感服务程序、硬编码用户名密码等信息,更容易分析和挖掘固件的风险和漏洞。我们对配置文件的测量结果,如图2-15所示(数量排名前20位)。

【年度报告连载十】固件安全分析

图2-15   配置文件统计


误配置是指安全开发人员或运维人员在对配置文件进行设置时,错误配置而引发的安全漏洞。我们以CVE-2019-18371为例,该漏洞影响XiaoMi Mi WiFi R3G路由器,可导致攻击者直接绕过用户认证,但漏洞的根本原因是Nginx服务的配置文件/etc/nginx/nginx.conf的配置错误产生的目录穿越漏洞,详情如图2-16所示,在漏洞点处,应为location/backup/log/,而这里少了一个斜杠(/)。

【年度报告连载十】固件安全分析

图2-16  CVE-2019-18371漏洞点


该漏洞于2019年披露,但在2020年3月份,我们对XiaoMi WiFi AX3600路由器当时的最新固件版本(v1.0.20)进行分析发现,该漏洞同样存在于AX3600路由器(截止撰文时间,该漏洞已修复)。

04

代码复用

物联网固件另一个显著的特点是代码复用度高。主要分为两种情况:一是同一个厂商的不同型号之间,共用基础功能逻辑代码,因此发生一个漏洞,可能会同时影响该厂商其他型号的产品,比如前文提到的Netgear的httpd组件漏洞,影响到79个型号的设备;二是不同厂商可能会受同一个漏洞影响,除前文提到的第三方组件安全问题以外,由厂商自行开发的代码也存在此类现象,我们以CNVD-2020-23845为例。


CNVD-2020-23845是一个登录认证绕过漏洞,该漏洞产生原因是路由器固件在登录认证的HNAP协议中存在一个硬编码的字符串,当攻击者构造的登录HNAP数据包中包含标签,且值为“Username”时,可以实现身份认证绕过。


该漏洞最早发现于D-LinkDIR867、DIR-878、DIR-882,基于奇安信“木啄”平台,对漏洞特征进行代码相似性搜索,发现该漏洞同样影响到Motorola摩路由C1和M2两款设备。在2019年11月的“天府杯”2019国际网络安全大赛中,在原创漏洞演示复现赛环节,我们现场演示了上述漏洞的利用方式,成功获取了D-LINK、Motorola相关型号路由器的系统控制权。赛后我方将完整的POC代码与技术细节上交组办方,并协助通知厂商进行安全修复。目前厂商已经针对漏洞发布了安全通报和官方补丁。

05

捆绑恶意代码

如果固件中已存在恶意代码,则以上其他方面的安全都是没有意义的,而且这并不只是理论中存在的威胁。


首先,目前“刷机”—即为设备刷入第三方固件的行为非常盛行,用户为了追求更好的用户体验,抛弃了官方固件的可靠性,而第三方固件的安全性是完全未知的。其次,从官方网站下载的固件也不是100%可靠的,如果官方固件存在捆绑恶意代码的现象,往往会造成更大范围的影响。


除了第三方的刷机固件存在安全隐患,官方固件同样可能引入后门程序。如图2-17所示,某DVR登录页面将引导用户下载浏览器插件,并要求用户以管理员权限运行该程序。

【年度报告连载十】固件安全分析

图2-17  某DVR提示安装IE插件


如图2-18所示,该插件被识别为恶意程序。当运行该程序后,用户的计算机将可能直接被攻击者控制。 

【年度报告连载十】固件安全分析

图2-18某 DVR官方浏览器插件virustotal的检测结果

06

小结

在物联网“云、管、端、移”这4个重要角色中,固件作为终端的软件组成部分,一直是物联网安全的核心角色之一。“麻雀虽小、五脏俱全”,固件是一个完整的操作系统,除传统的代码漏洞以外,第三方组件安全、配置安全、供应链安全、恶意代码、敏感信息泄露等问题,在固件的层次上,均有体现。通过对大量固件的分析发现,目前固件在安全编码、组件使用、代码复用等各个方面的安全性均不太理想,需要厂商持续投入,例如将传统安全中较好的实践工作移植应用到物联网终端固件中,或针对物联网固件特点进行针对性安全防护。


(未完待续……)


版权声明:本研究报告由清华大学(网络研究院)-奇安信集团网络安全联合研究中心撰写完成,版权属于双方共有,并受法律保护。转载、摘编或利用其它方式使用本研究报告文字或者观点的,应注明来源。


相关阅读

【年度报告连载八】物联网安全发展趋势


【年度报告连载九】物联网安全威胁模型分析


【年度报告连载十】固件安全分析

本报告剩余最后100册,关注公众号七折优惠,欢迎订阅!


原文始发于微信公众号(奇安信技术研究院):【年度报告连载十】固件安全分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月10日00:11:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【年度报告连载十】固件安全分析http://cn-sec.com/archives/639497.html

发表评论

匿名网友 填写信息