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

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

3天内不再提示

TCP/IP 堆栈漏洞是嵌入式软件的警钟

张英 来源:小佳99 作者:小佳99 2022-07-15 15:43 次阅读

URGENT/11和其他最近的漏洞(例如与嵌入式 TCP/IP 堆栈相关的AMNESIA:33)表明在审查和审计软件供应链方面存在缺陷。责任不仅仅在于软件供应商,还指出嵌入式设备制造商需要评估的不仅仅是他们目前开发的产品

同时,这个问题不仅限于嵌入式软件,或具体的 TCP/IP 堆栈。相反,它暴露了由重用软件组件和频繁发现与之相关的新漏洞所造成的安全风险。

让我们仔细看看 Urgent/11 和 Amnesia:33 漏洞。两者都在嵌入式 TCP/IP 堆栈中,这是令人担忧的,因为网络连接是消费、医疗和工业应用中常用的物联网 (IoT) 设备最有可能的攻击媒介。尽管受影响设备上的网络堆栈是一个常见弱点,但这些漏洞通常与过时的软件版本有关。漏洞令人担忧,但可以修复和修补。

更令人担忧的是,已知漏洞并未得到修补。截至 2020 年 12 月,97% 的 URGENT/11易受攻击的设备仍未打补丁。这可以部分归因于嵌入式系统供应商、最终用户、经销商和集成商对他们暴露于这些漏洞的缺乏了解。

知名的漏洞集可能是 URGENT/11,它最初隶属于 Wind River VxWorks,影响许多流行的嵌入式实时操作系统 (RTOS) 使用的 Interpeak IPnet 嵌入式 TCP/IP 堆栈,并且是商业软件。URGENT/11 中的漏洞代表了软件弱点的名人录:缓冲区溢出、整数下溢、内存缓冲区越界访问、竞争条件、参数注入和空指针取消引用。

受影响的产品通常使用 ENEA、GreenHills Software、ITRON、IP Infusion ThreadX 和 Wind River 的嵌入式操作系统 (OS)。在所有情况下,这些供应商都更新或替换了其产品中受影响的 IPnet TCP/IP 堆栈。但是,这些操作系统的旧版本仍在数百万台设备上运行。

与 URGENT/11 类似,AMNESIA:33 漏洞集与一组嵌入式开源 TCP/IP 堆栈(uIP-Contiki、uIP、open-iscsipicoTCP、FNET 和 Nut/Net)有关。软件弱点也直接来自CWE Top 25;整数环绕、越界读写、整数溢出、不正确的输入验证和不正确的空终止。

pYYBAGLO-b2AUWA9AAK1DBl-GCQ315.png




picoTCP 是一种占用空间非常小的开源 TCP/IP 堆栈,用于许多 IoT 设备,现在在无数产品中都容易受到 Amnesia:33 漏洞的影响。(来源:GrammaTech)。

TCP/IP 堆栈漏洞(例如 URGENT/11 和 AMNESIA:33)在商业和开源嵌入式组件中都很普遍,并说明了对将要集成到设备中的所有类型的第三方软件进行尽职调查的重要性。

审计和管理嵌入式设备软件组件漏洞的最有效方法是维护软件材料清单 (SBOM)。这种方法不仅考虑了定制软件,还考虑了 RTOS、库(商业和开源)、板级支持包以及产品中使用的所有内容。SBOM 还将包括构成商业的组件(例如 RTOS 和附加组件,例如 TCP/IP 堆栈)和开源产品,包括所有版本和已知漏洞的详细说明。SBOM 的整体性很重要,因为任何产品的安全性都取决于其中最不安全的组件。

SBOM 是使用软件组成分析 (SCA) 创建的。但是,SCA 工具不能仅依赖源代码的可用性,因为许多商业产品仅作为二进制文件提供。相反,需要使用二进制分析的 SCA 工具来检测和检查在开发的发布、集成和构建阶段创建的二进制文件。

例如,依赖源代码的 SCA 工具无法检测二进制代码中的漏洞,而这是提供第三方产品的最有可能的方式。RTOS 和其他嵌入式软件通常是为特定目标架构预构建的,只有板支持包是由客户在本地定制和编译的。

SBOM 应该在产品生命周期的各个阶段进行维护,因为漏洞不断被发现,并且以前安全的组件可能变得不安全。它使开发团队能够对他们使用的第三方产品进行尽职调查。只要二进制签名可用于漏洞,就有可能检测到有风险的组件。在这个早期阶段,很容易修补、更新或更换产品。将 SBOM 更新为任何现有流程的一部分也很重要,无论是 CI/CD 管道还是其他流程。

在安全方面,运输或报废的产品通常很少受到关注。URGENT/11 和 AMNESIA:33 与过时和报废产品有关的事实表明,安全是整个生命周期的关注点。使用二元分析的优势在于可以分析现有和遗留产品以创建整个产品线的 SBOM。这为嵌入式设备开发人员以及他们所依赖的供应商提供了可能的安全风险预警。

这种场景的一个很好的例子是 picoTCP,这是一种占用空间非常小的开源 TCP/IP 堆栈,用于许多 IoT 设备。在过去的几年里,这个项目似乎已经走到了生命的尽头,几乎没有什么发展(看看 GitHub 的活动,写这篇文章时的最新提交是 15 个月前,大部分源代码在四年多的时间里都没有被触及。 ) 尽管有这一事实,但它仍被用于无数产品中,这些产品现在很容易受到 Amnesia:33 漏洞的影响。

使用 SCA 为产品组合创建 SBOM 是对组件和集成第三方软件进行编目以检测已知漏洞存在的重要步骤。这种方法允许制造商建立和维护一个组织范围的开源和内部/闭源库和可执行文件的存储库,因此他们知道他们交付的软件中实际包含什么。

审核编辑 黄昊宇

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

    关注

    4

    文章

    240

    浏览量

    26641
  • 堆栈
    +关注

    关注

    0

    文章

    182

    浏览量

    19753
  • 漏洞
    +关注

    关注

    0

    文章

    204

    浏览量

    15366
收藏 人收藏

    评论

    相关推荐

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着软件必须为特定的硬件平台量身定制。
    的头像 发表于 12-09 09:38 232次阅读

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件嵌入
    的头像 发表于 10-16 10:14 919次阅读

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+ Hypervisor应用场景调研

    ,比如系统软件和应用软件自身的漏洞、病毒和网络攻击、以及人为操作导致的破坏,Hypervisor的出现就是为了构建高可靠性的嵌入式系统,原来如此啊! 读到这里,我感觉Hyperviso
    发表于 10-14 11:21

    EsDA,一站嵌入式软件

    ,旨在提高嵌入式软件开发的效率、性能和可扩展性。EsDA全称是嵌入式系统设计自动化,它是一个由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多种软件
    的头像 发表于 09-15 08:10 278次阅读
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于嵌入式
    的头像 发表于 07-31 09:25 692次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>开发与AI整合

    USB嵌入式主机堆栈

    在USB标准下,USB设备之间不能直接通信。它们只能与控制一个或多个设备通信的总线的 USB 主机通信。常见的 USB 主机是 PC。本应用笔记讨论了 USB 嵌入式主机,它可以使嵌入式应用程序在各种 USB 设备中使用。
    发表于 05-03 09:13 188次阅读
    USB<b class='flag-5'>嵌入式</b>主机<b class='flag-5'>堆栈</b>

    为什么嵌入式系统需要堆栈分析?如何进行监控堆栈分析呢?

    随着代码行数从几千到上百万不等,嵌入式软件变得日益复杂,但总体目标依然是实现稳健、正确且快速执行的软件
    的头像 发表于 03-28 10:23 802次阅读

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 679次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    高端嵌入式实验平台

    一、整体概述 该嵌入式平台具有前沿性、专业性、高集成度、功能丰富等特点,平台涵盖嵌入式计算机技术、嵌入式硬件接口、嵌入式系统软件等关键技术点
    的头像 发表于 01-29 09:55 513次阅读
    高端<b class='flag-5'>嵌入式</b>实验平台

    汽车嵌入式软件的技能要求

    如果你希望开始在汽车嵌入式软件领域的职业生涯,必须掌握符合行业需求的全面技能。下面是一个路线图,列出了需要学习的关键技术和技能。
    的头像 发表于 01-23 11:09 1706次阅读
    汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>的技能要求

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入
    的头像 发表于 01-22 15:27 2266次阅读

    基于功能安全的汽车嵌入式软件单元验证技术研究

    随着汽车嵌入式软件功能的不断叠加,软件复杂性不断提升,对汽车嵌入式软件的安全性提出了更高要求,基于功能安全的
    的头像 发表于 01-07 11:27 1043次阅读
    基于功能安全的汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>单元验证技术研究

    嵌入式系统中堆栈监控的作用

    在微控制器或微处理器中,堆栈是内存的一个保留区域,用于存储临时数据和函数调用信息,管理函数的执行,跟踪返回地址、局部变量和函数参数。堆栈监控是嵌入式系统运行中起关键作用的一项安全措施,促进了
    的头像 发表于 01-05 11:13 489次阅读

    聊聊嵌入式软件分层

    今天以控制LED闪烁为例,聊聊嵌入式软件分层
    的头像 发表于 12-28 09:22 672次阅读