openhackai/OpenHack
GitHub: openhackai/OpenHack
OpenHack 是一款基于多 Agent 架构的开源代码安全扫描器,通过侦察、寻找、验证和确认的完整流水线自动发现并验证代码库中的真实漏洞。
Stars: 156 | Forks: 17
# ⏚ [OpenHack](https://openhack.com)
**用于代码库的开源 Agentic 安全扫描器和验证器。**
类似于 Claude Code Security / Codex Security,但它是开源的,并且**完全使用开源模型**。
## 快速入门
```
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报告查看器, 代码安全审计, 开源安全工具, 文档安全, 无后门, 请求拦截, 逆向工具, 逆向工程平台