SAST-сканер на основе ИИ, который находит обход аутентификации, IDOR и логические ошибки, которые пропускают Semgrep/CodeQL. Бесплатное действие GitHub. Поддерживает Python, JS/TS, Go, PHP, Ruby.
Сканер безопасности кода на базе ИИ, который находит уязвимости, пропущенные Semgrep и CodeQL.
Быстрый старт • GitHub Action • Сравнение • Языки • FAQ
Традиционные SAST-инструменты полагаются на сопоставление шаблонов и правила AST. Они отлично справляются с обнаружением известных шаблонов уязвимостей, но принципиально не могут рассуждать о намерениях.
Если в вашем API есть 20 конечных точек и 19 из них проверяют авторизацию перед выполнением действия над ресурсом, Semgrep не сможет отметить ту единственную, которая этого не делает — потому что нет шаблона для сопоставления. Уязвимость заключается в шаблона.
VulnHawk анализирует код с помощью ИИ, и для каждого фрагмента кода он включает связанный код из других частей вашей кодовой базы в качестве контекста. Этот этап обогащения позволяет ИИ сравнивать, как аналогичные компоненты обрабатывают безопасность — и заметить тот, который этого не делает.
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 |
|---|---|---|---|---|---|---|
| Метод обнаружения | Рассуждение ИИ | AST-шаблоны | QL-потоки данных | ML + правила | Шаблоны + потоки | Шаблоны |
| Ошибки бизнес-логики | Да | Нет | Ограниченно | Ограниченно | Ограниченно | Нет |
| Межфайловый контекст | Автоматически | Пользовательские правила | Пользовательские запросы | Частично | Платный тариф | Ограниченно |
| Сложность настройки | Нулевая | Настройка правил | Сборка DB + QL | Конфигурационный файл | Сложно | Настройка сервера |
| Требуются пользовательские правила | Нет | Да (YAML) | Да (QL) | Частично | Да | Да |
| Исправления с учётом контекста | Да | Общие | Общие | Общие | Общие | Общие |
| Локальный / приватный режим | Ollama | Да | Да | Нет | Нет | Self-hosted |
| Интеграция с CI/CD | Однострочный Action | Action | Action | Action | Плагин | Плагин |
| Ввод SARIF (цепочка инструментов) | Да | Нет |
*Бесплатно с Claude Code, Codex CLI или Ollama. Бэкенды API стоят около $0.50-$2.00 за сканирование.
| Класс уязвимости | Почему инструменты на основе правил пропускают его |
|---|---|
| Отсутствие авторизации на 1 из N конечных точек | Нет шаблона для сопоставления — ошибка в отсутствии проверки |
| IDOR / BOLA | Требуется понимание, что ID пользователя в JWT должен совпадать с ID в URL |
| Манипуляция суммой платежа | Бизнес-логика — поле суммы не должно доверяться клиенту |
| Непоследовательная валидация ввода | 5 обработчиков санируют, 6-й — нет; требуется межфайловое сравнение |
| Неправильное использование сохранённого ввода | Ввод сохранён безопасно, но eval() или raw-SQL в 3 файлах оттуда |
| Состояния гонки при обновлении состояния | Одновременные модификации баланса без блокировки |
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, небезопасные куки
vulnhawk scan ./src --mode crypto # Слабое хэширование, жёстко закодированные ключи, плохой ГСЧ
vulnhawk scan ./src -o json -f results.json # JSON
vulnhawk scan ./src -o sarif -f results.sarif # SARIF (GitHub Code Scanning)
vulnhawk scan ./src -o markdown -f report.md # Отчёт в Markdown
vulnhawk scan ./src --severity high # Только Critical + 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 выполняет базовое сканирование в вашей ветке по умолчанию и инкрементально в каждом pull request.
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'
Находки автоматически загружаются на вкладку Security > Code Scanning GitHub через SARIF.
| Бэкенд | Конфигурация |
|---|---|
| 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 (глубокий анализ ИИ)
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 |
| Java | .java | Разделение по классам/методам |
| PHP | .php | Маршруты Laravel, классы, трейты, интерфейсы |
| Ruby | .rb .erb | Маршруты Rails, классы, модули |
Codebase ──> Discover ──> Chunk ──> Enrich ──> Analyze ──> Validate ──> Report
│ │ │ │ │
Учитывает Функции, Связанный LLM с Дедупликация +
.gitignore классы, код из промптами оценка
.vulnhawk- маршруты, той же безопас- достоверности
ignore модули директории ности
+ шаблоны
аутентиф.
Этап обогащения — ключевое отличие. Для каждого фрагмента кода VulnHawk включает:
Это даёт ИИ контекст, необходимый для выявления несоответствий.
Исключите пути из сканирования (синтаксис gitignore):
generated/
vendor/
third_party/
*.gen.go
| Переменная | Описание |
|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Токен аутентификации Claude Code CLI (бесплатно для подписчиков) |
ANTHROPIC_API_KEY | Ключ API Claude |
OPENAI_API_KEY | Ключ API OpenAI |
| Бэкенд | За сканирование (~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 | Бесплатно | Локальная машина с 8+ ГБ VRAM |
Подписки Claude Code (Max за $100-$200/мес. или Team) включают неограниченное использование CLI. VulnHawk вызывает claude --print под капотом, передавая промпты анализа через вашу существующую подписку. Никакого API-ключа. Никакой поминутной оплаты.
Выполните claude config get oauth_token на локальной машине. Добавьте вывод как секрет GitHub Actions с именем CLAUDE_CODE_OAUTH_TOKEN.
И то, и другое. Сканирование при пуше в main устанавливает базовый уровень безопасности и заполняет вкладку Security. Сканирование PR выявляет новые уязвимости до слияния. Рекомендуемый workflow обрабатывает оба триггера.
Да — фрагменты кода отправляются настроенному LLM-провайдеру (Anthropic или OpenAI). Для полностью приватного, изолированного сканирования используйте бэкенд Ollama, который работает полностью на локальной машине.
Нет. VulnHawk — это дополнительный слой. Semgrep и CodeQL отлично справляются со своим делом (сопоставление шаблонов и отслеживание потоков). VulnHawk ловит ошибки бизнес-логики, пробелы в аутентификации и несоответствия, которые правила не могут описать. Используйте все три вместе для максимального покрытия.
Да. VulnHawk включает разбиение с учётом фреймворка для обоих. Он обнаруживает определения Route::get() в Laravel, PHP-классы/трейты/интерфейсы, объявления маршрутов Rails (get, post, resources) и Ruby-классы/модули. Также извлекаются специфические для фреймворка импорты (use, require, include).
Вы можете передать VulnHawk SARIF-файл, созданный любым другим сканером (Semgrep, CodeQL, Snyk и т.д.). VulnHawk использует эти находки как дополнительный контекст при анализе — проверяя их, находя связанные проблемы поблизости и строя многошаговые цепочки атак, соединяющие находки разных инструментов.
См. CONTRIBUTING.md.
git clone https://github.com/momenbasel/vulnhawk.git
cd vulnhawk
uv venv .venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
Если VulnHawk оказался для вас полезным, рассмотрите возможность спонсирования проекта для поддержки дальнейшей разработки.
VulnHawk создаётся и поддерживается компанией GreyCore Labs, зарегистрированной в США фирмой по тестированию на проникновение. Хотите, чтобы тот же взгляд был обращён на ваш продукт?
VulnHawk распространяется с доступным исходным кодом по лицензии VulnHawk.
Бесплатно для всех — частные лица, команды, стартапы и предприятия могут использовать VulnHawk без какой-либо оплаты для внутреннего сканирования безопасности, при условии установки из официального канала распространения:
Вы не можете продавать Программное обеспечение, предлагать его как конкурирующий сервис или распространять форки как продукт. Форки разрешены исключительно для отправки pull request обратно в этот репозиторий. Полные условия см. в LICENSE.
| Нет |
| Нет |
| Нет |
| Нет |
| Цена | Бесплатно* | Бесплатно / Платно | Бесплатно / Платно | Бесплатно / $$$ | $$$$$ | Бесплатно / $$$ |