AI驱动的SAST扫描器,能发现Semgrep/CodeQL遗漏的身份验证绕过、IDOR和逻辑漏洞。免费的GitHub Action。支持Python、JS/TS、Go、PHP、Ruby。
基于AI的代码安全扫描器,能发现 Semgrep 和 CodeQL 遗漏的漏洞。
快速开始 • GitHub Action • 对比 • 支持的语言 • 常见问题
传统 SAST 工具依赖模式匹配和 AST 规则。它们擅长捕获已知的漏洞模式,但从根本上讲,它们无法理解意图。
如果你的 API 有 20 个端点,其中 19 个在操作资源前验证了授权,Semgrep 无法标记出那一个没有验证的端点——因为没有可匹配的模式。漏洞恰恰是某个模式的缺失。
VulnHawk 使用 AI 分析代码,并且对于它检查的每一段代码,它都会引入代码库其他位置的相关代码作为上下文。这个增强步骤让 AI 能够比较相似组件如何处理安全问题——从而发现那个没有处理的组件。
pip install vulnhawk
选择一个后端:
# Claude Code CLI - 对订阅者免费(推荐)
vulnhawk scan ./src -b claude-code
# Codex CLI - 对 ChatGPT Pro/Plus 订阅者免费
vulnhawk scan ./src -b codex
# Claude API
export ANTHROPIC_API_KEY=sk-ant-...
vulnhawk scan ./src
# OpenAI API
vulnhawk scan ./src -b openai -m gpt-4o
# Ollama - 免费、本地、完全私有
vulnhawk scan ./src -b ollama -m llama3.1
无需配置文件。无需编写规则。无需构建数据库。
Claude Code 和 Codex 后端对已有订阅的用户免费。VulnHawk 通过你的本地 CLI 传递提示,因此没有额外的 API 成本。
| 能力 | VulnHawk | Semgrep | CodeQL | Snyk Code | Checkmarx | SonarQube |
|---|---|---|---|---|---|---|
| 检测方法 | AI 推理 | AST 模式 | QL 数据流 | 机器学习 + 规则 | 模式 + 数据流 | 模式 |
| 业务逻辑缺陷 | 是 | 否 | 有限 | 有限 | 有限 | 否 |
| 跨文件上下文 | 自动 | 自定义规则 | 自定义查询 | 部分 | 付费版 | 有限 |
| 设置复杂度 | 零配置 | 规则配置 | DB 构建 + QL | 配置文件 | 复杂 | 服务器搭建 |
| 需要自定义规则 | 否 | 是 (YAML) | 是 (QL) | 部分 | 是 | 是 |
| 上下文感知修复 | 是 | 通用 | 通用 | 通用 | 通用 | 通用 |
| 本地/私有模式 | Ollama | 是 | 是 | 否 | 否 | 自托管 |
| CI/CD 集成 | 一行 Action | Action | Action | Action | 插件 | 插件 |
| SARIF 输入(工具链) | 是 | 否 | 否 | 否 | 否 | 否 |
| 价格 | 免费* | 免费/付费 | 免费/付费 | 免费/$$$ | $$$$$ | 免费/$$$ |
*使用 Claude Code、Codex CLI 或 Ollama 时免费。API 后端每次扫描大约 $0.50-$2.00。
| 漏洞类型 | 基于规则的工具为何遗漏 |
|---|---|
| N 个端点中有 1 个缺少授权 | 没有可匹配的模式——漏洞是某个检查的缺失 |
| IDOR / BOLA | 需要理解 JWT 中的用户 ID 应与 URL 中的 ID 匹配 |
| 支付金额操纵 | 业务逻辑——金额字段不应从客户端信任 |
| 不一致的输入验证 | 5 个处理器做了清理,第 6 个没有——需要跨文件比较 |
| 存储输入被误用 | 输入安全保存,但在 3 个文件之外被 eval() 或原始 SQL 使用 |
| 状态更新中的竞态条件 | 无锁的并行余额修改 |
VulnHawk 被设计为补充层,而非替代品:
| 层级 | 工具 | 目的 |
|---|---|---|
| 1 | Semgrep | 快速、确定性的已知不良模式把关 |
| 2 | CodeQL | 跨复杂调用链的深层污点追踪 |
| 3 | VulnHawk | 规则无法表述的业务逻辑、认证缺口、IDOR 和不一致问题 |
vulnhawk scan ./src # 完整扫描(默认)
vulnhawk scan ./src --mode auth # 认证绕过、缺少检查、会话缺陷
vulnhawk scan ./src --mode injection # SQLi、命令注入、SSTI、XSS
vulnhawk scan ./src --mode secrets # 硬编码密钥、令牌、密码
vulnhawk scan ./src --mode config # 调试模式、宽松CORS、不安全cookies
vulnhawk scan ./src --mode crypto # 弱哈希、硬编码密钥、不良RNG
vulnhawk scan ./src -o json -f results.json # JSON
vulnhawk scan ./src -o sarif -f results.sarif # SARIF(GitHub 代码扫描)
vulnhawk scan ./src -o markdown -f report.md # Markdown 报告
vulnhawk scan ./src --severity high # 仅严重 + 高危
vulnhawk scan ./src --severity info # 全部
将 Semgrep、CodeQL 或任何生成 SARIF 的工具的输出送入 VulnHawk。它将利用这些发现作为额外上下文来验证、扩展和关联它们,从而发现更深入的漏洞。
# 先运行 Semgrep,然后使用 VulnHawk 增强
semgrep --config auto ./src -o semgrep.sarif --sarif
vulnhawk scan ./src --sarif-input semgrep.sarif
其能力包括:
vulnhawk info ./src # 预览文件、代码块和语言分布
VulnHawk 作为默认分支的基线扫描和每个拉取请求的增量扫描运行。
name: VulnHawk Security Scan
on:
push:
branches: [main, master]
pull_request:
permissions:
security-events: write
contents: read
jobs:
vulnhawk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
severity: 'medium'
fail-on-findings: 'true'
发现结果会自动通过 SARIF 上传到 GitHub 的 安全 > 代码扫描 标签页。
| 后端 | 配置 |
|---|---|
| Claude Code(免费) |
获取你的令牌: |
| Codex(免费) |
需要在运行器上执行 |
| Claude API |
|
| OpenAI API |
|
steps:
- uses: actions/checkout@v4
- name: Semgrep(快速模式扫描)
uses: returntocorp/semgrep-action@v1
with:
config: auto
generateSarif: true
- name: VulnHawk(深度AI分析)
uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
sarif-input: 'semgrep.sarif'
| 语言 | 扩展名 | 框架检测 |
|---|---|---|
| Python | .py | Django, Flask, FastAPI |
| JavaScript | .js .jsx | Express, Fastify, Next.js |
| TypeScript | .ts .tsx | Express, NestJS, Fastify |
| Go | .go | net/http handlers |
| Java | .java | 类/方法分割 |
| PHP | .php | Laravel 路由、类、特征、接口 |
| Ruby | .rb .erb | Rails 路由、类、模块 |
代码库 ──> 发现 ──> 切块 ──> 增强 ──> 分析 ──> 验证 ──> 报告
│ │ │ │ │
尊重 函数 相关 LLM + 去重 +
.gitignore 类 来自同一 安全 置信度
.vulnhawk- 路由 目录的 提示 评分
ignore 模块 代码 +
认证模式
增强步骤是关键差异器。对于每个代码块,VulnHawk 包含:
这为 AI 提供了识别不一致所需的上下文。
排除要扫描的路径(gitignore 语法):
generated/
vendor/
third_party/
*.gen.go
| 变量 | 描述 |
|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Claude Code CLI 认证(对订阅者免费) |
ANTHROPIC_API_KEY | Claude API 密钥 |
OPENAI_API_KEY | OpenAI API 密钥 |
| 后端 | 每次扫描(约 100 个文件) | 要求 |
|---|---|---|
| Claude Code CLI | 免费 | Claude Code Max 或 Team 订阅 |
| Codex CLI | 免费 | ChatGPT Pro 或 Plus 订阅 |
| Claude API | 约 $0.50 - $2.00 | Anthropic API 积分 |
| OpenAI API | 约 $1.00 - $4.00 | OpenAI API 积分 |
| Ollama | 免费 | 本地机器,8GB+ VRAM |
Claude Code 订阅(Max 每月 $100-$200,或 Team 计划)包含无限 CLI 使用。VulnHawk 在底层调用 claude --print,通过你现有的订阅传输分析提示。无需 API 密钥。无按 token 计费。