lexicone42/rustmachineguard

GitHub: lexicone42/rustmachineguard

一款用 Rust 重写的开发机器安全扫描工具,快速发现 AI 代理、MCP、IDE 扩展、云凭证与 SSH 密钥等敏感组件并提供多格式报告。

Stars: 0 | Forks: 0

# Dev Machine Guard (Rust) 在几秒钟内扫描您的开发机器,查找 AI 代理、MCP 服务器、IDE 扩展、云凭证、SSH 密钥等。 传统的端点防护(EDR、MDM)无法看到开发者专用工具层:AI 编码助手、模型上下文协议服务器、拥有广泛权限的 IDE 扩展以及本地运行的推理框架。本工具填补了这一空白。 ## 快速开始 ``` # 从源代码构建 cargo build --release # 运行扫描 ./target/release/dev-machine-guard # JSON 输出 ./target/release/dev-machine-guard --format json # HTML 报告 ./target/release/dev-machine-guard --format html --output report.html # 跳过特定类别 ./target/release/dev-machine-guard --skip ssh,cloud # 扫描额外的家目录根(例如同一台机器上的另一个用户配置文件) ./target/release/dev-machine-guard --search-dirs /home/alice,/home/bob ``` ## 扫描内容 | 类别 | 检测内容 | 示例 | |---|---|---| | **AI 代理与工具** | CLI 工具和桌面应用 | Claude Code、Claude Cowork、GitHub Copilot(`copilot`、`gh-copilot`)、Codex、Gemini、Amazon Q、Kiro、Microsoft AI Shell(`aish`)、OpenCode、Aider、Goose、Open Interpreter、Tabby 以及各类代理(ClawdBot、MoltBot、MoldBot、OpenClaw、GPT-Engineer) | | **AI 框架** | 本地推理服务器 | Ollama、LocalAI、LM Studio、llama.cpp、vLLM、HuggingFace TGI、oobabooga text-generation-webui | | **IDE 安装** | 开发者编辑器 | VS Code、Cursor、Windsurf、Zed、Antigravity | | **IDE 扩展** | 已安装的扩展 | 支持 VS Code 风格和 Zed 格式解析,并包含版本信息 | | **MCP 配置** | 模型上下文协议服务器 | Claude Desktop、Claude Code(`settings.json` + `~/.claude.json` 项目范围)、Cursor、Windsurf、Antigravity、Zed、VS Code、Open Interpreter(YAML)、Codex(TOML) | | **包管理器** | Node.js 生态 | npm、yarn、pnpm、bun、Node.js | | **Shell 配置**\* | 与 AI 相关的环境变量 | API 密钥(脱敏)、工具别名 | | **SSH 密钥**\* | 带口令审计的密钥清单 | RSA、ECDSA、Ed25519/OpenSSH,支持口令检测 | | **云凭证**\* | 云服务商凭证 | AWS(配置文件、SSO)、GCP(ADC、服务账户)、Azure(令牌、订阅) | | **容器工具**\* | 容器运行时 | Docker、Podman、nerdctl、Lima、Colima、Finch | | **笔记本服务器**\* | 计算型笔记本 | Jupyter、JupyterLab、Marimo | \* 新增检测类别,源自原始 Bash 版本。 ## 输出格式 - **`terminal`**(默认)— 带状态指示符(● 运行中、○ 已停止)的彩色易读报告 - **`json`** — 结构化数据,便于程序消费、CI 流水线或 SIEM 摄入 - **`html`** — 深色主题报告,适合分享或归档 ## 平台支持 | 平台 | 状态 | |---|---| | Linux | 支持(XDG 路径、`/etc/os-release`、`pgrep`) | | macOS | 支持(`/Applications/`、`sw_vers`、`defaults read`) | ## 安全考量 本工具本身是一个高敏感安全程序。设计决策如下: - **不泄露密钥**:Shell 配置扫描仅报告变量*名称*(例如 `OPENAI_API_KEY=`),从不暴露值 - **SSH 口令检测**:使用 `ssh-keygen` 探针检测 OpenSSH 格式密钥(现代密钥格式的 PEM `ENCRYPTED` 标记并不可靠) - **HTML 防 XSS**:报告数据在脚本标签中进行 base64 编码以防止注入;所有用户内容均进行 HTML 转义,包括单引号 - **输入验证**:`--format` 与 `--skip` 参数在解析时进行验证,并提供清晰的错误信息 - **无 `/tmp` 回退**:若 `$HOME` 无法确定则快速失败,而非扫描共享目录 - **读取限制**:超过 1MB 的 Shell 配置文件将被跳过 ## 与上游的差异 | 功能 | 原始(Shell) | 本重写(Rust) | |---|---|---| | 平台 | 仅 macOS | macOS + Linux | | 语言 | Shell 脚本 | 编译后的 Rust 二进制文件 | | 新增扫描器 | — | Shell 配置、SSH 密钥、云凭证、容器、笔记本 | | SSH 检测 | — | 使用 `ssh-keygen` 探针实现准确的口令检测 | | 密钥处理 | — | 仅变量名称,绝不暴露值 | | 输出验证 | 静默回退 | 严格的格式/跳过参数验证 | | 依赖项 | bash、curl、base64 | 零运行时依赖(静态二进制文件) | ## CLI 参考 ``` Usage: dev-machine-guard [OPTIONS] Options: -f, --format Output format [default: terminal] [possible values: terminal, json, html] -o, --output Write output to a file instead of stdout --skip Skip scanner categories (comma-separated): ai, frameworks, ide, extensions, mcp, node, shell, ssh, cloud, containers, notebooks --search-dirs Additional home roots (comma-separated). Home-rooted scanners (mcp, ssh, cloud, extensions, shell) run once per directory and merge results. -h, --help Print help -V, --version Print version ``` ## 构建 需要 Rust 2024 版本(1.85+): ``` cargo build --release ``` 生成的二进制文件位于 `target/release/dev-machine-guard`,且不依赖任何运行时库。 ## 许可证 Apache-2.0 — 详见 [LICENSE](LICENSE)。 本作品衍生自 [step-security/dev-machine-guard](https://github.com/step-security/dev-machine-guard)(StepSecurity Inc.)。 参见 [NOTICE](NOTICE) 获取署名详情。
标签:AI代理检测, DevSecOps, IDE安全, MCP服务器检测, Rust, SSH密钥扫描, 上游代理, 云凭证扫描, 云安全监控, 代码安全, 凭证泄露检测, 可视化界面, 威胁情报, 安全扫描, 安全监测, 开发者工具, 开发者生产力工具, 扩展安全, 时序注入, 本地安全审计, 漏洞枚举, 终端安全, 网络流量审计, 通知系统, 静态分析