UBI固件解包实例

1. 引入

在阅读cve-2026-25857(参考1)的作者博客中,网上搜到了这个固件,固件是一个17M的xxx.bin文件,也想自己分析下试试。但是用binwalk解包后,得到一个xxx.ubi文件。如何能将这个固件进行解包呢?

2. UBI固件

.ubi 文件 是嵌入式系统中用于 NAND Flash 的 UBI 卷镜像文件,核心用于存放带 UBIFS 的根文件系统(rootfs)。UBI全称是Unsorted Block Images(未排序块镜像),与bin二进制文件区别如下:

特性 .bin(原始二进制) .ubi(UBI 卷镜像)
本质 线性原始二进制 带 UBI 头部 + 逻辑卷管理的镜像
适用场景 Bootloader、裸数据分区、无文件系统区域 UBIFS 根文件系统、可动态管理的分区
坏块/磨损 无内置管理,依赖上层 内置坏块管理、全局磨损均衡
写入方式 直接按物理地址烧写 需通过 UBI 工具(ubiformat)刷入 MTD 分区

3. ubi解包

解包这类固件,主要使用ubi_reader这个工具(参考2):

具体来说,需要运行两条主要命令:

  1. 提取UBIFS 镜像文件

运行如下命令:

bash 复制代码
ubireader_extract_images xxx.bin -o test

能得到test文件夹,该文件夹中有两个.ubifs文件:

bash 复制代码
-rw-rw-r-- 1   img-411366783_vol-kernel.ubifs
-rw-rw-r-- 1   img-411366783_vol-rootfs.ubifs

该命令ubireader_extract_images xxx.bin -o test 是通过 ubireader 工具(专门解析 UBI/UBIFS 镜像的工具),从一个包含 UBI 结构的二进制镜像文件(xxx.bin)中,提取出其中所有的 UBI 卷对应的 UBIFS 镜像文件,并将这些文件保存到 test 目录下。

  1. 使用binwalk对.ubifs文件进行解包
bash 复制代码
$ binwalk -e img-411366783_vol-rootfs.ubifs
$ ll
_img-411366783_vol-rootfs.ubifs.extracted/
$ cd _img-411366783_vol-rootfs.ubifs.extracted/squashfs-root
$ ll
drwxr-xr-x  2 xx xx 4096  7月 31  2025 bin/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 cfg/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 cfg_bak/
lrwxrwxrwx  1 xx xx    9  2月 11 11:43 debug -> /dev/null
drwxr-xr-x  2 xx xx 4096  7月 31  2025 dev/
lrwxrwxrwx  1 xx xx    9  2月 11 11:43 etc -> /dev/null
drwxrwxrwx 15 xx xx 4096  7月 31  2025 etc_ro/
lrwxrwxrwx  1 xx xx    9  2月 11 11:43 home -> /dev/null
lrwxrwxrwx  1 xx xx   12  7月 31  2025 init -> sbin/busybox*
drwxr-xr-x  5 xx xx 4096  7月 31  2025 lib/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 mnt/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 picture/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 picture_bak/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 proc/
lrwxrwxrwx  1 xx xx    9  2月 11 11:43 root -> /dev/null
drwxr-xr-x  2 xx xx 4096  7月 31  2025 sbin/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 sys/
drwxr-xr-x  2 xx xx 4096  7月 31  2025 tmp/
drwxr-xr-x  7 xx xx 4096  7月 31  2025 usr/
drwxr-xr-x  6 xx xx 4096  7月 31  2025 var/
lrwxrwxrwx  1 xx xx    9  2月 11 11:43 webroot -> /dev/null
drwxrwxrwx  9 xx xx 4096  7月 31  2025 webroot_ro/

看到这样的目录结构,就知道解包成功了。

4. 总结

本文梳理了UBI固件与普通二进制固件的本质区别,明确了ubi_reader与binwalk工具的协同使用方法,解决了嵌入式固件分析中常见的UBI镜像解包难题。后续可基于本次解包获得的根文件系统,进一步开展CVE-2026-25857漏洞的深度分析与验证,也为同类UBI格式固件的解包提供了标准化的操作指引。

5. 参考

  1. https://github.com/onekey-sec/ubi_reader
  2. https://blog.evan.lat/blog/cve-2026-25857/
相关推荐
zenRRan14 分钟前
Karpathy公开附议:AI Agent 的输出格式,正在从 Markdown 走向 HTML
前端·html
燐妤23 分钟前
前端HTML编程5:JavaScript完全指南
前端·javascript·html
3D探路人30 分钟前
模灵 大模型聚合API 转发流程技术实现
java·大数据·开发语言·前端·人工智能·计算机视觉
中科固源39 分钟前
Wisdom平台技术解析:通讯协议安全与兼容性模糊测试实践
安全·模糊测试·商业航天
烛阴1 小时前
Unity资源加载进化论:从AssetBundle到Addressables,一文带你吃透手游资源管理
前端·c#·unity3d
TO_WebNow1 小时前
使用thinkPHP8.x 访问接口提示跨域
前端·php
掘金一周1 小时前
回家的时候用车,不回家感觉又没啥用,这车还要不要买 | 沸点周刊 5.14
前端
梦想的颜色1 小时前
前端UI宝藏SKILL——UI/UX Pro Max
前端·ui·ux
@insist1231 小时前
信息安全工程师-应急响应基础:核心概念、法律要求与分级标准
安全·软考·信息安全工程师·软件水平考试
無名路人1 小时前
uniApp 小程序 vue3 app.vue静默登录其他页面等待登录完成方式二
前端·微信小程序·ai编程