嵌入式 Linux 设备的“瑞士军刀” BusyBox 受多个漏洞影响
聚焦源代码安全,网罗国内外最新资讯!
作者:Elizabeth Montalbano
编译:代码卫士
研究人员在嵌入式 Linux 应用使用的流行程序BusyBox 中发现了14个漏洞,可导致拒绝服务;其中10个漏洞还可导致远程代码执行。
研究人员指出,在这14个漏洞中,其中1个漏洞可泄露设备信息。研究人员深入分析了当前全球顶级运营技术和物联网设备都在使用的软件套件 BusyBox。BusyBox 被称为嵌入式 Linux 的“瑞士军刀”,由Unix 工具即被打包为单个可执行文件的小程序组成,包括一个完全开发的 shell、一个 DHCP 客户端/服务器和小工具如 cp、ls、grep 等组成。
这一发现起着巨大作用,因为 BusyBox 不仅用于嵌入式 Linux 设备中,还用于设备之外的无数 Linux 应用中。研究人员指出,虽然发现的漏洞仅存在于特定案例中,但如被利用则可造成极其严重的后果。不过好在利用这些漏洞需要一定的条件。
01
漏洞概述
这些漏洞的CVE 编号为从CVE-2021-42373到 CVE-2021-42386,影响 BusyBox 版本 1.16至1.33.1(不同漏洞的影响版本各不相同)。这些漏洞还影响多个小程序,如 “man”、“lzma/unizma” 和 “ash” 分别受一个缺陷影响,”hush” 受两个缺陷影响,而“awk”受9个漏洞影响。
由于这些小程序并非守护进程,它们只有在接收到不受信任数据(一般通过命令行参数接收)时才可遭利用。研究团队分析发现,总体而言,使用 BusyBox 的40%的固件包括与其中一个受影响小程序相关的 BusyBox 可执行文件,使得该问题“在基于 Linux 的嵌入式固件中极为广泛“。然而,出于多种原因,这些漏洞目前并未对受影响设备造成严重威胁。
02
利用复杂度高
例如,危险性最大的缺陷是CVE-2021-42374,它是位于 unlzma 中的界外堆读取漏洞,可导致拒绝服务和信息泄露。然而,如研究人员详细解释的那样,该漏洞仅可在解压构造的lzma压缩输入时才能被用于攻击设备。Lzma 是使用目录压缩的压缩算法,并使用range 编码器编码输出。利用该缺陷需要满足两个具体的编码条件:“buffer_pos = 0” 和 “rep0 = offset + dict_size”。要满足这些条件,攻击者需要准备一个特殊构造的用 lzma 编码的流,当解码时将满足这些条件并最终泄露设备内存。
虽然拒绝服务漏洞更易于利用,但小程序几乎总是以单独的fork 进程运行的事实通常能够缓解该影响。最后,大多RCE缺陷(尤其是出现在 “awk”小程序中的缺陷)也难以利用,因为“从外部输入处理 awk 模式的情况很稀少而且通常是不安全的)。
不过,研究人员建议使用 BusyBox 的设备更新至最新版本,且开发人员应确保未使用受影响的小程序。
推荐阅读
Linux 修复严重的内核代码执行漏洞
谷歌发布 Linux 内核提权漏洞奖励计划,综合奖金最高超30万美元
微软在 Linux 虚拟机偷偷安装Azure App,后修复严重漏洞但Linux虚拟机难以修复
被利用达数百万次、瞄准 Linux 系统的 Top 15漏洞
原文链接
https://threatpost.com/busybox-security-bugs-linux-devices/176098/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
嵌入式 Linux 设备的“瑞士军刀” BusyBox 受多个漏洞影响相关推荐
- linux spidev 应用_嵌入式Linux设备树语法总结
1 设备树的说明 在写完嵌入式驱动总结后,对于设备树相关的语法和使用一直都想进行系统的描述,但是因为最近比较忙碌,所以一直拖到现在才完成初版,对于整个嵌入式Linux驱动开发中,设备树语法和构建是其中 ...
- 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...
- 嵌入式Linux设备驱动程序:发现硬件配置
嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...
- 嵌入式Linux设备驱动程序:编写内核设备驱动程序
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...
- 嵌入式linux仪器,一种基于嵌入式Linux设备双系统的启动方法
一种基于嵌入式Linux设备双系统的启动方法 [技术领域] [0001]本发明涉及一种基于嵌入式Linux设备双系统的启动方法. [背景技术] [0002]Linux操作系统特别是其嵌入式系统由于其源 ...
- linux java升级版本_为嵌入式Linux设备实现更新/升级系统
我有一个在嵌入式Linux设备上运行的应用程序,并且偶尔会对软件进行更改,有时也会对根文件系统甚至已安装的内核进行更改 . 在当前的更新系统中,只删除旧应用程序目录的内容,并在其上复制新文件 . 当对 ...
- 【IoT开发工具箱 | 02】嵌入式Linux设备网速测试方法
这是机器未来的第48篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126847220 <IoT开发工具箱系列> ...
- 嵌入式linux设备驱动开发,嵌入式Linux设备驱动开发简介.pdf
清远见--嵌入式培训专家 http :// "黑色经典"系列之<嵌入式Linux 应用程序开发详解> 11 章 嵌入式Linux 设备驱动开发 本章目标 本书从 6 章 ...
最新文章
- 和12岁小同志搞创客开发:手撕代码,点亮LED灯
- [转] C# 获取程序运行目录
- 今天微软的office 2010终于发布了!
- 【Git】Git-常用命令备忘录(二)
- [跨平台系列三Docker篇]:ASP.NET Core应用
- 五、操作系统——内存相关基础知识 和 进程运行的基本原理(详解)
- 给还是不给?又一个国家要求苹果必须为iPhone 12提供充电器
- 关于生命周期函数dealloc的使用小结
- 《计算机组成原理》BCD码 8421编码原理剖析
- win7 安装 memcached
- Windows Moblie 笔迹图板开发
- python如何提取数据_python提取数据的常用方法
- dex2java_dex2jar 使用方法 | 学步园
- 深入理解Eureka自我保护机制
- 用一行python代码用openpyxl找到excel某一列的最大行数
- android倒影效果,Android 设置图片倒影效果
- 全球及中国HSK刀柄行业投资态势及前景建议研究报告2022版
- 探究文件上传安全:upload-labs靶场的绕过技巧
- 前端处理sku表格数据
- 嵌入式文件系统损耗平衡算法
热门文章
- 黑客成长之路-01.新手篇-设置路由器
- sed基本用法 sed文本块处理 、 sed高级应用
- 使用 Item,ItemManager 在 XNA 中创建物品和道具(十六)
- 文本过滤--grep 1
- umail邮件服务器如何保证数据安全性?
- 一起谈.NET技术,Silverlight 游戏开发小技巧:实现街霸4的选人界面
- 组策略最佳实践之“降龙十八掌”
- kepserver 6.5_油价下调!加满一箱油少花6.5元……
- 微信公众帐号开发教程第9篇-QQ表情的发送与接收
- QEMU, KVM, QEMU-KVM 和 Goldfish