前言

最近,虹科工业物联网团队在调查客户设备固件出现的常规CVE(CVE-2018-1000500)时发现了一个问题:通常情况下,当检测到一个会对设备产生严重破坏的CVE时,我们会建议客户对该组件进行升级或使用补丁。但是CVE早在2018年就已经发布,尽管具有8.1的高评分,却一直没有被修复,这引起了虹科研究人员的注意。

深入研究后,我们发现最初发布 CVE 的研究人员向维护人员提交过一个代码补丁,但是由于补丁存在破坏现有的功能的风险,该补丁被拒绝了。下面虹科工业物联网团队将会对这个问题进行详细阐述,首先让我们简要回顾一下 BusyBox和受影响的组件BusyBox Wget。

漏洞介绍

BusyBox 工具包在单个可执行文件中实现了大量 Linux 性能,甚至可以替代 Linux init 系统。体积小且具有灵活性的特点使得它在嵌入式设备中很受欢迎。最初的 Wget 是一个应用广泛的 GNU 实用程序,用于使用命令从Internet服务器中检索文件,经常用于系统脚本,包括用于软件更新等。

BusyBox 因为其紧凑的特点取代了 Wget,但它并不支持所有的安全功能和选项。特别是当与不具备有效 TLS 证书的服务器连接时,BusyBox 版本的 Wget 不会对其进行中止,而只会打印错误消息并继续下载。下面是对常规 Wget 和 BusyBox Wget 会产生不同行为的举例说明:

事实上,BusyBox的 TLS 库并不支持证书验证。原始的 Wget 可以支持,并且必须使用一个明显的命令行开关(-- no-check-certificate)来进行启动,以防跳过证书验证。

这就是BusyBox的漏洞所在。攻击者可以通过模拟服务器来拦截 Wget的 HTTPS 请求,或者使用 DNS/ARP 病毒将请求重定向到攻击者控制的服务器,或者直接进行网络流量拦截。因为攻击者并不需要有效的 TLS 证书,所以他们可以用任意文件来替换请求的下载。

如果被替代的下载包中含有软件模块或更新项,这可能会直接导致恶意代码执行。如果下载包含配置或数据,攻击者可能恶意影响设备的功能。即使客户端在安装或执行之前检查了下载文件的完整性和真实性,攻击者仍然可能会通过让客户端下载无效的多GB文件或者连接非法服务器而导致拒绝服务。

BusyBox团队处理方式

BusyBox的维护人员认为,修复Wget并让设备维持不具备有效TLS证书的情况会碱坏设备的重要功能。这是安全员和工程师之间的常见冲突:安全研究人员将更加愿意为了保障设备安全性而牺牲一些设备现有功能的发挥,而工程师则更倾向于维持设备的功能运作,特别是替代方案会对已经部署在现场的设备功能造成碱坏的情况。

唯一的变化是当检测到无效的 TLS 证书时,1.29.0版本会添加一条错误信息。该错误信息会被打印到标准输出中,但不会在系统日志中留下长久的痕迹,这意味着错误可能随时发生,攻击者可以利用该设备,而不会被管理员发现。

虹科建议

到目前为止,BusyBox Wget 支持在子进程中启动 OpenSSL 客户机来执行 TLS 操作。此客户端完全支持证书验证逻辑,该逻辑由命令行选项来控制。因此,虹科建议应用下面的补丁,以便明确地将证书检查添加到 BusyBox Wget 中。首先,确保设置以下配置标志,这将使BusyBox 使用OpenSSL 的TLS/SSL 客户端。

CONFIG_FEATURE_WGET_OPENSSL=y

然后应用以下补丁:

index f2fc9e215..6bcc24421 100644

--- a/networking/wget.c+++ b/networking/wget.c@@ -662,7 +662,7 @@ static int spawn_https_helper_openssl(const char *host, unsigned port)     pid = xvfork();     if (pid == 0) {         /* Child */-        char *argv[8];+        char *argv[11];          close(sp[0]);         xmove_fd(sp[1], 0);@@ -690,6 +690,11 @@ static int spawn_https_helper_openssl(const char *host, unsigned port)             argv[6] = (char*)servername;         } +        /* Abort on bad server certificate */+        argv[7] = (char*)"-verify";+        argv[8] = (char*)"100";+        argv[9] = (char*)"-verify_return_error";+         BB_EXECVP(argv[0], argv);         xmove_fd(3, 2); # if ENABLE_FEATURE_WGET_HTTPS  

应用该补丁后,BusyBox Wget 目前展示正确,在一个无效的证书上停止(尽管带有一个通用的错误消息) :

虹科总结

在这个时代,使用嵌入式设备时我们都应该明白,为了功能而牺牲设备安全并向字段发布不安全的代码是不可行的。

这种做法在很大程度直接导致了物联网设备市场安全状况不佳。当然,高等级、多层次、硬件支持的安全性并不适用于每个产品,因为这涉及到成本和上市时间。但供应商应该期望他们的上游组件,比如像BusyBox的开源代码维护者,实施建立第一道防线所需的合理安全措施。

虹科 Vdoo 物联网设备安全防护与加固平台具有自动安全扫描产品可以帮助客户建立设备的安全配置文件,包括第三方组件可能引入的任何漏洞。从而慎重选择其组件供应商,而不需要过多的测试人员和团队。

虹科案例 | BusyBox Wget漏洞:一个早就应该解决的问题相关推荐

  1. 虹科案例|虹科物联网安全防护平台-Realtek RTL8195A Wi-Fi 模块的主要漏洞

    在最近的供应链安全评估中,虹科Vdoo分析了多个网络设备的安全漏洞.在分析过程中,我们发现并负责地披露了这些设备所基于的Realtek RTL8195A Wi-Fi模块的四个主要漏洞. 利用这些漏洞, ...

  2. 虹科案例 | 利用激光测距传感器进行锯齿定位

    PART ONE 应用描述 在这项应用中,两个激光测距传感器分别安装在一个凸出部分的末端的两侧,用以测量其两侧到锯齿的距离的差.一个微型控制器会按照预设,记录测量数据并提供一个方便快捷的前后位置校准的 ...

  3. 虹科案例 | 解决ASRS系统的痛点问题居然这么简单?(上)

    摘要 ASRS(自动存储和检索系统)在内部物流领域变得越来越常见.内部物流包括优化.整合.自动化和管理履行或配送中心内的货物物流流动. ASRS穿梭机经常用在具有多个存储级别的配送中心的仓库或库存集装 ...

  4. 虹科案例 | 解决ASRS系统的痛点问题居然这么简单?(下)

    ASRS中的定位器 在考虑传感技术时,重要的是每种技术都能够以最高程度的重复性和精确度保持绝对分量,并非所有的方法都是一样 托盘梭子和立式起重机在任何时候都要求绝对位置. 托盘梭子: 过道位置 行位置 ...

  5. 虹科案例分享丨世界领先的矿业公司(英美资源集团)与虹科-Atheer合作

    虹科案例分享丨世界领先的矿业公司(英美资源集团)与虹科-Atheer合作   摘要 世界领先的矿业公司之一.总部位于伦敦的英美资源集团(Anglo American)与虹科-Atheer合作,推动了劳 ...

  6. 虹科案例高速相机打破了实时混合现实的障碍

    虹科案例高速相机打破了实时混合现实的障碍 在3D中捕捉现实的问题 深度学习需要辅助 提供更高速的相机 HK HZ-65000-G: 100GigE 相机 特性 \ 在3D中捕捉现实的问题 媒体公司一直 ...

  7. 【虹科案例】用于超高磁场的虹科 digitizerNETBOX——高采样率和完全同步采样

    应用背景 国际 MegaGauss 科学实验室是东京大学固态物理研究所 (ISSP) 的一部分.实验室的目的是研究固态材料(如半导体.磁性材料.金属.绝缘体.超导材料)在超高磁场下的物理特性,这些领域 ...

  8. 虹科案例 | 如何快速精准监测打桩机打桩深度?

    想要精准测量打桩设备每个桩的测量深度,以正确设置多排电池板的太阳能农场?但是由于测量环境恶劣,导致普通传感器无法正常工作?那快了解一下我们的虹科Dimetix激光测距传感器吧,它可以完美解决上述问题! ...

  9. 虹科案例 | 监测各种材料液位居然如此轻松?

    应用背景 1 天送达标准给公司带来了压力,要求他们比以往任何时候都更快.更高效地处理物品.对于依赖散装材料的行业尤其如此.例如: ·  农业 ·  建造 ·  塑胶成型 ·  食品加工 许多这些行业通 ...

最新文章

  1. 批处理-DHCP绑定IP地址
  2. 关于对php-fpm的压力测试
  3. LINQ系列:LINQ to ADO.NET概述
  4. white board and magnet
  5. Ubuntu18.04 安装Python2.7.6
  6. flume 写入文件服务器,Flume环境配置以及基本操作
  7. WINDOWS的SHELLCODE编写高级技巧
  8. 特斯拉:芯片短缺至移动充电连接器涨价
  9. 看过各地的方言标语,才明白什么叫文字的力量
  10. Mysql报错Fatal error occurred in the transaction branch - check your data for consistency
  11. 【机房收费系统】---导出Excel表
  12. 深度相机(七)--体感设备对比
  13. php 编译安装参数详解
  14. 云小店商城源码修复30套模板支持一键对接各大系统
  15. 重磅!2022年JCR正式发布(附最新影响因子详单)
  16. 关于STM32、温度传感器论文的参考文献
  17. 微信UnionID作用
  18. 不到一个月独自一人开发斗地主游戏(h5 + 安卓 + 苹果)
  19. python求和函数详解_python 中求和函数 sum详解
  20. x86汇编游戏——2048

热门文章

  1. 小应用程序设计(一)整人代码(我是猪)
  2. QGroupBox互斥勾选框
  3. 华为云讲解:1. Istio架构与原理
  4. win10文件夹无法打开,双击闪屏
  5. 自动化设备数据采集系统如何实现
  6. 计算机音乐谱消愁,毛不易《消愁》简谱
  7. 如何用python使用递归实现1加到100
  8. 《鬼吹灯》作者申请“鬼吹灯”商标,为什么还会被驳回?
  9. XShell调整字体大小以及样式
  10. 闲话中国人的竖式乘法和埃及人的二分乘法