Karonte: Detecting Insecure Multi-binary Interactions in Embedded Firmware论文分享
原文链接:Karonte: Detecting Insecure Multi-binary Interactions in Embedded Firmware | IEEE Conference Publication | IEEE Xplore
低功耗、单一用途的嵌入式设备(如路由器和物联网设 备)已经变得无处不在。虽然它们自动化并简化了用户生活的许多 方面,但最近的大规模攻击表明,它们的数量对互联网基础设施 构成了严重威胁。不幸的是,这些系统上的软件依赖于硬件,并 且通常在具有非标准配置的独特、最小的环境中执行,这使得安 全性分析尤其具有挑战性。许多现有设备通过使用多个二进制来 实现它们的功能。这种多二进制服务实现使得当前的静态和动态 分析技术无效或低效,因为它们不能识别和充分建模各种可执行 程序之间的通信。在本文中,我们介绍了 KARONTE,一种静态分析 方法,能够通过建模和跟踪多二进制交互来分析嵌入式设备固 件。我们的方法在二进制文件之间传播污点信息,以检测不安全 的交互并识别漏洞。我们首先在来自不同厂商的 53 个固件样本上 评估了 KARONTE,表明我们的原型工具可以成功地跟踪和约束多二 进制交互。这导致了 46 个零日错误的发现。然后,我们对 899 个 不同的样本进行了大规模实验,表明 KARONTE 可以很好地适应不 同大小和复杂性的固件样本。
我们实现了 KARONTE,并使用两个数据集对其进行了 评估:53 个当前版本的固件样本和 899 个从相关工作中收 集的样本[5]。我们利用以前的数据集来深入研究我们方 法的每个阶段,并评估其查找 bug 的有效性。在我们的 实验中,我们表明我们的方法成功地识别了不同固件组 件之间的数据流,正确地传播了污点信息。这使我们能 够发现潜在的易受攻击的数据流,发现了 46 个零日软件 错误,并重新发现了另外 5 个 n 日错误,证明了我们的 方法在不同设计的复杂固件上的有效性(即,单片嵌入式 操作系统和嵌入式 Linux 发行版)。毫无疑问,一个可靠 的单二进制静态分析技术也可以发现这些漏洞,但它会 有大量的误报,使得分析在现实世界中站不住脚。在我 们对 KARONTE 的多二进制分析方法和以单二进制模式(即 禁用二进制数据流间跟踪)运行的相同分析进行的比较 中,每个样本产生的警报数量从平均 2 个增加到平均 722 个:KARONTE 提供了两个数量级的警报减少,从而降低了 误报率。如我们的评估所示,我们估计验证由单个二进 制分析产生的所有警报可能需要安全分析师大约四个月 的工作。另一方面,由我们的原型生成的警报的验证花 费了大约 10 个小时的累积时间。 最后,我们利用第二个更大的数据集来研究我们的工具 的性能,表明它能够在不同大小和复杂性的固件样本上很 好地扩展。 总之,我们做出了以下贡献: • 我们引入静态分析技术的新组合来执行多二进制污 点分析。去做 因此,我们设计了一种新的技术来跨多个二进制文 件精确地应用和传播污点信息。 • 我们提出了 KARONTE,一种新的静态分析方法来识别 二进制文件之间的不安全交互。KARONTE 从根本上减 少了误报的数量,使现实世界的固件分析变得切实可 行。 • 我们在 53 个真实世界的固件样本上实现并评估了我 们的 KARONTE 原型,表明我们的工具可以成功地在 多个二进制文件中传播污点信息,从而发现 46 个未 知(零日)错误,并且很少产生误报。然后,我们利 用 899 个固件样本的更大数据集来评估我们工具的 性能。 • 通过我们的工具获得的结果被另一所大学的独立研究 人员彻底验证。 本着开放科学的精神,我们发布了原型的实现和 docker 映 像来复制我们的工作环境。
我们提出了 KARONTE,一种检测嵌入式固件组件间不安全 交互的方法。KARONTE 利用新颖的静态分析技术来大幅减少 传统二进制分析技术在分析现实世界固件时产生的误报。 我 们 在 53 个 物 联 网 产 品 的 最 新 固 件 上 广 泛 评 估 了 KARONTE,显示了其有效性。我们的原型产生了 87 个警报 (比不考虑组件间交互的方法减少了两个数量级),其中我 们发现了 46 个以前未知的零日错误。最后,我们展示了 KARONTE 使用不同大小和复杂性的 899 个固件样本的集合可 以很好地扩展。