Files
reverse-skill/docs/PACKAGE-SECURITY-AUDIT.md
2026-08-08 18:32:33 +08:00

128 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# reverse-skill 包内安全审计(可执行面)
> 日期:2026-08-02
> 范围:`skills/**/scripts`、`skills/scripts`、`kali/scripts`、`burp-mcp-full` 可执行脚本与 bootstrap 清单
> **不含**:`src-hunter` / payloader 等**教学型 payload 文档**(其 DROP/注入样例属方法论,非自动执行)
## 结论(总评)
| 级别 | 判定 |
|------|------|
| **后门 / 主动删库 / 格式化磁盘** | **未发现** |
| **管道下载执行(curl\|sh / IEX DownloadString)** | **未发现** |
| **硬编码云密钥 / 私钥** | **未发现**(文档中的 `sk-` / `BEGIN RSA` 为检测示例) |
| **供应链残余风险** | **已部分加固(中低→低)**:钉死 `@latest`;GitHub 下载支持 **manifest SHA256 + API digest** |
**总评:可执行 skill 脚本面当前未发现植入式后门或「一键删库」逻辑;危险删除均限定在工具重装临时目录 / case 输出目录。**
### 2026-07-18 加固(本提交)
| 项 | 动作 |
|----|------|
| jshookmcp | `@latest` → `@0.3.4` |
| pentestswarm | `@latest` / docker `:latest` → `@v0.1.0` / `:v0.1.0` |
| jadx | pin `v1.5.6` + `assetSha256` |
| apktool | pin `v3.0.2` + `assetSha256` |
| bootstrap PS/sh | 下载后 `Assert-DownloadedFileIntegrity` / `verify_sha256`;优先 manifest 哈希,其次 GitHub `digest`;失败删文件并中止 |
| 未钉哈希的 release | 仍可安装,但 **WARN** 并打印实际 sha256 |
### 2026-08-02 安全修复
| 项 | 修复 |
|----|------|
| Kali quick setup | 使用 `getent` 解析 sudo 用户 home,移除 `eval` |
| Frida process listing | 使用 `frida-ps` 参数数组,移除内联 Python 代码拼接 |
| Burp MCP token | 使用受限临时文件原子替换,POSIX 文件权限固定为 `0600` |
| Burp MCP bridge | 按 MCP 换行消息解析,并在 Burp 启动后按需重连 |
| Anything Analyzer MCP | bootstrap 默认启用 bearer auth,并通过可选宿主适配器注册凭据 |
| IDA MCP startup | 逐个结束旧进程,避免多 PID 参数展开错误 |
## 扫描方法
对可执行扩展(`.ps1` / `.sh` / `.py` / `.js` / `.java`)检索:
- `Invoke-Expression` / `IEX` / `FromBase64String` / `DownloadString`
- `curl|bash` / `wget|sh` 管道执行
- `DROP DATABASE|TABLE`、`rm -rf /`、`Remove-Item ... C:\Windows`
- 反弹 shell 形态(`/dev/tcp` 滥用、`TcpClient` 回连)
- 隐藏窗口启动(复核用途)
第二轮:人工阅读 `bootstrap-reverse.ps1/.sh` 下载与删除路径、`mcp-bridge.js`、图表/密码学 Python 脚本。
## 发现明细
### 1. 删除操作(均为预期清理,非删库)
| 位置 | 行为 | 风险 |
|------|------|------|
| `bootstrap-reverse.ps1` `Expand-ArchiveIntoDirectory` | 删除目标安装目录后重装;删除 `%TEMP%\reverse-bootstrap-*` | 仅工具安装路径,非用户业务库 |
| `bootstrap-reverse.ps1` anything-analyzer | 失败时 `Remove-Item node_modules` 后 `pnpm install` | 限定克隆的工具仓 |
| `apk-reverse/scripts/decode.*` | 清理任务输出目录 jadx/apktool out | 限定 task 根 |
| `case-init.ps1` | 清理临时目录 | 临时 |
| `bootstrap-reverse.sh` | 同类 temp / 安装目标清理 | 同左 |
**未发现** 针对 `C:\`、系统目录、任意数据库连接串上的 `DROP`/`TRUNCATE` 可执行逻辑。
### 2. 网络行为(工具自举,非 C2)
| 位置 | 行为 | 说明 |
|------|------|------|
| `bootstrap-reverse.ps1` | `api.github.com` 拉 release;`Invoke-WebRequest` 下 zip/jar | 仓库名来自 **manifest 白名单** |
| `bootstrap-reverse.sh` | `curl` / `git clone` / `pipx` / `npm` | 同上 |
| `mcp-bridge.js` | 仅 `127.0.0.1:9876` HTTP → Burp | 本地环回 |
| `ToolDiscovery.ps1` | 探测 `http://host:port/mcp` | 健康检查 |
| `kali/.../tool-discovery.sh` | `(echo >/dev/tcp/$host/$port)` | **端口探测**,非反弹 shell |
### 3. 隐藏窗口
| 位置 | 用途 |
|------|------|
| `bootstrap-reverse.ps1` `Start-Process ... -WindowStyle Hidden` | 后台启动 `pnpm dev`(anything-analyzer) |
| `ida-reverse/scripts/start.ps1` | 启动 IDA 相关进程(需保持后台) |
属服务启动形态,未发现隐藏下载恶意载荷。
### 4. 文档 / payload 中的「危险字样」(非自动执行)
`pentest-tools/src-hunter`、`attack-chain` 等 **Markdown/JSON 教学材料** 含 SQL 注入、`DROP` 示例、日志清理 **红队方法论**。
这些 **不会被 bootstrap 或 master-route 自动执行**;执行依赖 AI/人工在**已授权 scope** 下选用。
相关约束见:`ops/scope-contract.md`、`ops/skill-supply-chain.md`、`field-journal/precedent-*.md`。
### 5. 供应链残余风险(建议后续加固,非已证实后门)
| 项 | 风险 | 建议 |
|----|------|------|
| `bootstrap-manifest.json` 中 `@jshookmcp/jshook@0.3.4`、`pentestswarm@v0.1.0` | 标签漂移 / 供应链投毒面 | 钉死版本号 + 校验和 |
| GitHub release zip **无 SHA256 校验** | 被替换 release 时难以及时发现 | manifest 增加 `assetSha256` 并在 bootstrap 校验 |
| `npm install -g` / `pip` 默认源 | 依赖生态固有风险 | 仅装 manifest 能力;生产环境用私有源/锁定 |
## 可执行脚本清单(审计基线)
```
skills/scripts/*.ps1|*.sh + lib/ToolDiscovery.ps1
skills/apk-reverse/scripts/*
skills/radare2/scripts/*
skills/ida-reverse/scripts/*
skills/browser-automation/scripts/*
skills/diagram-generator/scripts/*.py
skills/case-review/scripts/*.py
kali/scripts/*
burp-mcp-full/mcp-bridge.js (+ Java 扩展源)
```
## 建议的持续检查
```powershell
# 可执行面快速体检(示例)
rg -n "Invoke-Expression|FromBase64String|DownloadString|rm -rf /|DROP DATABASE" skills/scripts skills/*/scripts kali/scripts burp-mcp-full -g "*.ps1" -g "*.sh" -g "*.py" -g "*.js"
```
新增 skill 的 **可执行脚本** 合入前应再跑本清单;仅 Markdown 方法论变更不强制。
## 签署
- 审计执行:仓库本地静态扫描 + 关键路径人工复核
- 结果:无后门 / 无自动删库;供应链加固列为后续改进项
'@