论文学习_A large-scale empirical analysis of the vulnerabilities introduced by TPCs in IoT firmware

论文名称发表时间发表期刊期刊等级研究单位
A large-scale empirical analysis of the vulnerabilities introduced by TPCs in IoT firmware2020年ISSTACCF A佐治亚理工学院

1. 引言

研究背景:物联网(IoT)已经无处不在,为我们的日常生活提供了极大的便利。根据最近的一份报告,Gartner 预测,从2020年到2030年,物联网设备的数量将增加两倍。然而,物联网设备的迅速发展也不可避免地引发了公众对其安全风险的担忧,并带来了一些现实的问题。世界各地发生的攻击事件进一步加剧了这种恐慌。例如,Mirai 僵尸网络已经危害了数百万个物联网设备,包括 IP 摄像头、DVR 和路由器,并对各种在线服务发起了DDoS攻击。物联网为人们生活带来极大便利的同时,也存在严重的安全问题。例如,Mirai 僵尸网络已经危害了数百万个物联网设备。

固件是嵌入在设备内部的软件,用于管理和控制硬件设备的各种功能和操作。如今,固件广泛采用第三方组件(TPC),例如 BusyBox 和 OpenSSL,以加速和简化开发过程。然而,TPC 的广泛使用是一把双刃剑,因为许多 TPC 存在已知漏洞,这些漏洞会为物联网固件带来许多新的攻击面。例如,OpenSSL 中的 Heartbleed 漏洞已经极大地影响了至少数百万台物联网设备。更糟糕的是,供应商可能会在不同类型的固件中重复使用一组相同的 TPC,这会加速潜在漏洞的传播。因此,识别固件中使用的易受攻击的 TPC 至关重要。物联网中嵌入式设备广泛使用 TPC ,导致 N-day 漏洞在不同供应商的不同类型嵌入式设备中广泛转播。

1.1 研究挑战

固件收集挑战:为了进行研究,第一个挑战是构建一个大规模且全面的固件数据集,该数据集应涵盖来自不同供应商的各种类型的固件,以便获得关于当前固件安全问题的令人信服的结果。然而,目前并没有可公开访问的固件数据集供研究使用。此外,越来越多的厂商开始禁止公众下载固件,并对恶意网络爬虫采取反抓取技术,这又大大增加了数据收集的难度。为了增加研究结果的可信度,需要进行大规模的固件收集

固件处理挑战:固件处理面临两个主要挑战,首先是从基于 Linux 的固件中提取包含 TPC 检测的基本信息的对象。尽管有现有的工具(如 binwalk),但它们在处理具有 TPC 检测功能的固件时存在局限性。其次是处理单片固件,这些固件广泛应用于低功耗嵌入式系统,例如智能家居。这类固件通常缺乏传统操作系统或元数据(如 RAM/ROM 起始地址),其代码、库和数据也是高度混合的。然而,现有工具(如 IDA)在没有额外配置的情况下无法有效处理单片固件,这增加了对单片固件进行全面分析的难度。分别讨论 Linux 固件与非 Linux 固件中存在的固件处理问题

漏洞识别挑战:在 TPC 检测和漏洞识别方面,面临两大挑战。首先是构建一个全面且易于使用的 TPC 数据库。这样的数据库能够指示固件中可能使用的 TPC,以及每个版本 TPC 的已知漏洞。根据论文调研,目前尚未有针对物联网固件构建这样 TPC 数据库的工作。收集尽可能多的 TPC 并将漏洞映射到相应的 TPC 版本,是一个复杂的挑战,需要解决数据收集、整合和更新的问题。其次是 TPC 版本识别,为了准确识别固件中使用的 TPC 对应的漏洞,需要对 TPC 版本进行检测,而不仅仅是对 TPC 进行检测。不同版本的 TPC 可能存在不同的漏洞,但由于不同版本之间的代码差异可能很小,因此在没有源代码的情况下很难区分相同 TPC 的不同版本。当前的固件分析工具不支持在版本级别进行 TPC 的检测,这限制了对固件漏洞的全面识别能力。分别讨论了 TPC 数据集(包含漏洞信息)构建与 TPC 版本检测过程中存在的问题

1.2 研究思路

论文致力于全面了解在物联网固件中使用的第三方组件(TPC)及其带来的潜在安全风险。为此,论文开发了一个可扩展的自动化框架 FirmSec,用于对物联网固件进行大规模分析。论文的分析方法如下:首先,为解决构建固件数据集的挑战,论文从公共来源和私人来源(如官方网站和私人固件存储库)收集固件映像,固件收集。其次,论文定制了几个插件,为现有工具(如 binwalk 和 IDA)添加功能,以解决固件处理中的问题。这些定制工具支持解压和反汇编基于 Linux 的固件(使用流行和不常见的文件系统),以及处理单片固件,固件处理。第三,论文提出了一种新的检测策略,用于识别固件中使用的 TPC。该策略利用从 TPC 和固件中提取的两种特征:语法特征和控制流图特征,漏洞识别。最后,根据版本检查搜索相应的漏洞,依赖于论文建立的 TPC 数据库。FirmSec 根据分析结果为每个固件映像生成报告,指出其潜在的安全风险,并提供修复漏洞的建议。这一方法使得论文能够全面评估物联网固件的安全性,从而提高对潜在安全威胁的认识,并为提升固件安全性提供了实际的解决方案,漏洞报告

论文为了提供更深入的见解,从四个方面探讨物联网生态系统的安全现状:首先评估不同种类、不同供应商的固件的漏洞,N-day 漏洞在固件中的分布情况;其次探讨物联网设备安全性在地域上的差异存在,漏洞固件的地理分布情况;第三分析固件中使用的第三方组件(TPC)是否存在过期问题,漏洞固件中的更新情况;最后调查和分析固件中可能存在的 GPL/AGPL 许可证违规情况,固件开发的合规性情况。这些研究方面将深入理解物联网设备的安全挑战,并提供针对性的安全改进建议。

1.3 研究贡献

论文构建了目前最大的固件数据集,包括 11,086 个可公开访问的固件映像和 23,050 个私有固件映像,涵盖了 35 种固件类型,其中大部分在以前的研究中鲜有涉及。为了促进未来的研究,论文将在 GitHub 上开源该数据集,固件收集方面的贡献。此外,论文提出了 FirmSec,这是一个可扩展的自动化框架,用于分析固件中使用的第三方组件(TPC)并识别相关的漏洞。FirmSec 在固件版本级别的 TPC 识别方面表现出 91.03% 的精确度和 92.26% 的召回率,明显优于目前最先进的工作如 Gemini、BAT 和 OSSPolice,固件处理和漏洞识别方面的贡献。论文首次对固件中易受攻击的 TPC 进行了大规模分析,在 34,136 个固件中识别出 584 个 TPC,检测到 429 个 CVE。论文还揭示了物联网固件中广泛使用易受攻击和过时的 TPC 的现状。此外,论文确认了物联网设备安全性在地理上的差异,特别是韩国和中国等地区情况相对严重。最后,论文发现有 2,478 个固件映像可能存在 GPL/AGPL 许可证违规问题,可能导致法律诉讼,固件漏洞分析方面的贡献

2. 设计和实施

FirmSec 是一个旨在自动识别物联网固件中使用的第三方组件(TPC)并检测相应漏洞的自动化框架。其主要包括三个模块:固件采集用于从多个来源收集固件,固件预处理则通过过滤非固件文件、识别必要信息和解压拆解固件来准备数据。最后,固件分析模块基于从 TPC 和固件中提取的语法特征和控制流图特征,检测固件中版本级别的 TPC,并依赖 TPC 数据库进行漏洞识别。这些模块协同工作,使得 FirmSec 能够高效分析大规模物联网固件,发现和评估安全问题,为固件安全性提供有效改进的工具和方法。FirmSec 主要由固件收集、固件处理以及漏洞识别三部分组成

2.1 固件收集

固件采集模块负责搜集固件,并构建大规模的原始数据集。为解决固件资源有限的难题,研究采用了网络爬虫技术,从四个不同来源进行固件收集:官方网站、FTP 站点、社区资源(包括多个厂商的固件镜像,相关论坛和 GitHub 仓库)、以及私有固件存储库。研究团队获准访问一家专注于智能家居领域的全球领先公司的私有固件存储库,该公司在文中被称为 TSmart。TSmart 的固件存储库中包含数以万计的智能家居固件镜像,这些固件由数百家供应商生产,尚未被研究过。

2.2 固件处理

固件过滤:从原始数据集中排除非固件文件。论文通过文件后缀匹配过滤掉明显的非固件文件,例如.txt文件。接着,论文采用下一代二进制分析工具(BANG),它能识别136种文件类型,来去除其他非固件文件,例如Android Dex文件。研究团队将BANG应用于其余文件,根据返回的文件类型删除非固件文件,结合文件后缀与二进制分析工具实现非固件文件的过滤

固件识别:识别固件的必要信息,包括操作系统、架构和文件系统,这对于进一步分析至关重要。论文通过两个步骤获取这些关键信息。首先,从固件文件夹中提取的元数据文件。元数据文件描述了固件的详细信息,例如对应的设备型号和类别等,通常与固件位于同一存档中。其次,论文采用 binwalk工具扫描所有固件镜像,以获取它们的操作系统、架构和文件系统信息,通过  binwalk 实现固件基本信息的提取

固件提取:根据上一步提取到的固件信息实现固件提取,这对后续的固件反汇编非常重要。然而,现有的工具在提取采用最新或定制文件系统的固件时,或多或少存在提取不完整等问题。这里的主要挑战是彻底提取固件中的文件系统,而不递归提取压缩数据。

为应对这一挑战,论文为 binwalk 配备了一系列插件。具体来说,论文首先分析了收集到的固件中使用的文件系统,发现原版 binwalk 主要在处理三种流行的系统时存在问题:SquashFS、JFFS2 以及 YAFFS。随后,作者采用 sasquatch 和 jefferson 替代了 binwalk 中的 unsquashfs 和 jffsdump,实现 SquashFS 和 JFFS2 固件的提取。最后,论文为 binwalk 实现了一个基于 yaffshiv 的新插件来解压 YAFFS。该插件支持对 YAFFS 构建参数(例如页面大小)进行暴力破解,即使在文件系统运行多轮后,也能提取包含的对象,通过一系列 binwalk 插件实现目标固件的完整提取

固件反汇编:根据上一步提取到的固件实现固件的反汇编,并生成固件的控制流图(CFG)。固件中的CFG 包含了关于固件中 TPC 的基本信息。 为了获得 CFG,研究论文需要首先对固件进行反汇编。 然而,目前的反汇编程序并不能在没有额外配置的情况下处理单片固件。 例如,原生的 IDA 和 GHIDRA 都不能处理许多单片固件映像,因为它们采用的处理器不常见,会丢失一些必须的信息,比如用于分析的 RAM/ROM 起始地址。 主要挑战在于根据已知的有限信息来恢复单片固件中的丢失数据。

为了解决这一挑战,研究论文首先分析了单片固件中的处理器类型,如 ESP8266,以恢复丢失的信息,然后为 IDA 开发了一系列定制插件来加载和反汇编单片固件。 具体来说,首先,研究论文分析了已收集的单片固件所使用的处理器类型。接着,收集了每个处理器对应的参考手册或数据表。参考手册和数据表能够为我们提供三种有用的信息:处理器的核心、内存映射以及中断向量表。 论文可以通过核心确定反汇编固件的确切指令集,并从内存映射中获取用于加载固件的 RAM/ROM 起始地址。 此外,还可以从中断向量表中获得固件的起始地址。 最后,基于所恢复的信息,研究论文为 IDA 实现了7个插件,对应于单片固件中使用的 7 种处理器。 这些插件使得 IDA 能够自动加载和反汇编单片固件,通过一系列 IDA 插件实现各种固件的反汇编

2.3 漏洞识别

漏洞收集:在进行漏洞识别的过程中需要一个 TPC 数据库,其中包括固件可能使用的 TPC 以及每个 TPC 版本的详细漏洞信息。 然而,不同于用于指示 Android 应用程序中 TPC 的 Maven 存储库,目前没有公开可访问的 IoT 固件数据库。 主要挑战在于从可靠来源获取尽可能多的 TPC,并将漏洞映射到各个 TPC 版本上。为了克服这一挑战,论文首先从四个来源收集了可能在物联网固件中使用的TPC,包括来自固件的链接库、开源物联网项目、来自多个物联网平台(如AWS IoT)的 SDK,还有 TSmart 的 TPC 候选名单。 其次,论文利用专业的 CVE 搜索工具 cve-search 从 CVE 数据库中查询 TPC,并编写了一个脚本来查询 NVD 和 CVE 详细信息以收集 TPC 相关 CVE。 通过这两种方法,论文获得了不同版本 TPC 对应的 CVE。 建立的物联网固件 TPC 数据库包括以下字段:TPC、许可证、版本、CVE、CVSS评分以及CVE描述。 最终共收集了 1,191 个TPC。尽可能多的收集用于固件构建的不同版本 TPC ,并记录这些 TPC 的版本信息和漏洞信息

特征提取:针对 TPC 的语法特征,论文开发了一个解析器,用于从 TPC 的 C/C++ 源文件中提取语法特征。 这些语法特征包括字符串文本(如独特的字符串)和函数信息(如函数名称和参数类型)。 对于每个 TPC,论文总结了在所有版本中共同存在的语法特征,将其视为共享语法特征。 论文识别了不同版本中 TPC 所独有的语法特征,这些特征被视为版本语法特征。针对 TPC 的 CFG 特征,论文从每个版本的 TPC 中提取属性控制流图(ACFG)。ACFG 中的每个节点都是带有一组属性的基本块。 除了 Gemini 使用的块级属性外,论文还引入了三个函数级属性。 这些函数级属性提供了有关 CFG 结构的更详细信息,而 Gemini 则忽略了这些信息。提取数据集中各 TPC 的语法特征与 CFG 特征

针对固件的语法特征,论文从固件中提取与之前相同类型的语法特征。 尽管成功地反汇编了基于 Linux 的固件和单片固件,但许多函数名称在 IDA 中无法被识别,特别是在单片固件中。 为解决这一问题,论文为 IDA 提供了大量 TPC 的签名文件,以便识别反汇编文件中的函数名称。 这些签名文件主要是从互联网上收集的,如GitHub项目,同时也有论文手动生成的一部分签名文件。 针对固件的 CFG 特征,论文从反汇编的固件中提取 ACFG,其中的属性与从 TPC 中提取的属性相同。 然而,由于 Gemini 使用的原始提取工具无法从单片固件中提取 ACFG(因为它无法反汇编单片固件),因此论文通过集成他们的固件反汇编模块来自定义提取工具来解决这个问题。提取目标固件的语法特征与 CFG 特征

特征匹配:直接使用正则表达式实现语法特征的匹配,可能会导致较低的精度和召回率。因此,论文利用编辑距离和基于比率的匹配来计算 TPC 和固件之间的相似性。具体来说,论文将 TPC 与目标固件语法特征之间的编辑距离通过 𝐷(𝑇𝑃𝐶, 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) 来表示 。如果 𝐷(𝑇𝑃𝐶, 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) 超过给定阈值 𝛼,则认为特征匹配。论文记录目标固件中句法特征的匹配结果,并计算匹配特征数量与从特征总数的比值,即 (𝑇𝑃𝐶 ∩ 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) / 𝑇𝑃𝐶 。如果 (𝑇𝑃𝐶 ∩ 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) / 𝑇𝑃𝐶 超过给定阈值 𝛽,则认为 TPC 匹配。鉴于某些固件可能采用部分构建的 TPC,基于比率的匹配可以提高这些情况下的精度。论文最终将 𝐷(𝑇𝑃𝐶, 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) 的阈值设置为 0.74,(𝑇𝑃𝐶 ∩ 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) / 𝑇𝑃𝐶 的阈值为0.52。基于上述匹配策略,论文利用共享语法特征进行 TPC 级识别,并使用版本语法特征进行版本级识别,并将匹配结果标记为 𝑅𝑆𝑦𝑛𝑡𝑎𝑥。在语法特征的基础上结合编辑距离与比例匹配机制实现固件与 TPC 的匹配

Gemini 用于检测固件中的特定漏洞,例如 OpenSSL Heartbleed 漏洞。 它首先分别从漏洞和固件中提取 CFG。 然后,Gemini 将所有 CFG 转换为 ACFG,记为 𝑉𝑢𝑙𝐴𝐶𝐹𝐺 和 𝐹𝑖𝑟𝑚𝐴𝐶𝐹𝐺。 ACFG表示为一个八维向量,由八个基本块级属性组成。 然后,Gemini 利用基于struct2vec的嵌入网络计算这些 ACFG 之间的余弦相似度,记为 𝐶𝑜𝑠𝑖𝑛𝑒(𝑉𝑢𝑙𝐴𝐶𝐹𝐺, 𝐹𝑖𝑟𝑚𝐴𝐶𝐹𝐺)。 最后,根据 𝐶𝑜𝑠𝑖𝑛𝑒 (𝑉𝑢𝑙𝐴𝐶𝐹𝐺, 𝐹𝑖𝑟𝑚𝐴𝐶𝐹𝐺)列出固件中前 K 个相似函数。然而 Gemini 并不能直接应用于 TPC 检测。 因为论文的目标是验证TPC和固件之间的相似性,而不仅仅是单个函数的相似性。 由于每个 TPC具有许多 ACFG,单个 ACFG 的相似度无法确定 TPC 和固件之间的整体相似性。 主要挑战在于设计一种方法来汇总每个 TPC 中每个 ACFG 的相似度,以表示 TPC 和固件之间的最终相似度。 为了解决这一挑战,论文对每个 ACFG 的相似度进行了归一化和聚合,基于相应 CFG 的权重。 论文认为,如果 CFG 越复杂,其内部逻辑也越复杂。 因此,TPC 中高复杂度的 CFG 比低复杂度的 CFG 更有可能与其他 TPC 中的 CFG 有更大的差异,更适合作为识别 TPC 的特征。 基于这一分析,对复杂的CFG赋予较高的权重。 论文使用圈复杂度(CC)来评估 CFG 的复杂度,计算公式如下所示:

其中 𝑒 是 CFG 中的边数,b 是 CFG 中的基本块的数量。接下来,论文计算每个 CFG 的复杂度与TPC 中所有 CFG 的复杂度的比值,作为每个 CFG 的权重,计算公式如下所示:

其中 𝑁 是 TPC 中 CFG 的数量,论文通过聚合每个 ACFG 的相似度来表示 TPC 和固件的相似度,计算公式如下所示:

在这里,𝑆𝑖𝑚(𝐴𝐶𝐹𝐺𝑖) 表示 TPC 中各 ACFG 与固件中最相似函数之间的相似度。 通过上述策略,论文成功地将改进的 Gemini 应用到研究任务中。 如果 𝑆𝑖𝑚(𝑇𝑃𝐶, 𝐹𝑖𝑟𝑚𝑤𝑎𝑟𝑒) 超过阈值 𝛾,论文认为 TPC 匹配。 论文在数据集上训练了改进的 Gemini,并将阈值设定为0.64。将 CFG 特征的匹配结果标记为𝑅𝐶𝐹𝐺。在 CFG 特征的基础上结合改进的 Gemini 实现固件与 TPC 的匹配

论文最终将 𝑅𝑆𝑦𝑛𝑡𝑎𝑥 和 𝑅𝐶𝐹𝐺 的并集作为最终结果,可以表示为𝑅𝑆𝑦𝑛𝑡𝑎𝑥 ∪ 𝑅𝐶𝐹𝐺。举例来说,假设在𝑅𝑆𝑦𝑛𝑡𝑎𝑥中,sample.bin 的识别结果是 {OpenSSL unknown,uClibc 0.9.32.1};而在𝑅𝐶𝐹𝐺中,sample.bin的识别结果是 {OpenSSL 0.9.8,uClibc 0.9.32.1}。那么,𝑅𝑆𝑦𝑛𝑡𝑎𝑥 ∪ 𝑅𝐶𝐹𝐺的最终结果应该是 {OpenSSL 0.9.8,uClibc 0.9.32.1}。将基于语法特征的 TPC 匹配结果与基于 CFG 的 TPC 匹配结果合并起来,作为最终的匹配结果

漏洞识别:该论文使用版本检查来根据 TPC 数据库,识别在目标固件中检测到的 TPC 的漏洞。该数据库包含了不同 TPC 版本对应的 CVE 信息。为此,研究编写了一个脚本,自动查询数据库中的 TPC 及相应版本(例如,OpenSSL 0.9.8),并记录返回的漏洞信息。其中值得强调的是,由于其他防御措施阻止了一些漏洞的利用(例如禁用某些配置选项或执行某些检查),因此可能导致某些易受攻击的代码无法被访问。因此,研究将已确认的漏洞视为潜在漏洞。最终,对于所测试的固件,研究生成一份报告,指出其中的潜在风险,并提供修复漏洞的建议。结合代码相似性检测技术确定目标固件中 TPC 的具体版本,并根据具体版本实现固件的漏洞识别

3. 实验环境评估

3.1 数据组成

通过固件采集模块,该论文初步收集了来自 13 家厂商、 35 类设备的 35,978 个固件镜像。作者从互联网爬取了12,913 个固件镜像,并从 TSmart 获取了 23,065 个固件镜像。为方便起见,研究使用 TSmart 作为私有固件的供应商。该研究详细列出了数据集的构成,如下表所示。

经过数据过滤,他们除去了 1,842 个非固件文件,最终获得了 34,136 个有效的固件镜像,跨越了13 个供应商,其中包括 11,086 个可公开访问的固件镜像和 23,050 个私有固件镜像。该数据集包括 35 种已知的物联网设备和部分未知的物联网设备。其中,7.9% 的固件镜像用于相机,21.3% 的固件属于路由器,3.5% 的固件属于交换机,67.5% 的固件属于 TSmart 已装备智能家居,还有0.7% 的固件属于未知设备。

3.2 实验设计

首先构建了三个真实数据集:数据集 I 用于训练改进的 Gemini 并评估模型准确性;数据集 II 用于选择 FirmSec 的阈值;数据集 III 用于评估 FirmSec 在固件中 TPC 级别和版本级别检测 TPC 的准确性。

数据集 I 包括从 TPC 数据库中 1,192 个 TPC 的 14,304 个 ACFG。其中,每个 TPC 被编译成 12 个不同的版本,包括三个不同的平台(MIPS、X86、ARM)和四个不同的优化级别(O0-O3)。数据集 II 和数据集 III 包含固件的 TPC 标签。鉴于商业固件中使用特定 TPC 的情况难以得知,研究最终选用 Tomatoshibby 和 OpenWrt 中包含的固件镜像构建数据集(具有源代码,TPC 版本确定)。数据集 II 包括 200 个 Tomatoshibby 固件镜像,包含 17,918 个TPC 样本(73个不同的TPC,211个不同的版本)。对于数据集 III,从数据集中随机选择了 300 个 OpenWrt 固件镜像,包含 19,645 个TPC 样本(92个不同的TPC,194个不同版本)。研究使用这两个数据集分别进行阈值选择和评估,以避免偏差。介绍了论文构建的三个数据集

模型精度评估:按照 6:2:2 的比例将数据集 I 分为训练集、验证集以及测试集,对改进的 Gemini 进行 100 个 epoch 的训练,保存所有 epoch 中在验证集上实现最佳 AUC(曲线下面积)的模型。在测试集对模型进行测试,AUC 为 0.953。经过同样的流程训练原始的 Gemini,AUC 只有 0.912。介绍数据集 I 如何实现模型精度的评估

模型阈值选择:将三个阈值(𝛼、𝛽、𝛾)作为一个整体,并利用 TPC版本 的真阳性率(TPR)作为衡量标准来选择合适的阈值。 具体来说,论文基于三个阈值及其相应的 TPR 组合为一个四维向量:[𝛼, 𝛽, 𝛾, TPR]。 每个阈值的范围是 0.01 到 1.00,最终选择 TPR 达到最高时的阈值。介绍数据集  II 如何实现模型阈值选择

漏洞识别结果:论文使用精度和召回率来评估 FirmSec 在数据集 III 上的两类 TPC (组件级和组件版本级)检测准确性 ,实验结果如下表所示。FirmSec 在 TPC 组件上实现了 92.09% 的准确率和 95.24%的召回率,在 TPC 组件版本上实现了 91.03% 的准确率和 92.26% 的召回率。 论文还列出了每种方法的 TPR 达到最高时基于语法的匹配结果和基于 CFG 的匹配结果。 我们发现并集结果的精度与各自方法非常接近,但召回率要高得多。介绍数据集 III 如何分析漏洞识别结果

该论文将 FirmSec 与三种先进技术进行比较:Gemini、BAT 以及 OSSPolice。原始的 Gemini 使用 8 个基本块级属性进行代码相似度比较。为了增强其在检测固件中 TPC 方面的能力,论文采用了基于 CFG 权重的方法。BAT 利用字符串文本来识别二进制文件中的 TPC,但无法确定确切的版本。OSSPolice 最初旨在检测 Android 应用程序中开源软件的版本使用情况,支持查找 C/C++ 本机库中的 TPC,该研究成功将其应用于物联网固件,并将其与 FirmSec 进行比较。在进行比较之前,根据 BAT 和 OSSPolice 的指令,生成了相应的 TPC 数据库。由于 BAT 不支持版本级别识别,论文未报告 BAT 的版本级别结果。

在 TPC 级别的识别中,FirmSec 明显优于其他工具。FirmSec 在精确度和召回率上都比其他工具表现更出色,能够报告更多的 TPC。而在版本级别的识别方面,FirmSec 在这两个指标上均优于Gemini 和 OSSPolice。研究进一步探讨了 FirmSec 优于其他工具的原因。首先,Gemini 忽略了函数级属性,而这些属性提供了有关 CFG 结构的许多重要信息。其次,BAT 主要利用字符串文本来识别 TPC,通过直接特征匹配比较从 TPC 和固件中提取的字符串文本,导致精度和召回率较低。最后,OSSPolice 采用分层匹配策略,依赖于 TPC 的包结构来识别 TPC,然而,同一 TPC在不同版本中的封装结构可能会发生变化。此外,其特征提取工具在物联网固件上表现不佳,因为它并未针对固件进行优化。

4. 现实世界评估

4.1 组件使用情况

在这一部分,论文使用 FirmSec 在数据集上执行部署,以首先识别现实世界固件的 TPC 使用情况。实验结果表明,FirmSec 成功对整个数据集中 96% 的固件镜像进行了解包和反汇编。此外,论文总结了剩余固件镜像无法分析的原因:123个固件镜像被加密;TSmart 的972个固件镜像使用未知处理器,因此无法使用 IDA 插件来处理它们;论文不支持 269 个基于Linux的固件镜像中使用的未知文件系统。如下表所示,FirmSec 识别出 3,136 个固件映像中使用的 584 个不同的 TPC。 由于已识别的 TPC 较多,论文只展示每种固件中使用的前 10 个 TPC 的结果,如下图所示。

OpenWrt 的路由器涵盖最多的 TPC,每个固件映像平均含有56.69个TPC;TSmart 的智能家居则较少,平均每个固件映像仅有0.04个 TPC,因其大多采用单片固件;Fastcom 和 Foscam 的加密固件映像使得 FirmSec 无法识别其中的TPC;不同厂商的同类固件使用相似的 TPC,如路由器常采用 BusyBox、OpenSSL 等;各类固件中常见的 TPC 包括 BusyBox、Lua、OpenSSL;仅不到1% 的固件映像使用 MbedTLS,主要因 OpenSSL 具备更多功能,而一些供应商有自己的框架开发不使用 MbedTLS  的固件,如 IoT 框架 FreeRTOS。

4.2 漏洞引入情况

在获得固件中使用的 TPC 后,研究会在漏洞数据库中搜索相关的漏洞信息。研究在 34,136 个固件镜像中总共检测到 128,757 个潜在漏洞,涉及 429 个CVE。在研究中,每个 CVE 在固件映像中被视为一个单独的漏洞。下表列出了排名前 10 的 CWE 软件漏洞,涵盖了所有检测到的 CVE 的88%。结果表明,固件中存在多种安全问题,突显了物联网设备面临的巨大安全风险,因为它们普遍存在大量漏洞。特别是,小米路由器的漏洞情况十分严峻,平均漏洞数量高达 116.19 个,位居所有厂商之首。除此之外,其他厂商的路由器也存在大量漏洞,如TP-Link、D-Link、Trendnet 等知名物联网厂商的产品。值得一提的是,雄迈、海康威视和大华的相机每个固件镜像都存在近一个漏洞。尽管每个固件镜像中包含平均最多 TPC 的 OpenWrt 发现的漏洞相对较少,平均每个固件镜像仅有2.55个漏洞。当考虑到 Tmart 的规模较大时,FirmSec 在 Tmart 的固件中检测到的漏洞相对较少。在涉及的供应商中,Tmart表现最佳,每个固件映像仅包含0.19个漏洞。

研究发现,尽管检测到了大量的TPC,但大多数漏洞集中在少数TPC上。以三个方面(受影响固件映像数量、造成CVE数量、导致漏洞数量)排名前10的TPC为例:OpenSSL 包含最多的CVE,达132个,影响了1,304个固件映像,共导致52,135个漏洞。 Busybox 是使用最广泛的TPC,已在3,326个固件映像中被识别,检测到了 Busybox 的12个CVE,导致12,072个漏洞,平均每个CVE有1,006个漏洞。虽然 IPTables 在大量固件映像中被发现,但只导致了少量漏洞。此外,这10个TPC 中总共识别出386个CVE,占所有检测到的CVE的90%。

5. 扩展问题评估

5.1 威胁性相关分析

尽管已经发现了许多固件中的漏洞,但研究仍然需要了解不同类型和来自不同供应商的固件映像的脆弱程度。为了回答这个问题,研究评估了固件安全性,根据不同严重程度漏洞的平均数量。研究还发现一些严重的漏洞依然威胁着固件的安全性。

研究探讨了不同类型固件的漏洞情况,如下表所示。根据表中列出的每种固件中不同严重程度漏洞的平均数量,论文在最终选择了500个随机的OpenWrt路由器进行分析,以避免数量过多的OpenWrt路由器对结果带来偏差。发现路由器相比其他三种固件更容易受攻击,因为其具有最多不同严重程度的漏洞。路由器是唯一一种每个固件映像平均含有多个严重漏洞的设备类别。相机和交换机的严重漏洞和低级漏洞数量相近,但相机相比交换机具有更多高级别漏洞和中级别漏洞。智能家居作为最不容易受攻击的设备类别,其不同严重程度的漏洞数量较少。

根据论文对不同供应商固件漏洞进行研究,结果如下表所示。小米公司的固件存在最多不同严重程度的漏洞,使其更容易受到攻击。小米和Tomato-shibby的平均每个固件镜像中近3个严重漏洞,高于其他厂商。在TP-Link、Phicomm、D-Link、Trendnet和Fastcom中检测到的漏洞主要属于中等严重级别。而在OpenWrt、Dahua、Hikvision、Xiongmai和Tmart中,每个固件镜像的漏洞很少。此外,OpenWrt和雄迈的固件镜像均未发现严重漏洞。

在上述分析中,论文惊讶地发现一些关键漏洞仍然对数据集中的固件产生严重影响。以两个代表性严重漏洞,OpenSSL Heartbleed 和 glibc GHOST 为例,研究发现这两个漏洞影响了604个固件镜像,占数据集的1.8%,具体来说,来自8个供应商的380个固件镜像存在Heartbleed漏洞,来自4个供应商的224个固件镜像包含GHOST漏洞。

5.2 威胁的地理分布

为了研究易受攻击设备的地理分布反映地区之间物联网设备威胁程度的潜在不平衡性,研究采取了以下步骤:首先,将固件映射到确切的设备模型,这对于在物联网搜索引擎中搜索物联网设备至关重要。成功找到了1,247个固件映像对应具体的设备型号。其次,利用 Shodan 来查找这些可能存在漏洞的物联网设备的分布,并选择与漏洞固件版本相同的设备。通过选取关键字来搜索设备,例如使用 DIR-827 来查找 DIR-827 路由器,并选择对应版本为 1.0.3 的设备。根据搜索结果,整理出了易受攻击的物联网设备在各地区部署情况,如下图所示。

论文提出了易受攻击设备分布差异的三个可能原因:不同地区厂商销售的设备数量存在差异;不同地区工厂模式设备的安全性不同,某些地区销售的相同设备可能已经在工厂模式下配备了更新的固件;以及不同地区厂商的固件更新机制不同,部分地区可能会优先获得固件更新。

5.3 安全组件更新延迟

大多数由TPC引起的固件漏洞是由于固件仍在使用过时的TPC。然而,最新的TPC可能不适合固件,可能导致性能降低和稳定性受影响。供应商可能会忽略这些漏洞,仍然使用旧版本的TPC。鉴于这种情况,论文计划探讨固件中使用的TPC的延迟时间,即从固件所使用的TPC发布日期到固件发布时TPC最新版本的天数。

论文首先根据 TPC 的版本获取 TPC 的发布日期。 然后,论文获取相应固件的发布日期。 据此,论文推断出固件发布时固件中使用的TPC的最新版本。 最后,论文通过这两个发布日期之间的差异来计算延迟时间。 上图显示了每个供应商所使用的 TPC 的平均延迟时间。

Phicomm 使用的TPC延迟时间最长,达到 3457.2 天。 也就是说,斐讯还在使用十年前发布的 TPC。 OpenWrt 的延迟时间最短,不到两年。 这可能是 OpenWrt 漏洞很少的一个原因。小米的延迟时间也很长,接近七年。 此外,论文还注意到,小米每个固件映像包含的漏洞数量最多,这也证实了延迟时间与漏洞数量之间的关系。

D-Link、TP-Link 和 Trendnet 都有几种不同类型的物联网设备。 这些厂商有一个共同的现象,就是路由器的延迟时间比摄像头长。 所有涉及的固件镜像的 TPC 平均延迟时间为1948.2天,这表明他们使用的TPC已经落后了 5 年。 论文的结果揭示了物联网固件中过时的 TPC 的广泛使用。

5.4 通用公共许可违反

论文主要研究了固件中使用 TPC 可能导致复杂的许可证合规性问题。以思科未遵守许可要求而涉及诉讼为例,研究聚焦于两种高度限制性许可证带来的许可证违规:通用公共许可证(GPL)和Affero 通用公共许可证(AGPL)。这两种许可证条款是广泛采用的,基本要求开发人员在分发时应提供使用 GPL/AGPL 许可的 TPC 程序的源代码。根据论文的调查,发现了 2,478 个商业固件镜像可能违反 GPL/AGPL 许可条款。随后,研究对涉及厂商的开源政策展开。发现有四家供应商(TP-Link、D-Link、Trendnet和Hikvision)提供了下载固件源代码的分发站点。尽管如此,发现使用 GPL/AGPL 许可的 TPC 固件的部分源代码在其网站上无法找到。作者联系了相关厂商请求固件源代码,但除了 TSmart 外,其他厂商尚未做出回应。

论文总结了供应商不根据许可证要求开源固件的三个可能原因。首先,供应商可能无视许可证的限制。尽管诉讼程序复杂且在某些国家可能不适用,但缺乏强有力的措施来强制执行 GPL/AGPL 合规性。其次,开源固件可能引发新的攻击风险,因为攻击者可以通过审查源代码发现漏洞,如果供应商在其他固件中重复使用存在漏洞的代码,则可能造成更多固件镜像受影响。第三,固件可能存在许可证冲突,供应商可能同时应用商业许可证和开源许可证于固件中,可能导致许可证之间的冲突。

6. 讨论

局限性和未来的工作:作者计划从三个方面改进其工作。首先,他们将继续收集更多固件镜像以扩展数据集。尽管已经收集了34,136个固件镜像,但仍缺乏一些当前流行设备的固件,如智能助理设备。其次,作者将不断丰富其 TPC 数据库。目前,FirmSec 仅能检测数据库中包含的 TPC,但在分析过程中存在一些 TPC 级别的识别误报,因为数据库并未记录物联网固件中使用的一些不常见TPC。最后,论文将采用新技术对物联网设备进行更深入的分析。虽然 FirmSec 在发现 TPC 引起的 N-day 漏洞方面表现出色,但检测未知漏洞仍然具有挑战性。因此,作者计划结合模糊测试技术与 FirmSec,以发现新的漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值