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

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

3天内不再提示

虹科在RAUC嵌入式固件更新框架中发现重大漏洞

hAR7_OPPOOIA 来源:广州虹科电子科技有限公 作者:广州虹科电子科技 2021-08-10 10:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

● 虹科Vdoo安全研究团队不断研究领先的嵌入式设备及其供应链,在RAUC 嵌入式固件更新框架中发现的重大漏洞——

● CVE-2020-25860是一个潜在的严重漏洞,其在RAUC中的 CVSSv3 得分为 8.8。此漏洞存在于 RAUC 的所有版本中,直到 1.5,其中包含补丁。

该漏洞是一个 Time-of-Check-Time-of-Use ( CWE-367 ) 问题允许有权限的攻击者在固件更新文件被验证后(但在安装完成前)覆盖它,从而允许安装一个任意的固件更新,绕过加密签名检查机制。

● 与供应链漏洞一样,很难准确估计有多少设备受其影响。鉴于RAUC这是一个开源工具,而且许多与供应商没有关系的不同公司都可以使用它,因此这种估计更加复杂。

RAUC背景

RAUC—Robust Auto-Update Controller,该项目始于 2015 年,被开发为轻量级工具,可为基于 Linux 的嵌入式设备执行故障安全的图像更新。 RAUC 允许嵌入式 Linux 开发人员在他们的嵌入式设备上集成一个强大的更新客户端,只需最少的努力,同时避免编写任何更新代码。RAUC框架支持许多常见的引导程序(U-Boot、grub等)和存储技术(ext4、UBIFS等),因此,它试图尽可能地接近嵌入式设备固件更新的 “统包”解决方案。 RAUC 的主要特性是安全性(原子性、故障安全更新操作)、保障性(加密签名检查)和可定制性(在安装过程中添加用户挂钩)。

技术深究

RAUC 使用捆绑文件作为保存新固件的存档。我们发现在固件升级过程中,此文件可以被攻击者替换(在初始验证步骤之后),并且通过这样做会安装恶意固件,从而有效地允许攻击者控制系统。运行rauc install bundle.raucb时RAUC 会运行以下内部函数:

check_bundle() – 使用 openssl 库调用验证包

mount_bundle() – 使用“mount”shell 调用挂载包

在这些步骤之后,安装的包被提取并覆盖当前固件。关键问题在于一旦 check_bundle() 完成运行,捆绑文件就会关闭,并且不会以任何方式保留已验证的数据。当 mount_bundle()开始运行时,mountshell 调用会导致重新读取包数据:

gboolean mount_bundle(RaucBundle *bundle, GError **error){...g_message(“Mounting bundle ‘%s’ to ‘%s’”, bundle-》path, mount_point);

res = r_mount_loop(bundle-》path, mount_point, bundle-》size,...gboolean r_mount_full(const gchar *source, const gchar *mountpoint, const gchar* t

gboolean r_mount_full(const gchar *source, const gchar *mountpoint, const gchar* type, goffset size, const gchar* extra_options, GError **error){...if (getuid() != 0) { g_ptr_array_add(args, g_strdup(“sudo”));

g_ptr_array_add(args, g_strdup(“--non-interactive”)); } g_ptr_array_add(args, g_strdup(“mount”));...g_ptr_array_add(args, g_strdup(source));...sproc = r_subprocess_newv(args, G_SUBPROCESS_FLAGS_NONE, &ierror);...

因此——攻击者可以在调用 check_bundle() 和mount_bundle() 之间切换包文件。这让攻击者可以部署任意恶意固件,基本上可以在设备上提供root权限。

b247f38a-ed16-11eb-a97a-12bb97331649.png

图 :攻击流程,当进程到达 mount_bundle() 时,攻击者可以替换包文件,因此 RAUC 将挂载未经授权的包

赢得竞争条件(在检查/挂载包调用之间替换包文件)的机会非常高,因为在包括shell 调用(“mount”命令)在内的两个操作之间存在不可忽略的代码量,这是一个非常缓慢的操作。

观察到的远程攻击场景

尽管在大多数情况下,虹科认为该漏洞可作为本地权限升级加以利用,但我们观察到一个真实场景,即远程攻击者可利用一组默认硬编码凭据利用该漏洞。目标设备使用了一组默认的硬编码凭据(用户名和密码设置为“admin”),首次登录时不需要更改这些凭据。这些凭证可以被能够访问设备固件的攻击者轻易提取,或者通过简单的暴力攻击来猜测。

查看设备的攻击面:

目标设备暴露了一个经过认证的 CGI 端点upload.cgi,它允许将任意文件上传到硬编码的文件路径 -/tmp/rauc/bundle.raucb

目标设备暴露了一个经过认证的 CGI 端点install.cgi,该端点运行硬编码的 shell 命令 -rauc install /tmp/rauc/bundle.raucb

两个 CGI 端点之间没有适当的锁定机制

在这种情况下,攻击者可以远程接管设备,只需调用:

upload.cgi 带有正确签名的固件

install.cgi

(很快)upload.cgi带有恶意固件

本地攻击场景和PoC

假设本地用户有调用 RAUC 的权限(例如,通过只允许rauc命令的 sudo 配置),但没有签署RAUC捆绑包所需的私钥,利用是没有价值的:将正确签名的固件复制到某个路径,例如: 。/bundle.raucb Invoke RAUC –sudo rauc install./bundle.raucb迅速用恶意的固件替换。/bundle.raucb

如果本地用户无法调用 RAUC 命令,假设调用 RAUC 命令的特权用户使用攻击者可以写入的路径,则这种情况也可以被利用。我们开发了一个概念验证,它利用了这个确切的场景:

PoC 接受要替换的包文件的完整路径

PoC通过监控一个默认目录(/mnt/rauc)来等待另一个用户运行rauc安装,该目录在验证步骤之后但在安装步骤之前被创建。

一旦验证结束(目录被创建),PoC 就会用任意的输入覆盖包文件。

攻击的bundle文件可以被移到正确签名的bundle文件上(这比在正确的位置写一个新文件要快)。

作为设备供应商

如何知道设备是否受此漏洞的影响?

可以通过在您的设备上运行此命令来检查您的RAUC 版本是否存在漏洞:

rauc --version

如果报告的版本低于1.5,则您的设备包含有漏洞的代码。实际上,只有当本地或远程攻击者有可能在安装捆绑包时修改该文件,该设备才会有漏洞。例如,这可能发生在以下情况:

非特权用户可以通过sudo机制、setuid机制或任何其他专有机制,以root权限调用rauc命令。例如,/etc/sudoers文件中的以下行将允许“vdoo”用户以 root 身份调用RAUC:

vdoo ALL=(root) /usr/bin/rauc

rauc install可以由非特权用户修改的捆绑路径随时调用。例如:

/usr/bin/rauc install /tmp/mybundle.raucb

由于/tmp默认情况下是全局可写的,因此通常任何用户都可以修改其下的文件。

虹科Vdoo 在其Vision平台中添加了一个适用性扫描器,可以通过检测所有RAUC 调用并检查相关安装路径的权限来自动验证是否发生这种情况,为您的设备保驾护航。

作为资产所有者

如何知道部署的设备是否存在漏洞?

不幸的是,似乎很难判断此漏洞是否存在,更重要的是,仅仅使用网络工具或不实际查看设备代码,就很难适用。

如果您的设备供应商为设备提供了软件物料清单 (SBOM),请查看是否使用了 RAUC,如果使用了,那么理论上您很可能容易受到攻击(除非版本明确列为 1.5),因为有漏洞代码存在。但这并不意味着该漏洞是可利用的。如有需要,请随时联系虹科Vdoo为您提供帮助。

如果无法升级RAUC

如何降低风险?

如上所述,这是一个经典的Time-of-Check-Time-of-Use 漏洞,其中攻击利用非原子性的动作,涉及到对资源的检查和资源的使用。在这种情况下,进行签名检查,用法为安装/升级。

通过确保安装是原子性的并且从安全路径发生,可以减轻攻击。在运行rauc install之前,将捆绑文件从全局可写位置复制到安全位置(仅限 root 可写)并从该路径运行安装。使用安全位置的存在作为锁定机制。这将确保未经授权的用户(无论是本地还是远程)无法插手安装过程。

这可以通过这个示例 shell 脚本来完成:

# Assuming firmware is uploaded to /tmp/uploads/bundle.bin# Assuming /data/fw_upgrade can be written to only by rootif [ ! -e /data/fw_upgrade/bundle.bin ];

then cp /tmp/uploads/bundle.bin /data/fw_upgrade/bundle.bin /usr/bin/rauc install /data/fw_upgrade/bundle.bin rm /data/fw_upgrade/bundle.binfi

请注意,在使用像Yocto这样的构建系统时,更改安装脚本可能并不比切换到固定的RAUC版本容易得多。

附录-虹科Vdoo安全性防护平台

虹科Vdoo是端到端的产品安全分析平台,在整个产品生命周期中自动化所以软件安全任务,确保所有安全问题得到优先处理、沟通和缓解。垂直无关的平台使各种行业的设备制造商和部署者能够跨多个业务线扩展其产品安全功能。虹科Vdoo自动保护连接产品的方法使客户大大缩短了上市时间,减少了资源需求,增加了销售量,降低了总体风险。

责任编辑:haq

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

    关注

    5186

    文章

    20146

    浏览量

    328816
  • 虹科电子
    +关注

    关注

    0

    文章

    723

    浏览量

    15164

原文标题:虹科方案 | 虹科Vdoo安全平台-在 RAUC 嵌入式固件更新框架中发现的重大漏洞

文章出处:【微信号:OPPOOIA,微信公众号:OPPOstory】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    干货 | 嵌入式AI崛起,CAN总线如何重塑新角色?

    你是否注意到,AI正从「云端」下沉,融入我们身边的各类设备?这就是「嵌入式AI」,它让终端设备拥有了感知、决策的能力。但一个关键问题随之而来:这些分散的「小智能」,如何被可靠地联结起来,协同
    的头像 发表于 11-26 17:03 1374次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>干货 | <b class='flag-5'>嵌入式</b>AI崛起,CAN总线如何重塑新角色?

    深入探讨AMD嵌入式开发框架的三大基石

    随着嵌入式系统复杂性日趋提升,嵌入式开发已不再只是编写软件/固件,更是关乎对软硬件生态系统进行协调。硬件与软件的相互依赖性与系统复杂性,实际上可能减缓产品的普及速度并延迟盈利时间,因此,业界亟需一条从探索、开发到部署的统一路径。
    的头像 发表于 11-24 09:52 257次阅读
    深入探讨AMD<b class='flag-5'>嵌入式</b>开发<b class='flag-5'>框架</b>的三大基石

    C语言嵌入式开发中的应用

    C 语言汽车电子控制系统开发中的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统中连接硬件和软件的桥梁,它负责实现嵌入式系统与外部设备之间的通信和控制。C 语言由于其对底层硬件的直接
    发表于 11-21 08:09

    案例 | 矿业数字化转型:owa5X如何赢得日立Wenco信任?

    一背景下,全球矿业系统领军企业Wenco与嵌入式设备专家Owasys的合作,及其对owa5X设备的采用,为行业提供了一个极具参考价值
    的头像 发表于 11-18 17:03 376次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>案例 | 矿业数字化转型:<b class='flag-5'>虹</b><b class='flag-5'>科</b>owa5X如何赢得日立Wenco信任?

    动态 | 2025年10月精彩回顾

    2025年10月精彩速览——出席2025上海国际嵌入式会议并发表演讲;自研HK-CoreTest车载总线测试软件首发上线;多场技术直播圆满收官...下面让我们一起回顾10月的
    的头像 发表于 11-01 09:02 857次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>动态 | 2025年10月精彩回顾

    亮相2025嵌入式会议 | 解读CAN XL与TSN如何驱动下一代E/E架构创新

    亮相2025上海国际嵌入式会议近日,2025上海国际嵌入式会议「汽车电子电气架构」分论坛在上海世博展览馆圆满落幕。作为聚焦智能汽车技术升级的核心交流平台,本次论坛围绕集中式E/E架
    的头像 发表于 10-21 17:32 1182次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>亮相2025<b class='flag-5'>嵌入式</b>会议 | 解读CAN XL与TSN如何驱动下一代E/E架构创新

    LuatOS脚本开发入门:嵌入式运行框架全解析!

    想搞懂LuatOS如何运行Lua脚本?本文深入剖析其嵌入式运行框架,涵盖虚拟机加载、任务协程、系统初始化等关键环节,适合初学者。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS
    的头像 发表于 09-26 17:45 260次阅读
    LuatOS脚本开发入门:<b class='flag-5'>嵌入式</b>运行<b class='flag-5'>框架</b>全解析!

    嵌入式开发新选择:LuatOS脚本框架入门教程

    LuatOS正成为嵌入式开发的新趋势!本教程带你从基础入手,全面了解其基于Lua的脚本开发模式与轻量级运行框架。 一、LuatOS 编程起步 1.1 底层固件怎么启动 LuatOS 脚本
    的头像 发表于 09-26 17:34 303次阅读
    <b class='flag-5'>嵌入式</b>开发新选择:LuatOS脚本<b class='flag-5'>框架</b>入门教程

    广州邮嵌入式通信电源系统:提升通信设备稳定性与效率的关键

    今天的信息化社会,嵌入式通信电源系统已经成为许多通信设备的核心组成部分。特别是广州邮嵌入式通信电源系统不仅确保了设备的稳定运行,还极
    的头像 发表于 08-30 11:01 429次阅读
    广州邮<b class='flag-5'>科</b><b class='flag-5'>嵌入式</b>通信电源系统:提升通信设备稳定性与效率的关键

    科技Arduino开发资源重大更新

    Silicon Labs (芯科技)近期于在线技术社群中发布了面向Arduino Core和Matter库的重大更新,带来了两个关键突破:全面支持Matter 1.4标准,以及人工智
    的头像 发表于 08-20 15:51 619次阅读

    新闻 | 再获行业认可!IO-Link模块荣获维科杯·OFweek 2025工业自动化「优秀产品奖」

    近日,备受业界瞩目的「维科杯·OFweek2025中国工业自动化与数字化行业年度评选」中,IO-LinkOEM嵌入式开发模块凭借技术创新与应用价值,荣获「优秀产品奖」。颁奖理由
    的头像 发表于 08-05 17:32 1003次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>新闻 | 再获行业认可!<b class='flag-5'>虹</b><b class='flag-5'>科</b>IO-Link模块荣获维科杯·OFweek 2025工业自动化「优秀产品奖」

    Python嵌入式系统中的应用场景

    你想把你的职业生涯提升到一个新的水平?Python嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的库和快速的开发周期,这使得它在某些
    的头像 发表于 03-19 14:10 1191次阅读

    嵌入式工业级显示器环保垃圾柜设备中发挥着至关重要的作用

    嵌入式工业级显示器环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜设备提供了一个直观、易用的交互界面。用户可以通过触摸
    的头像 发表于 02-21 11:36 571次阅读
    <b class='flag-5'>嵌入式</b>工业级显示器<b class='flag-5'>在</b>环保垃圾柜设备<b class='flag-5'>中发</b>挥着至关重要的作用

    如何提高嵌入式代码质量?

    技术 现代的嵌入式开发工具和测试技术可以极大地提升代码质量和开发效率: 1. 静态分析工具:如Coverity、Lint等,能够帮助发现潜在的代码缺陷和安全漏洞。 2. 单元测试和集成测试:编写
    发表于 01-15 10:48

    EEPROM嵌入式系统中的应用 EEPROM数据保护技术解析

    的数据进行擦除和重写。嵌入式系统中,EEPROM因其独特的特性而被广泛应用于存储关键数据,如配置参数、校准数据和固件更新等。 EEPROM
    的头像 发表于 12-16 16:37 3716次阅读