G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

admin 2023年12月23日10:22:53评论23 views字数 2030阅读6分46秒阅读模式

一个星期以前,我们为大家介绍了一篇Euro S&P 2023上关于IoT固件升级安全问题研究的论文,今天我们要再介绍一篇类似的研究论文Your Firmware Has Arrived: A Study of Firmware Update Vulnerabilities,这项关于固件安全的研究工作发表在USENIX Security 2024上,由中美(不脱钩了)两国研究机构的研究人员(都是俺们中国人嘛)共同完成。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

首先介绍一下预备知识,对于固件升级,一般可以分为下图所示的四个阶段,不用我们过多介绍,大家应该也能看图理解。作者同时也总结了和固件升级有关联的10大CWE类型(下表)。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

了解完预备知识,回到本文的技术细节,其实你会发现,和上一篇论文相比,这项研究工作脱离了对IoT companion app的依赖,直接对固件进行分析,就能够识别固件升级过程中两类安全问题——不检查版本高低(允许降级攻击)和不检查固件数字签名(允许固件篡改)。但是,对固件进行分析,定位到固件升级的代码逻辑,并且发现安全问题,要把这个流程自动化是非常困难的,因为现实世界中固件升级的逻辑可能千奇百怪,作者是怎么解决这个难点的呢?

实际上,论文的解决方案——ChkUp更多是从现实的固件实现中进行经验性总结,然后提出了相应的技术。首先ChkUp参考了2020年的IEEE S&P论文KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware中Binary Dependency Graph(BDG),实现了一个Update Flow Graph(UFG),这个UFG的entry也就是入口点就是固件下载的代码块,那么ChkUp是怎么去定位哪个代码块是负责固件下载的呢?作者这里就是基于他们对大量已有固件分析的经验总结,认为入口点模块一定包含特定的模式(例如前端代码包含<input type="file"...>或者binary code中包含wget)以及特定的提示信息(例如fw_version等),然后对所有的代码基本块进行匹配评分,分数最高的就是入口点。

找到入口点之后,接下来要追踪代码的控制流、数据流,面临的主要困难就是标准的程序分析在遇到inter-process communication(IPC)或者跨模块调用的时候会“断流”(嗯,上周那篇论文也专门提了这一点),作者的解决方案也很相似,还是人工总结一些关键的调用点(下图展示了一些例子,例如遇到函数eval就分析一下接下来要执行的命令,然后追踪过去)。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

完成这些分析之后,最后ChkUp再执行了一步额外的程序分析——Function-level Backward Slicing,用于追踪整个固件升级的路径。简单来说,就是从一些特定的标记了固件升级完成的事件(例如reboot)开始,反向进行代码切片,从固件升级的终点回溯到起点,得到整个升级的代码逻辑。

接下来,作者要对整个固件升级过程进行安全性分析,这里可以分为两个步骤,第一个步骤是识别一些关键的(密码学)函数,因为作者认为固件升级逻辑必须要依赖于这些函数,这里其实就是做了一个代码相似性分析,建立了一个语料库来辅助定位可能用到的关键函数。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

第二个步骤就是去检查固件升级是否存在漏洞,这里作者也用了和上一次我们介绍的论文相似的动态测试方法,生成了一些测试用例去动态测试(基于模拟执行),看看是否能够用不合法的固件来欺骗被测试的系统。这里面ChkUp还有一些小trick,比如会主动去patch原固件的一些检查逻辑,让测试能更加深入,感兴趣的读者可以去看附录A.4的技术细节。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

这篇论文的主要亮点应该是实验结果——对12000个固件(覆盖了Netgear、TP-Link、D-Link、TRENDnet、Asus、Ubiquiti、Zyxel、Linksys等品牌的路由器)进行了分析,不过作者介绍了半天之后说,最后只(随机)选了150个固件,好进行人工确认。关于这部分的实验细节(什么准确率啊之类的)我们就不再介绍了,大家可以去论文里面自己看看。

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

至于大家比较关心的另一个点——论文发现的25个CVE,论文里面并没有写,在论文的配套网站上有下面一个表格,呃,也没有更多细节:

G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

论文网站:https://fw-chkup.github.io/ (不知道为什么又重定向到了https://sites.google.com/view/chkup 然而google site是被墙的,而且数据集都没有公开!)


论文:https://www.usenix.org/system/files/sec23winter-prepub-484-wu-yuhao.pdf (这个地方有个乌龙,不是sec23,应该是sec24)


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrived

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月23日10:22:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-11-22 Your Firmware Has Arrivedhttp://cn-sec.com/archives/2238001.html

发表评论

匿名网友 填写信息