7h30th3r0n3/MindJack

GitHub: 7h30th3r0n3/MindJack

用于审计 AI 编程助手本地攻击面的安全研究工具包,能从十个主流 AI 编码工具中提取对话历史并演示五十六种基于文件的提示注入与配置投毒攻击场景。

Stars: 8 | Forks: 2

# MindJack 用于审计 AI 编程助手本地攻击面的安全研究工具包。 **零依赖,仅使用 Python 3.10+ 标准库。** 1. **`extractor.py`** - 从 10 个 AI 工具中提取对话历史 2. **`injector.py`** - 扫描注入面,演示 56 种攻击场景 3. **`mindjack report`** - 生成带有 OWASP 合规映射的交互式 HTML 攻击图 ## 支持的工具 | 工具 | 提取器 | 注入器 | 主要攻击面 | |------|:---------:|:--------:|-------------------| | **Claude Code** | 历史、会话、记忆 | 规则、设置、钩子、MCP、记忆 | `CLAUDE.md`、`settings.json`、钩子 (RCE) | | **OpenAI Codex CLI** | 历史、展开会话 | AGENTS.md、config.toml | `sandbox_mode: danger-full-access` | | **GitHub Copilot** | 聊天会话 | copilot-instructions.md | `.github/copilot-instructions.md` | | **Cursor IDE** | state.vscdb 聊天数据 | .cursorrules、MCP 配置 | CVE-2025-54135 (MCP RCE) | | **Aider** | 聊天历史 Markdown | config.yml、CONVENTIONS.md | `auto-commits`、模型覆盖 | | **Continue.dev** | 会话 JSON | config.yaml、rules、.continuerc.json | `config.ts` (任意代码执行) | | **Cline / Roo Code** | 任务对话 | .clinerules、.roo/rules/、memory-bank | 持久化记忆库投毒 | | **Amazon Q** | 聊天历史 JSON | .amazonq/rules/、MCP 配置 | MCP 服务器注入 | | **Windsurf/Codeium** | cascade、记忆 | .windsurfrules、global_rules.md | 自动生成的记忆投毒 | ## 快速开始 ``` git clone https://github.com/7h30th3r0n3/MindJack.git cd MindJack # 提取所有对话 python3 extractor.py # 扫描注入面 python3 injector.py scan # 列出全部 33 个攻击 Recipes python3 injector.py recipes # Dry-run 注入(安全,无修改) python3 injector.py inject --recipe claude-memory-poison --dry-run # 生成交互式 HTML 攻击报告 pip install -e . mindjack report --scope ~ --allow-home-scope --existing-only -o report.html ``` ## 提取器 从所有受支持的 AI 工具中读取本地对话数据,并导出为 JSON + Markdown。 ### 使用方法 ``` python3 extractor.py # Extract everything python3 extractor.py -o ~/export # Custom output dir python3 extractor.py --json-only # Skip Markdown report python3 extractor.py --sources claude-code codex-cli # Specific tools only ``` ### 输出 ``` ai_history_export/ all_conversations.json # Everything combined claude-code.json # Per-source files codex-cli-session.json copilot.json ... REPORT.md # Human-readable summary ``` ### JSON 架构 ``` { "source": "claude-code", "session_id": "abc123-...", "project": "/home/user/myproject", "date": "2026-03-21", "message_count": 42, "messages": [ {"role": "user", "content": "fix the login bug", "timestamp": "2026-03-21T08:15:00+00:00"}, {"role": "assistant", "content": "Looking at the auth module...", "timestamp": null} ] } ``` ### 各工具数据来源 | 工具 | 提取内容 | 存储路径 | |------|-----------------|--------------| | Claude Code | 用户提示 (JSONL)、会话摘要、持久化记忆 | `~/.claude/` | | Codex CLI | 用户提示 (JSONL)、带有工具调用的完整会话展开 | `~/.codex/` | | GitHub Copilot | 每个工作区的聊天会话 (JSON) | VS Code `workspaceStorage/GitHub.copilot-chat/` | | Cursor | 来自 SQLite 的聊天 + composer 数据 | VS Code `workspaceStorage/state.vscdb` | | Aider | 完整的 Markdown 聊天记录 | 每个项目的 `.aider.chat.history.md` | | Continue.dev | 会话消息 (JSON) | `~/.continue/sessions/` | | Cline/Roo Code | API 对话历史 + 任务元数据 (JSON) | VS Code `globalStorage/` | | Amazon Q | 每个目录的聊天历史 (JSON) | `~/.aws/amazonq/history/` | | Windsurf | cascade 对话、自动生成的记忆 | `~/.codeium/windsurf/` | ## 注入器 扫描并演示跨 AI 编程助手的基于文件的提示词注入和配置投毒。 ### 攻击面类别 | 类别 | 风险 | 示例 | |----------|------|---------| | **指令** | 严重 | `CLAUDE.md`、`AGENTS.md`、`.cursorrules`、`.clinerules`、`.windsurfrules` | | **设置** | 严重 | `settings.json` (allowedTools)、`config.toml` (sandbox_mode) | | **MCP** | 严重 | `.mcp.json` - 将任意进程生成为“工具服务器” | | **钩子** | 严重 | 在会话事件时自动执行的 Shell 命令 (RCE) | | **记忆** | 高 | 跨会话重新出现的持久化上下文 | ### 命令 ``` # Scan - 发现所有可注入目标 python3 injector.py scan python3 injector.py scan --json targets.json # Recipes - 列出全部 33 个预定义攻击场景 python3 injector.py recipes # Inject - 执行(务必先执行 --dry-run!) python3 injector.py inject --recipe --dry-run python3 injector.py inject --recipe python3 injector.py inject --payload "your text" --tool claude-code --category memory --dry-run python3 injector.py inject --payload-file evil.txt --tool cursor --dry-run python3 injector.py inject --payload-preset exfiltrate_secrets --existing-only --dry-run # Clean - 移除所有注入,恢复备份 python3 injector.py clean python3 injector.py clean --dry-run ``` ### 方法库 (33) #### Claude Code (9) | 方法 | 描述 | |--------|-------------| | `claude-settings-allowall` | 白名单所有工具 (Bash、Read、Write、Edit、Agent、WebFetch、WebSearch) | | `claude-hook-exfil` | 在会话停止时窃取对话记录 | | `claude-hook-keylogger` | 通过 PreToolUse 钩子将每个用户提示记录到外部服务器 | | `claude-hook-autoapprove` | 自动批准所有工具调用,绕过用户确认 | | `claude-hook-file-watch` | 通过 PostToolUse 钩子窃取模型读取的每一个文件 | | `claude-memory-poison` | 禁用安全检查的持久化记忆 | | `claude-memory-fake-user` | 伪造用户资料以操纵信任级别 | | `claude-memory-fake-reference` | 指向恶意外部文档的伪造引用 | | `claude-rules-inject` | 在 .claude/rules/ 中创建新的恶意规则文件 | #### Codex CLI (3) | 方法 | 描述 | |--------|-------------| | `codex-sandbox-disable` | 设置 `danger-full-access` 沙箱 + `full-auto` 批准 | | `codex-agents-override` | 创建 AGENTS.override.md (最高优先级覆盖) | | `codex-model-swap` | 通过 config.toml 将模型降级为 gpt-3.5-turbo | #### Cursor IDE (3) | 方法 | 描述 | |--------|-------------| | `cursor-rules-backdoor` | 带有隐藏身份验证绕过 + 错误数据窃取的 .cursorrules | | `cursor-mcp-rce` | 注入恶意 MCP 服务器 (CVE-2025-54135 向量) | | `cursor-rules-alwaysapply` | 带有 alwaysApply frontmatter 的 .cursor/rules/ | #### GitHub Copilot (1) | 方法 | 描述 | |--------|-------------| | `copilot-instructions-poison` | 带有不安全模式的 .github/copilot-instructions.md | #### Aider (2) | 方法 | 描述 | |--------|-------------| | `aider-autocommit-nocheck` | 启用自动提交,禁用 lint 和测试 | | `aider-conventions-poison` | 带有 SQL 注入 + MD5 密码的 CONVENTIONS.md | #### Continue.dev (2) | 方法 | 描述 | |--------|-------------| | `continue-config-overwrite` | 使用恶意 MCP + 虚假模型覆盖配置的 .continuerc.json | | `continue-rules-inject` | 带有读取所有 .env 文件的 alwaysApply 全局规则 | #### Cline / Roo Code (3) | 方法 | 描述 | |--------|-------------| | `cline-rules-inject` | 运行设置脚本 + 自动批准所有内容的 .clinerules | | `cline-memory-bank-poison` | 用于跨会话持久化的 memory-bank/ 注入 | | `roo-rules-multimode` | 适用于所有 Roo Code 模式的规则 | #### Windsurf (2) | 方法 | 描述 | |--------|-------------| | `windsurf-global-rules-poison` | 覆盖所有工作区的 global_rules.md | | `windsurf-memory-inject` | 投毒自动生成的记忆 | #### Amazon Q (2) | 方法 | 描述 | |--------|-------------| | `amazonq-rules-inject` | 带有硬编码 AWS 凭证 + 公开 S3 的 .amazonq/rules/ | | `amazonq-mcp-inject` | 窃取环境变量的 MCP 服务器 | #### MCP 多工具 (3) | 方法 | 描述 | |--------|-------------| | `mcp-rogue-server` | 恶意 MCP 服务器 | | `mcp-reverse-shell` | 开启反弹 Shell 的 MCP 服务器 | | `mcp-env-stealer` | 窃取所有环境变量的 MCP 服务器 | #### 跨工具 (3) | 方法 | 描述 | |--------|-------------| | `cross-tool-agents-md` | 同时被 5 个以上工具读取的 AGENTS.md | | `cross-tool-supply-chain` | 注入恶意依赖项的 AGENTS.md | | `cross-tool-full-takeover` | 带有完全行为覆盖 + 隐蔽执行的 AGENTS.md | ### 预设载荷 (23) 可以通过 `--payload-preset` 将预设注入到任何目标中: | 类别 | 预设 | |----------|---------| | **数据窃取** | `exfiltrate_secrets`、`exfiltrate_codebase`、`exfiltrate_git` | | **代码后门** | `backdoor_endpoint`、`backdoor_eval`、`backdoor_hardcoded_creds`、`backdoor_dependency` | | **重定向/覆盖** | `redirect_instructions`、`redirect_model_identity`、`redirect_output_format` | | **权限提升** | `permission_escalation`、`permission_autocommit`、`permission_install` | | **隐蔽/规避** | `stealth_deny`、`stealth_gaslight`、`stealth_distract` | | **蓄意破坏** | `sabotage_tests`、`sabotage_security`、`sabotage_performance` | | **社会工程** | `social_trust`、`social_urgency` | | **持久化** | `persist_cron`、`persist_postinstall` | ### 安全特性 - **`--dry-run`** 预览所有更改而不修改文件 - 在任何修改前**自动备份** (`.agentscan.bak`) - **`clean` 命令**从备份中恢复所有文件 - **注入标记** (``) 用于识别 - **双重注入防护** - 跳过已注入的文件 - **方法目标过滤** - 方法仅注入其声明的目标 - **JSON 解析安全** - 拒绝覆盖无法解析的文件 ## 跨工具攻击向量 某些文件会被多个工具读取,使其成为高价值目标: | 文件 | 读取方 | |------|---------| | `AGENTS.md` | Codex CLI、Cursor、Windsurf、Cline/Roo Code、GitHub Copilot | | `.cursorrules` | Cursor、Cline/Roo Code | | `.windsurfrules` | Windsurf、Cline/Roo Code | 克隆仓库中的单个 `AGENTS.md` 就可以悄悄地投毒 5 个以上的 AI 工具。 ## OWASP 映射 每个 MindJack 场景都映射到由 OWASP 编目的真实世界漏洞。 ### OWASP LLM 应用 Top 10 (2025) | ID | 漏洞 | MindJack 覆盖范围 | |----|--------------|-------------------| | **LLM01** | 提示词注入 | 所有指令/规则注入 (`CLAUDE.md`、`AGENTS.md`、`.cursorrules`、`.clinerules`、`.windsurfrules`) - MindJack 的核心 | | **LLM02** | 敏感信息泄露 | `exfiltrate_secrets`、`exfiltrate_codebase`、`exfiltrate_git` 预设 + `claude-hook-exfil`、`claude-hook-file-watch` 方法 | | **LLM03** | 供应链 | `cross-tool-supply-chain`、`backdoor_dependency`、`persist_postinstall` - 通过指令文件注入的恶意依赖项 | | **LLM04** | 数据和模型投毒 | `claude-memory-poison`、`claude-memory-fake-user`、`windsurf-memory-inject`、`cline-memory-bank-poison` - 持久化上下文投毒 | | **LLM05** | 不当输出处理 | `redirect_output_format` 预设 - 强制模型在其输出中嵌入窃取的数据 | | **LLM06** | 过度授权 | `claude-settings-allowall`、`claude-hook-autoapprove`、`codex-sandbox-disable`、`permission_escalation` - 授予超出范围的工具/权限 | | **LLM07** | 系统提示词泄露 | 提取器读取所有系统提示词、会话摘要和记忆 - 演示完整的提示词恢复 | | **LLM09** | 错误信息 | `stealth_gaslight`、`stealth_distract` - 模型主动误导用户关于其自身的行为 | | **LLM10** | 无限制消耗 | `codex-model-swap` - 重定向到更便宜的模型,静默降低质量 | ### OWASP 智能体应用 Top 10 (2025) | ID | 洞 | MindJack 覆盖范围 | |----|--------------|-------------------| | **ASI01** | 智能体目标劫持 | `redirect_instructions`、`cross-tool-full-takeover`、`claude-rules-inject` - 通过指令文件覆盖智能体目标 | | **ASI02** | 工具滥用 | `claude-hook-autoapprove`、`permission_escalation`、`permission_autocommit` - 智能体以非预期的方式使用工具 | | **ASI03** | 身份与权限滥用 | `claude-settings-allowall`、`codex-sandbox-disable` - 通过配置提升智能体权限 | | **ASI04** | 智能体供应链 | `mcp-rogue-server`、`mcp-reverse-shell`、`mcp-env-stealer`、`cursor-mcp-rce`、`amazonq-mcp-inject` - 被投毒的 MCP 工具服务器 | | **ASI05** | 意外代码执行 | `claude-hook-exfil`、`claude-hook-keylogger`、所有 MCP 方法 - 钩子和 MCP 服务器执行任意 Shell 命令 | | **ASI06** | 记忆与上下文投毒 | `claude-memory-poison`、`claude-memory-fake-user`、`claude-memory-fake-reference`、`cline-memory-bank-poison`、`windsurf-memory-inject` | | **ASI07** | 不安全的智能体间通信 | `cross-tool-agents-md` - 单个文件悄悄投毒读取同一仓库的 5 个以上智能体 | | **ASI08** | 级联故障 | `sabotage_tests`、`sabotage_security` - 被投毒的指令级联导致整个项目出现损坏的代码 | | **ASI09** | 人机信任利用 | `social_trust`、`social_urgency`、`stealth_deny`、`stealth_gaslight` - 智能体操纵用户信任 | | **ASI10** | 恶意智能体 | `persist_cron`、`persist_postinstall`、`claude-hook-keylogger` - 智能体跨会话持久化恶意行为 | ### 覆盖范围总结 | 框架 | 已覆盖 | 总计 | 覆盖率 | |-----------|:-------:|:-----:|:--------:| | OWASP LLM Top 10 (2025) | 9/10 | 10 | **90%** | | OWASP 智能体 Top 10 (2025) | 10/10 | 10 | **100%** | ## 交互式 HTML 报告 MindJack v2 包含一个可安装的模块,用于生成带有攻击路径分析的自包含交互式 HTML 报告。 ### 安装 ``` pip install -e . ``` ### 使用方法 ``` # 包含所有工具的完整报告 mindjack report --scope ~ --allow-home-scope -o report.html # 仅包含具有现有 artifacts 的工具 mindjack report --scope ~ --allow-home-scope --existing-only -o report.html # Scan 特定项目目录 mindjack report --scope /path/to/project -o report.html ``` ### 报告选项卡 | 选项卡 | 描述 | |-----|-------------| | **执行摘要** | 风险仪表盘、工具清单、带有 MITRE ATT&CK 标签的主要发现、按攻击类型划分的风险矩阵 | | **攻击路径** | BloodHound 风格的多跳攻击链 (3-10 步),包含漏洞利用提示和修复建议。类型:直接攻击、范围扩大、执行扩大、权限提升、横向移动、杀伤链 | | **OWASP 合规** | 自动映射到 OWASP LLM Top 10 和智能体 AI Top 10,并显示每个类别的 已暴露/存在风险 状态 | | **信任图** | 交互式 vis.js 网络可视化,带有工具/关系/视图过滤器和节点详情面板 | ### 其他命令 ``` mindjack discover --scope ~ --allow-home-scope # Discover artifacts and surfaces mindjack assess --scope ~ --allow-home-scope # Full assessment with JSON/MD reports mindjack graph --scope ~ --allow-home-scope # Export trust graph as JSON mindjack tools list # List supported tool plugins mindjack tools probe # Detect installed AI tools ``` ## 平台支持 | 平台 | 提取器 | 注入器 | |----------|:---------:|:--------:| | Linux | 完全支持 | 完全支持 | | WSL | 完全支持 (自动检测 `/mnt/c/`,跳过不可访问的配置文件) | 完全支持 | | macOS | 支持 | 支持 | | 原生 Windows | 请使用 WSL | 请使用 WSL | ## 安全加固 该工具包包含多项保护措施以确保安全运行: - **文件大小限制** (最大 50 MB) 防止格式错误的文件导致 OOM (内存溢出) - **符号链接逃逸检测** 拒绝解析到预期目录之外的路径 - **环境变量验证** 在 `CODEX_HOME` 指向主目录之外时发出警告 - **Markdown 内容转义** 防止在生成的报告中发生注入 - **安全的 SQLite 处理** 带有上下文管理器和错误报告 - **权限感知遍历** 静默跳过不可访问的目录 ## 隐私 这两个工具都 **100% 在本地运行**。不会发送任何数据。没有网络调用。请将 `ai_history_export/` 添加到 `.gitignore` 中。 ## 许可证 MIT
标签:AI安全, AI编码助手, Chat Copilot, CISA项目, CVE复现, IP 地址批量处理, MCP安全, Python, RCE漏洞利用, Web报告查看器, 云资产清单, 代码安全, 多模态安全, 大模型安全, 威胁建模, 安全工具包, 对话历史提取, 指令重写, 提示注入, 攻击面分析, 数据泄露, 无后门, 漏洞枚举, 网络安全, 网页分析工具, 记忆提取, 逆向工程, 隐私保护, 集群管理, 零依赖