时间进入到2022年,我们也要开始大量阅读2022年顶级安全会议上的论文了,今天为大家送上一篇关于智能手机基带的固件安全分析的研究论文:
首先让我们来简单看看FirmWire的工作流程。总体来说,FirmWire的分析可分为两部分:第一部分是针对基带固件的加载,在这部分分析中,FirmWire实现了一个vendor specific plugin来解析基带固件,确定其中的代码及其加载地址(这部分看起来很像普通的嵌入式固件分析);第二部分是对加载的代码开展的动态安全分析,主要还是利用fuzzing来发现问题(嗯,大家都喜欢去crash基带固件代码)。
具体来说,FirmWire的设计看起来四平八稳,首先参照固件的配置文件,做一个基本的firmware loading,下图给出了配置文件的一个例子,熟悉固件逆向的童鞋恐怕一看就懂了:
其次是一个针对基带固件进行插桩的ModKit组件,还是根据配置文件,将一些插桩代码编译并link到固件的RTOS中去,辅助fuzzing(看下面三张图,是不是也是很熟悉的套路)
这篇论文的出彩之处,在于它的实验(作者:“我就是做了很多binary code analysis,不服来打我啊”),首先作者搞定了三星和MTK的基带固件模拟和fuzzing:
其次就是发现漏洞并赚了一堆CVE:
然后好像论文的实验部分有一小节看起来像是基于审稿人要求加上去的,讲了一下FirmWire的可扩展性(审稿人:“你只做了binary code analysis是不行的,给我讲讲这个工作的通用性吧”),不过看起来工具还是受限于底层模拟器(基于PANDA框架),对第一大厂——高通的基带固件就没法模拟(因为高通的基带固件代码需要特定的DSP来执行)
总体而言,我们安全社区应该讨伐一下厂商,你把基带固件代码开源出来让大家找bug不就完了!
最后给大家安利一下论文一作Grant Hernandez的主页,上面充满了高质量的内容哦!
论文PDF:
https://hernan.de/research/papers/firmwire-ndss22-hernandez.pdf