CVE-2022-4510:Binwalk 远程代码执行漏洞

CVE-2022-4510:Binwalk 远程代码执行漏洞

时间:2023-06-09 作者:安帝科技-CSX安全实验室


Binwalk 是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。
具体来说,Binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。

Part1 漏洞状态

Part2 漏洞描述


分析环境:
Kalix64
Binwalk v2.3.3

Part3 漏洞复现

1. 创建一个.pfs 文件头如下,然后打包成exp.zip

2. 正常binwalk执行之后输出

3. 在kali中用binwalk解析exp.zip binwalk -M -e exp.zip,并查看结果


4. 看到在kali桌面生成了一个_exp.zip.extracted 的文件夹。文件夹下面pfs-root目录下看到123.py 是我们pfs文件头写的文件名。
5. 构造验证pfs 并打包成exp.zip.
6. 构造的pfs文件头如下

7. 再次在kali中用binwalk解析 exp.zip

8.可以看到binwalk在正常输出之后又输出rce… 字段。证明复现成功!

Part4 漏洞分析

什么是PFS文件
PFS文件是由PhotoFiltre Studio(图像修饰程序)创建的选择文件。它包含图像编辑器的多边形选择工具使用的坐标,以便在给定坐标之间绘制线。PFS文件以纯文本格式存储。
漏洞源代码

问题出现在红框内部的代码
在解析pfs文件头的时候,会把pfs文件头内部的文件命和out_dir 拼接。拼接之后默认走else代码分支,并且对特殊符号没有校验导致可以使用../ 符号路径穿越。再利用binwalk的plugins功能。就可以释放py文件到binwalk的plugins目录下,从而代码执行。

Part5 修复建议

1. Binwalk软件升级到最新的2.3.4版本。
2. 代码要检测特殊符号,防止路径穿越。
————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com