bikini/ghidra-12.1.2-rce-ace-calc-poc

GitHub: bikini/ghidra-12.1.2-rce-ace-calc-poc

针对 Ghidra 12.1.2 的条件性代码执行 PoC 集合,验证 Swift demangler、TraceRMI 调试代理和 SevenZipJBinding 解析器三个攻击面的安全风险。

Stars: 1 | Forks: 0

# Ghidra 12.1.2 条件性 ACE/RCE Calc PoC 本仓库打包了在审查 Ghidra 12.1.2 时发现的最接近的、已验证的代码执行条件。 关于分类,它刻意保持精确: - **ACE calc PoC:** 条件性 Swift demangler(反混淆器)路径执行。当 Swift demangler 分析器使用已恢复/配置的 Swift 工具目录时,这就是本地任意代码执行。 - **RCE calc PoC 形态:** 条件性 TraceRMI debugger-agent(调试器代理)命令执行。当不受信任的对等端可以驱动已创建的 TraceRMI debugger-agent 通道时,这就是真实的代码执行。 - **默认可达的 RCE 类攻击面:** SevenZipJBinding native 归档解析。这是 native 解析器攻击面的源码可达性证据。 ## 仓库内容 - `pocs/ace_swift_demangler_calc_poc.py` 创建一个虚假的 `swift-demangle` 工具,并在运行时通过写入标记并可选地启动本地平台计算器,来模拟 Ghidra Swift demangler 的进程启动 sink。 - `pocs/rce_tracermi_conditional_calc_poc.py` 检查 Ghidra 源码树中具备 TraceRMI 执行能力的 agent 方法,并为这些 sink 输出仅调用 calc 的命令形态。它也可以启动本地计算器作为本地验证的良性证明标记。 - `pocs/sevenzip_jbinding_reachability.py` SevenZipJBinding native 归档解析器路径的源码可达性检查器。 - `pocs/SevenZipReachabilityProbe.java` 可选的良性运行时探针,当调用者提供依赖 jar 时,它会通过 SevenZipJBinding 打开一个无害的 ZIP。 - `evidence/source-evidence.md` 针对三个审查过的攻击面的简短 source-to-sink(源码到 sink)证据。 - `docs/classification.md` 发现结果的分类说明以及为何这些声明是条件性的。 ## 快速开始 这些 PoC 是基于标准库的 Python 脚本。请使用你系统上存在的任何启动器:`python3`、`python` 或 `py -3`。 显式传入源码检出路径: ``` python3 pocs/rce_tracermi_conditional_calc_poc.py --ghidra-source /path/to/ghidra-12.1.2 ``` 或者设置 `GHIDRA_SOURCE`: ``` export GHIDRA_SOURCE=/path/to/ghidra-12.1.2 python3 pocs/sevenzip_jbinding_reachability.py ``` 以 dry-run(试运行)模式运行 ACE calc 模拟器: ``` python3 pocs/ace_swift_demangler_calc_poc.py ``` 运行 ACE calc 模拟器并启动平台计算器: ``` python3 pocs/ace_swift_demangler_calc_poc.py --run ``` 运行仅标记模式: ``` python3 pocs/ace_swift_demangler_calc_poc.py --run --no-calc ``` 在本地 Ghidra 源码检出中检查 TraceRMI 条件性 RCE sink: ``` python3 pocs/rce_tracermi_conditional_calc_poc.py --ghidra-source /path/to/ghidra-12.1.2 ``` 输出仅调用 calc 的 TraceRMI 命令形态,并启动本地计算器作为证明标记: ``` python3 pocs/rce_tracermi_conditional_calc_poc.py \ --ghidra-source /path/to/ghidra-12.1.2 \ --run-local-calc-demo ``` 运行 SevenZipJBinding 源码可达性检查: ``` python3 pocs/sevenzip_jbinding_reachability.py --ghidra-source /path/to/ghidra-12.1.2 ``` ## ACE:Swift Demangler 路径 Swift demangler 路径是一种条件性的任意代码执行条件。 相关的 source-to-sink 形态如下: 1. 程序/分析器状态可以影响 Swift 二进制文件目录。 2. Swift native demangler 在该目录下构建一个路径。 3. demangler 验证和符号 demangling 路径会启动已配置的 `swift-demangle` 可执行文件。 PoC 脚本创建了一个本地虚假 Swift 工具目录,并直接调用虚假的 demangler,以匹配进程启动形态。这证明了已配置 Swift demangler 条件下具备调用 calc 能力的 sink。 ## RCE:TraceRMI Agent 通道 TraceRMI 被归类为条件性 RCE,因为 debugger agent 方法包含通过 TraceRMI 控制通道暴露的 command/eval(命令/执行)sink。在 Ghidra 12.1.2 源码中看到的示例包括: - GDB agent:`execute(cmd)` 调用 `gdb.execute(cmd, ...)`。 - LLDB agent:`execute(cmd)` 路由到 LLDB 命令解释器。 - LLDB agent:`pyeval(expr)` 调用 Python `eval(expr)`。 一旦不受信任的对等端可以驱动此类暴露的 agent 通道,其影响就是在 debugger-agent 上下文中的代码执行。暴露的前提条件是 agent 通道可被不受信任的控制器或对等端访问。 RCE 脚本会记录仅调用 calc 的命令形态,并可以启动本地 calc 来演示 sink 的影响。请将其用于防御性复现规划以及补丁/安全加固的讨论。 ## SevenZipJBinding Native 解析器暴露 Ghidra 12.1.2 包含 SevenZipJBinding 16.02 时代的 native 代码,并将识别到的归档字节路由至该解析器进行进程内处理。这是一个严重的 RCE 类解析器暴露面,因为逆向工程师经常会打开不受信任的归档文件和固件容器。 包含的检查通过良性的源码检查和无害的归档样本生成证明了其可达性。 ## 可移植性说明 脚本接受来自 `--ghidra-source`、`GHIDRA_SOURCE` 或附近 `ghidra-12.1.2` 目录的源码路径。计算器启动会尽最大努力执行: - Windows: `calc.exe` - macOS: `open -a Calculator` - Linux: `xcalc`、`gnome-calculator`、`kcalc` 或 `qalculate-gtk` ## 预期输出 PoC 脚本默认会在 `artifacts/` 下写入标记: - `artifacts/swift-demangler-calc/swift_demangler_calc_marker.txt` - `artifacts/tracermi-conditional-rce/tracermi_local_calc_marker.txt` - `artifacts/tracermi-conditional-rce/tracermi_calc_payload_shapes.txt` `artifacts/` 目录会被 Git 忽略。 ## 负责任的使用 在规定的前提条件下,请将本仓库用于防御性验证、复现记录以及安全加固的讨论。
标签:Ghidra, Go语言工具, JS文件枚举, PoC, 云资产清单, 安全, 暴力破解, 超时处理, 逆向工具, 逆向工程