
Scanner SAST basato su AI che trova bypass di autenticazione, IDOR e bug logici che Semgrep e CodeQL non trovano. GitHub Action gratuito. Supporta Python, JS/TS, Go, PHP, Ruby.
Scanner di sicurezza del codice basato su IA che trova vulnerabilità che Semgrep e CodeQL non rilevano.
Avvio rapido • GitHub Action • Confronto • Linguaggi • FAQ
Gli strumenti SAST tradizionali si basano sul pattern matching e su regole AST. Eccellono nell'individuare modelli di vulnerabilità noti, ma non sono in grado di ragionare sull'intento.
Se la tua API ha 20 endpoint e 19 di essi verificano l'autorizzazione prima di agire su una risorsa, Semgrep non ha modo di segnalare quello che non lo fa, perché non esiste un pattern da abbinare. La vulnerabilità è l'assenza di un pattern.
VulnHawk analizza il codice con l'IA e, per ogni pezzo di codice esaminato, include codice correlato da altre parti della tua codebase come contesto. Questo passaggio di arricchimento permette all'IA di confrontare come componenti simili gestiscono la sicurezza – e individuare quello che invece non lo fa.
pip install vulnhawk
Scegli un backend:
# Claude Code CLI - GRATUITO per abbonati (consigliato)
vulnhawk scan ./src -b claude-code
# Codex CLI - GRATUITO per abbonati 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 - gratuito, locale, completamente privato
vulnhawk scan ./src -b ollama -m llama3.1
Niente file di configurazione. Niente regole da scrivere. Niente database da costruire.
I backend Claude Code e Codex sono gratuiti per gli utenti con abbonamenti esistenti. VulnHawk invia i prompt attraverso la tua CLI locale, quindi non ci sono costi API aggiuntivi.
*Gratuito con Claude Code, Codex CLI o Ollama. I backend API costano circa $0.50-$2.00 per scansione.
VulnHawk è progettato come livello complementare, non come sostituto:
| Livello |
|---|
vulnhawk scan ./src # Scansione completa (predefinita)
vulnhawk scan ./src --mode auth # Bypass autenticazione, controlli mancanti, difetti di sessione
vulnhawk scan ./src --mode injection # SQLi, injection comandi, SSTI, XSS
vulnhawk scan ./src --mode secrets # Chiavi hardcoded, token, password
vulnhawk scan ./src --mode config # Modalità debug, CORS permissivo, cookie non sicuri
vulnhawk scan ./src --mode crypto # Hashing debole, chiavi hardcoded, RNG debole
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 # Report Markdown
vulnhawk scan ./src --severity high # Solo Critici + Alti
vulnhawk scan ./src --severity info # Tutto
Alimenta VulnHawk con l'output di Semgrep, CodeQL o qualsiasi strumento che produce SARIF. Usa questi risultati come contesto aggiuntivo per validarli, espanderli e concatenarli in vulnerabilità più profonde.
# Esegui prima Semgrep, poi arricchisci con VulnHawk
semgrep --config auto ./src -o semgrep.sarif --sarif
vulnhawk scan ./src --sarif-input semgrep.sarif
Cosa permette:
vulnhawk info ./src # Anteprima file, chunk e ripartizione per linguaggio
VulnHawk esegue una scansione di base sul tuo branch predefinito e in modo incrementale su ogni 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'
I risultati vengono caricati automaticamente nella scheda Sicurezza > Scansione codice di GitHub tramite SARIF.
steps:
- uses: actions/checkout@v4
- name: Semgrep (scansione pattern veloce)
uses: returntocorp/semgrep-action@v1
with:
config: auto
generateSarif: true
- name: VulnHawk (analisi IA profonda)
uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
sarif-input: 'semgrep.sarif'
Codebase ──> Scopri ──> Chunk ──> Arricchisci ──> Analizza ──> Valida ──> Report
│ │ │ │ │
Rispetta Funzioni Codice LLM con Dedup +
.gitignore Classi correlato prompt punteggio
.vulnhawk- Route dalla stessa di confidenza
ignore Moduli dir + sicurezza
pattern di
autenticazione
Il passaggio di arricchimento è il differenziatore principale. Per ogni chunk di codice, VulnHawk include:
Questo dà all'IA il contesto necessario per identificare le incoerenze.
Escludi percorsi dalla scansione (sintassi gitignore):
generated/
vendor/
third_party/
*.gen.go
| Variabile | Descrizione |
|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Autenticazione Claude Code CLI (gratuita per abbonati) |
ANTHROPIC_API_KEY | Chiave API Claude |
OPENAI_API_KEY | Chiave API OpenAI |
Gli abbonamenti Claude Code (Max a $100-$200/mese, o piani Team) includono utilizzo illimitato della CLI. VulnHawk invoca claude --print internamente, inviando i prompt di analisi attraverso il tuo abbonamento esistente. Nessuna chiave API. Nessuna fatturazione per token.
Esegui claude config get oauth_token sulla tua macchina locale. Aggiungi l'output come segreto di GitHub Actions chiamato CLAUDE_CODE_OAUTH_TOKEN.
Entrambi. Le scansioni su push su main stabiliscono la tua baseline di sicurezza e popolano la scheda Sicurezza. Le scansioni su PR rilevano nuove vulnerabilità prima del merge. Il flusso di lavoro consigliato gestisce entrambi i trigger.
Sì – i chunk di codice vengono inviati al provider LLM configurato (Anthropic o OpenAI). Per una scansione completamente privata e air-gapped, utilizza il backend Ollama che viene eseguito interamente sulla tua macchina locale.
No. VulnHawk è un livello complementare. Semgrep e CodeQL sono eccellenti in ciò che fanno (pattern matching e taint tracking). VulnHawk cattura i bug di logica di business, i buchi di autenticazione e le incoerenze che le regole non possono esprimere. Utilizza tutti e tre insieme per la copertura più forte.
Sì. VulnHawk include la suddivisione in chunk consapevole del framework per entrambi. Rileva le definizioni di Route::get() di Laravel, classi/trait/interfacce PHP, dichiarazioni di route Rails (get, post, resources) e classi/moduli Ruby. Estrae anche import specifici del framework (use, require, include).
Puoi alimentare VulnHawk con un file SARIF prodotto da qualsiasi altro scanner (Semgrep, CodeQL, Snyk, ecc.). VulnHawk usa questi risultati come contesto aggiuntivo durante l'analisi – validandoli, trovando problemi correlati nelle vicinanze e costruendo catene di attacco multi-step che collegano i risultati tra gli strumenti.
Vedi 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
Se VulnHawk ti è utile, considera di sponsorizzare il progetto per supportare lo sviluppo continuo.
VulnHawk è costruito e mantenuto da GreyCore Labs, una società di sicurezza offensiva con sede negli Stati Uniti. Vuoi lo stesso occhio sul tuo prodotto?
VulnHawk è source-available sotto la VulnHawk License.
Gratuito per tutti – individui, team, startup e aziende possono utilizzare VulnHawk senza costi per la scansione di sicurezza interna, a condizione che venga installato da un canale di distribuzione ufficiale:
Non è consentito vendere il Software, offrirlo come servizio concorrente o ridistribuire fork come prodotto. I fork sono consentiti esclusivamente per inviare pull request a questo repository. Vedi LICENSE per i termini completi.
| Capacità | VulnHawk | Semgrep | CodeQL | Snyk Code | Checkmarx | SonarQube |
|---|
| Metodo di rilevamento | Ragionamento IA | Pattern AST | Flusso dati QL | ML + regole | Pattern + flusso | Pattern |
| Difetti di logica di business | Sì | No | Limitato | Limitato | Limitato | No |
| Contesto tra file | Automatico | Regole personalizzate | Query personalizzate | Parziale | Livello a pagamento | Limitato |
| Complessità di configurazione | Zero configurazione | Configurazione regole | Build DB + QL | File di configurazione | Complessa | Configurazione server |
| Regole personalizzate necessarie | No | Sì (YAML) | Sì (QL) | Parziale | Sì | Sì |
| Fix contestuali | Sì | Generici | Generici | Generici | Generici | Generici |
| Modalità locale/privata | Ollama | Sì | Sì | No | No | Self-hosted |
| Integrazione CI/CD | Action in 1 riga | Action | Action | Action | Plugin | Plugin |
| Input SARIF (catena di strumenti) | Sì | No | No | No | No | No |
| Prezzo | Gratuito* | Gratuito / A pagamento | Gratuito / A pagamento | Gratuito / $$$ | $$$$$ | Gratuito / $$$ |
| Classe di vulnerabilità | Perché gli strumenti basati su regole la perdono |
|---|
| Autorizzazione mancante su 1 endpoint su N | Nessun pattern da abbinare – il bug è l'assenza di un controllo |
| IDOR / BOLA | Richiede di capire che l'ID utente nel JWT dovrebbe corrispondere all'ID nell'URL |
| Manipolazione dell'importo del pagamento | Logica di business – il campo importo non dovrebbe essere fidato dal client |
| Validazione input inconsistente | 5 gestori sanificano, il 6° no – necessita di confronto tra file |
| Uso improprio di input memorizzati | Input salvato in modo sicuro, ma eval()-ato o in SQL raw in un file distante 3 passi |
| Race condition in aggiornamenti di stato | Modifiche concorrenti al saldo senza lock |
| Strumento |
|---|
| Scopo |
|---|
| 1 | Semgrep | Gating rapido e deterministico su pattern noti come dannosi |
| 2 | CodeQL | Tracciamento profondo del taint su catene di chiamate complesse |
| 3 | VulnHawk | Logica di business, buchi di autenticazione, IDOR e incoerenze che le regole non possono esprimere |
| Backend | Configurazione |
|---|---|
| Claude Code (gratuito) |
Ottieni il tuo token: |
| Codex (gratuito) |
Richiede |
| Claude API |
|
| OpenAI API |
|
| Linguaggio | Estensioni | Rilevamento framework |
|---|
| Python | .py | Django, Flask, FastAPI |
| JavaScript | .js .jsx | Express, Fastify, Next.js |
| TypeScript | .ts .tsx | Express, NestJS, Fastify |
| Go | .go | gestori net/http |
| Java | .java | Suddivisione classi/metodi |
| PHP | .php | Route Laravel, classi, trait, interfacce |
| Ruby | .rb .erb | Route Rails, classi, moduli |
| Backend | Per scansione (~100 file) | Requisito |
|---|
| Claude Code CLI | Gratuito | Abbonamento Claude Code Max o Team |
| Codex CLI | Gratuito | Abbonamento ChatGPT Pro o Plus |
| Claude API | ~$0.50 - $2.00 | Crediti API Anthropic |
| OpenAI API | ~$1.00 - $4.00 | Crediti API OpenAI |
| Ollama | Gratuito | Macchina locale con 8GB+ VRAM |