openhackai/OpenHack

GitHub: openhackai/OpenHack

OpenHack 是一款基于多 Agent 架构的开源代码安全扫描器,通过侦察、寻找、验证和确认的完整流水线自动发现并验证代码库中的真实漏洞。

Stars: 156 | Forks: 17

# ⏚ [OpenHack](https://openhack.com) **用于代码库的开源 Agentic 安全扫描器和验证器。** 类似于 Claude Code Security / Codex Security,但它是开源的,并且**完全使用开源模型**。

Website   Discord   Follow on X

PyPI   License

## 快速入门 ``` pipx install openhack ``` 或者使用 [uv](https://docs.astral.sh/uv/): ``` uv tool install openhack ``` 或者使用 pip: ``` pip install openhack ``` ## 工作原理 OpenHack 在单一流水线中执行 `recon`(侦察)-> `hunting`(寻找)-> `validation`(验证)-> `verification`(确认),以发现高质量且经过确认的漏洞。 **Recon**:深入探索并全面理解您的应用程序以及您提供的任何自定义上下文。在开始寻找之前构建完整的项目模型。 **Hunter**:专门的基于类别的 hunter 会初步寻找漏洞,同时基于特性的 hunter 会深入挖掘,在风险较高的代码区域寻找漏洞。 **Validation**:验证 agent 会对发现的结果、其影响以及是否确实有效进行审查。 **Verification**:确认 agent 会执行基于浏览器和沙盒的全面攻击,在真实的 Docker / DOM 环境中确认漏洞。 ## 快速开始 ``` openhack ``` 首次运行时,您将进行一次性的设置: 1. 选择 **Login with OpenHack account**(推荐)—— 打开浏览器,您登录后即可获得 **$20 免费额度**,CLI 会自动获取 token。 2. 输入 `/scan .` 扫描当前目录,或输入 `/scan path/to/repo` 扫描其他位置。 3. 扫描期间,**Trace tab** 会显示实时的 agent 活动(recon -> hunters -> validators)。扫描完成后,**Findings tab** 会显示所有发现的结果。 ## 功能说明 OpenHack 针对您的代码库运行多 agent 流水线: - **Recon** —— 读取代码,构建项目模型 - **Hunters** —— 多个专门的 agent 负责寻找不同的漏洞类别(输入验证、访问控制、数据处理等) - **Feature hunters** —— 对特定风险类别进行更深入的检查(XSS 渲染、原生 SQL、命令执行等) - **Validators** —— 重新阅读可疑代码以确认或拒绝每个候选发现 - **Sandbox verification** (`/verify sandbox`) *(Beta —— 需要 Docker)* —— 在 Docker 容器中启动您的应用程序,并尝试通过实时的 HTTP 请求利用每个发现。被成功利用的发现会打上 ✓ 标记。 - **Browser verification** (`/verify browser`) *(Beta —— 与沙盒结合使用时需要 Docker)* —— 启动无头浏览器访问沙盒应用,通过真实的浏览器执行来验证客户端漏洞(XSS、CSRF、基于 DOM 的问题)。 对于每个确认的发现,您将获得:严重程度、CVSS 分数、文件位置、完整描述、易受攻击的代码片段以及推荐的修复方案——所有这些都在 TUI 中通过语法高亮显示。 ## 斜杠命令 | 命令 | 描述 | | -------------------------- | --------------------------------------------------------------------------------------------------- | | `/scan ` | 对目录进行全面扫描(默认为当前目录) | | `/pause` · `/resume` | 暂停和恢复正在进行的扫描(Ctrl+C 也可以暂停) | | `/cancel` | 永久取消正在进行的扫描 | | `/sessions` | 浏览并重新加载过去的扫描(也支持使用 `r` 重新运行中止的扫描) | | `/findings` | 重新显示上次扫描的结果 | | `/copy` | 复制选中的发现(描述 + 易受攻击的代码 + 修复方案),适用于 Codex / Claude Code / OpenCode | | `/verify sandbox` *(Beta)* | 启动 Docker 沙盒,并使用实时请求对每个发现进行漏洞利用测试 | | `/verify browser` *(Beta)* | 启动无头浏览器以验证客户端漏洞(XSS、CSRF 等) | | `/login` | 重新登录您的 OpenHack 账户 | | `/setup` | 再次运行设置向导 | | `/config` | 显示当前配置;通过 `/config ` 进行设置 | | `/sidebar` | 显示/隐藏 Findings 列表侧边栏 (`Ctrl+B`) | | `/cost` | 上次扫描的成本明细 | | `/clear` | 清除扫描状态并返回起始页面 | | `/discord` | 打开 OpenHack Discord | | `/mouse` | 切换鼠标捕获(关闭 = 原生文本选择) | | `/help` | 列出命令 | | `/quit` | 退出 | ## 键盘快捷键(Findings tab) - `↑` / `↓` —— 切换发现 - `[` · `]` —— 上一个 / 下一个切换 - 鼠标滚轮或 `PgUp` / `PgDn` —— 滚动详细信息面板 - `y` —— 提取(复制)选中的发现以供 AI agent 使用 - `<` · `>` —— 调整侧边栏大小 - `Ctrl+B` —— 切换侧边栏 ## 键盘快捷键(Trace tab) - `↑` / `↓` —— 切换侧边栏树中的 agent - `[` · `]` —— 上一个 / 下一个 agent 切换 - 鼠标滚轮或 `PgUp` / `PgDn` —— 滚动 trace - `Home` —— 跳转到 "All"(完整 trace) - `End` —— 恢复自动滚动到底部 ## 选择文本 TUI 默认会捕获鼠标事件(用于滚动和点击)。要原生地选择和复制文本: - **macOS**:按住 `Option` (⌥) 并拖动以进行选择,然后按 `Cmd+C` 进行复制。 - **Linux / Windows**:按住 `Shift` 并拖动以进行选择。 - **或者**:运行 `/mouse` 以完全禁用鼠标捕获 —— 终端的选择功能将正常工作,直到您再次将其切换开启。 ## CLI 命令(无界面) 适用于 CI、脚本或一次性扫描等不需要 TUI 的场景: ``` openhack scan /path/to/repo ``` OpenHack 运行与 TUI 相同的流水线,将进度打印到 stdout,将 JSON 报告写入 `~/.openhack/scans/.json`,然后退出。 | 命令 | 描述 | | ------------------------- | -------------------------------------------------------- | | `openhack` | 启动交互式 TUI | | `openhack scan [path]` | 全面的无界面扫描(默认为 `.`) | | `openhack sessions` | 列出所有已保存的扫描 | | `openhack resume ` | 从上一个检查点恢复扫描 | | `openhack classify [path]`| 分类框架并检测入口点(无 LLM 调用) | | `openhack login` | 登录到您的 OpenHack 账户 | | `openhack setup` | 运行设置向导 | | `openhack --help` | 显示用法 | 扫描会在每个流水线阶段之后建立检查点。如果扫描被中断或失败,可以恢复它: ``` openhack resume ``` ## 配置 配置存储在 `~/.openhack/config` 中(由于包含 bearer token,模式设置为 `0600`),并在会话之间持久存在。 您可以在运行时通过环境变量进行覆盖: | 变量 | 效果 | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `OPENHACK_API_KEY` | 用于 OpenHack 推理 API 的 Bearer token | | `OPENHACK_DEV=1` | 将 CLI 指向本地开发服务器(app 在 `:9080`,推理在 `:8787`),适用于自托管环境 | | `PROMPT_CACHING=0` | 停止随 API 调用发送 `prompt_cache_key` —— 适用于拒绝此参数的 OpenAI 兼容 endpoint(也可以使用:`/config prompt_caching false`) | ## 隐私 OpenHack 会在**本地**读取并处理您的源代码——prompt 在您的机器上构建。只有 LLM token(不是原始源文件)会被转发到 OpenHack 推理 API。不会上传或保留任何源代码。 ## 贡献 OpenHack 是开源的。欢迎在 [GitHub](https://github.com/openhackai/openhack) 上提交 Issue 和 PR。 ## 许可证 MIT —— 请参阅 [LICENSE](LICENSE)。
标签:AI智能体, C2, Python, Web报告查看器, 代码安全审计, 开源安全工具, 文档安全, 无后门, 请求拦截, 逆向工具, 逆向工程平台