XananasX7/safe-chain-rce-poc
GitHub: XananasX7/safe-chain-rce-poc
该项目复现并演示了 @aikidosec/safe-chain 包中 safeSpawn.js 因正则白名单缺失换行符过滤而导致的 Windows 远程代码执行漏洞。
Stars: 0 | Forks: 0
# safe-chain RCE PoC — `safeSpawn.js` 中的换行符注入
**CVE/报告:** AIKIDO-27N49N
**严重程度:** 高 — 远程代码执行 (RCE)
**受影响组件:** `@aikidosec/safe-chain` — `packages/safe-chain/src/utils/safeSpawn.js`
## 漏洞详情
`safeSpawn.js` 中的 `hasShellMetaChars()` 使用了一个正则表达式白名单,其中**未包含 `\n`、`\r`、`%` 或 `^`**。
在 Windows 上,safe-chain 使用 `spawn(fullCommand, { shell: true })` —— 这意味着包名中的换行符会拆分 shell 命令并执行任意代码。
```
// Vulnerable regex (line 25 of safeSpawn.js)
const shellMetaChars = /[ "&'|;<>()$`\\!*?[\]{}~#]/;
// ↑ missing: \n \r % ^
```
## 实时 PoC
请查看 **Actions** 标签页,了解在 `windows-latest` GitHub Actions runner 上运行真实 `aikido-npm` 和 `aikido-pip` 二进制文件的实时 CI 输出 —— 无补丁、无模拟,真实的 `os.platform() === "win32"`。
## 修复方案
```
// Add \n \r % ^ to the regex:
const shellMetaChars = /[ "&'|;<>()$`\\!*?[\]{}~#%^\n\r]/;
// Also escape % inside double quotes (cmd.exe expands even inside quotes):
return arg.replace(/(["`$\\%])/g, "\\$1");
```
标签:GNU通用公共许可证, MITM代理, Node.js, PoC, 命令注入, 数据可视化, 暗色界面, 暴力破解