0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

有效的嵌入式软件安全测试

星星科技指导员 来源:ADI 作者:ADI 2023-06-29 14:27 次阅读

互联嵌入式系统在我们的日常生活中变得越来越普遍,也更容易受到攻击。嵌入式软件安全测试的现有技术依赖于源代码或二进制文件。但是,测试二进制代码是检测漏洞的困难方法,因为源代码语义会丢失。这使得识别内存安全违规和损坏变得困难。在嵌入式系统中,高级源代码往往与手写汇编代码混合在一起,当前基于源代码的工具无法直接处理这些代码。

但是,有一个新框架可用,使您能够对嵌入式系统软件执行系统范围的安全测试。开源的 Inception 框架引入了嵌入式系统中符号执行的新技术。简而言之,符号执行是一种实现高代码覆盖率并在检测到错误时生成测试用例的技术。我的EURECOM同事Giovanni Camurati和Aurélien Francillon,以及我将在论文中更多地谈论Inception。

Inception背后的动机是帮助开发人员发现其连接的嵌入式系统中的漏洞。毕竟,嵌入式软件中的漏洞可能会产生可怕的后果。例如,用于越狱某些智能手机的引导ROM漏洞无法在软件中修补,因为引导加载程序在掩码ROM中是硬编码的。因此,能够彻底测试此类低级嵌入式软件至关重要。与仅使用二进制代码相比,基于源代码的测试可以更好地检测错误。但是,高级编程语言 (C/C++) 通常与手写汇编混合(以执行手动优化或启用硬件功能)。在某些情况下,为板级支持包或专有库代码提供二进制代码。由于这些原因,测试嵌入式系统软件需要对所有这些语言的大量支持。

Inception 如何发现漏洞

初始由三个关键组件组成:

Inception 转换器从高级源代码、手写程序集、二进制库和部分处理器硬件行为生成和合并 LLVM 位代码。

基于 KLEE 的 Inception 符号虚拟机执行符号执行。它使用多种策略来管理不同级别的内存抽象、与外围设备的交互和中断。

Inception Debugger是一个高性能的JTAG调试器,它将内存访问重定向到真实硬件。

Camurati,Francillon和我使用53,000个测试验证了我们的实现,这些测试将Inception执行与Arm Cortex-M3芯片上的具体执行进行了比较。在 USENIX 的演讲中,我们将讨论我们如何在 1624 个合成易受攻击的程序、4 个真实的开源和工业应用程序以及 20 个演示的基准上展示 Inception 的优势。在这次检查中,我们发现了八个崩溃和两个以前未知的漏洞,这突出了Inception框架在嵌入式设备固件测试方面的效果。

在实际的产品开发方案中,Inception 框架对于商业引导加载程序非常有用,因为它们具有低级代码并且经常解析不受信任的输入。当真正的硬件尚不可用时,引导加载程序很难测试。我们分析了一个安全引导加载程序,它支持存储在一次性可编程(OTP)内存中的多个引导选项。在特定模式下执行时,引导加载程序会填充一个结构,其中包含有关要加载的应用程序的信息。结构位置保存在未初始化的SRAM位置(未初始化的指针称为p_header)。如果无效写入未触发任何其他错误,引导加载程序仍可以在start_address时执行并成功加载应用程序,这使得问题难以在实际硬件上检测到。它不会在FPGA原型上崩溃,因为SRAM在启动时初始化为0,而硅片上的情况并非如此。此外,稍后尝试检测错误(例如在硅片上)将付出高昂的代价。因此,攻击者可以获得对p_header值的部分控制权。我们还在商用芯片的软件开发工具包上测试了Inception。硬件原型尚不可用,因此我们将外设读取配置为返回不受约束的符号值。Inception 发现了一个测试用例,其中逐位移位依赖于不受信任的值;该错误会导致外围设备配置错误和意外行为。最后,我们将 Inception 框架应用于正在开发的商业支付终端。我们 使用 其 FPGA 原型 来 重新 定向 大多数 外 设 和 其 中断。Inception检测到八个潜在漏洞。

增强嵌入式软件测试

在嵌入式应用程序中,手写汇编和第三方二进制库的使用相当普遍。通常,即使内存变得更便宜并且编译器效率提高,也有必要手动优化代码。程序集还用于直接与一些低级处理器功能交互。但是,这限制了传统的基于源代码的测试框架的使用。Inception 框架提供了一种强大的方法,可以在源代码可用时增强嵌入式软件测试。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19096

    浏览量

    228789
  • 嵌入式
    +关注

    关注

    5058

    文章

    18972

    浏览量

    301894
  • 源代码
    +关注

    关注

    96

    文章

    2943

    浏览量

    66613
收藏 人收藏

    评论

    相关推荐

    嵌入式软件测试的参考书籍有哪些?

    》是2004年电子工业出版社出版的图书,作者是布鲁克曼。内容简介《嵌入式软件测试》立足于工业实践,旨在为有效控制复杂的嵌入式
    发表于 10-27 06:50

    什么是嵌入式软件

    的自控软件等等。嵌入式系统因其低成本、体积小、低功耗、稳定性和实时性强等特点将会越来越被人们所应用。什么是嵌入式测试?依托于质量保证,安全
    发表于 10-28 08:45

    嵌入式软件测试流程

    过程中,所接触到的文档,以及,要输出的测试文档,全都是使用的英文的。从事的是嵌入式软件的信息安全方面的测试
    发表于 12-20 07:07

    基于模块化设计的嵌入式软件测试方法

    分析嵌入式软件的特点,综述传统的软件测试方法;针对嵌入式软件的特点,提出
    发表于 05-18 13:26 23次下载

    基于模块化设计的嵌入式软件测试方法

    摘要:分析嵌入式软件的特点,综述传统的软件测试方法;针对嵌入式软件的特点,提出
    发表于 04-07 00:32 2017次阅读
    基于模块化设计的<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>方法

    基于CodeTEST的嵌入式软件测试技术

    嵌入式软件测试有助于提高嵌入式软件质量和可靠性。因此,利用CodeTEST相对于其他嵌入式
    发表于 01-17 15:53 41次下载

    嵌入式Linux软件测试框架的研究

    嵌入式Linux 软件是最难测试的一类软件。在测试过程中通过使用有效
    发表于 06-07 17:14 29次下载

    嵌入式软件测试的经典参考书PDF电子书免费下载

    嵌入式软件测试》立足于工业实践,旨在为有效控制复杂的嵌入式软件
    发表于 05-05 08:00 21次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>的经典参考书PDF电子书免费下载

    嵌入式测试

    一、嵌入式软件测试的方法  嵌入式软件测试分为4个阶段,即模块
    发表于 10-19 18:32 18次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>测试</b>

    嵌入式软件测试参考书籍

    测试》是2004年电子工业出版社出版的图书,作者是布鲁克曼。 内容简介 《嵌入式软件测试》立足于工业实践,旨在为有效控制复杂的
    发表于 10-20 12:06 51次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>参考书籍

    嵌入式软件测试研究意义,嵌入式软件测试的研究

    。大多数软件测试方法都可以直接或间接地用于嵌入式软件测试,但是由于操作系统的实时和嵌入式特性,
    发表于 10-20 17:20 17次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>研究意义,<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>的研究

    嵌入式软件接口怎么测试,嵌入式系统接口测试策略.doc

    嵌入式系统接口测试策略嵌入式系统接口测试策略摘要:在日益广泛应用的嵌入式系统中,软件
    发表于 10-20 19:06 16次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>接口怎么<b class='flag-5'>测试</b>,<b class='flag-5'>嵌入式</b>系统接口<b class='flag-5'>测试</b>策略.doc

    嵌入式软件测试

    **嵌入式软件测试工程师#有合适的可以留言#**科华恒盛职位介绍:嵌入式软件测试工作职责:1、负
    发表于 10-21 10:06 12次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>

    测试嵌入式软件测试VS一般软件测试

    文章目录1)什么是软件测试测试的目的:软件测试的特点:软件
    发表于 10-21 13:06 31次下载
    【<b class='flag-5'>测试</b>】<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>VS一般<b class='flag-5'>软件</b><b class='flag-5'>测试</b>

    几款常见的嵌入式软件测试工具

    说起嵌入式软件测试,我们先快速了解一下嵌入式软件自身的特点。嵌入式
    的头像 发表于 02-14 15:50 7378次阅读
    几款常见的<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>测试</b>工具