
Uno scanner di vulnerabilità zero-day minimo basato su LLM di AISLE.
Uno scanner minimalista per vulnerabilità zero-day basato su LLM, creato da AISLE.

Prototipo di ricerca a scopo dimostrativo. Si tratta di un semplice harness a file singolo in grado di rilevare reali vulnerabilità zero-day. Tieni presente che è un prototipo, orientato verso bug di sicurezza della memoria in C/C++, e produrrà falsi positivi. Lo condividiamo così com'è nello spirito della ricerca aperta — aspettati spigoli vivi.
Nano-analyzer è un semplice scanner Python a file singolo che invia codice sorgente attraverso un pipeline LLM a tre fasi:
I risultati vengono salvati come file Markdown e JSON per la revisione umana.
Questo è un prototipo v0.1. Tieni presente quanto segue:
rg) per ricerche grep durante il triagecsearch/cindex) per grep più veloce su repository grandigit clone https://github.com/weareaisle/nano-analyzer.git
cd nano-analyzer
# Non è necessaria installazione di dipendenze. Esegui direttamente:
python3 scan.py --help
Imposta la tua chiave API come variabile d'ambiente:
# Per modelli OpenAI (nomi di modello senza barra, es. "gpt-5.4-nano"):
export OPENAI_API_KEY=sk-...
# Per modelli OpenRouter (nomi di modello con barra, es. "qwen/qwen3-32b"):
export OPENROUTER_API_KEY=sk-or-...
Lo scanner determina quale chiave utilizzare in base al nome del modello: se contiene una /, instrada attraverso OpenRouter; altrimenti utilizza direttamente l'API OpenAI.
# Scansiona un singolo file
python3 scan.py ./path/to/file.c
# Scansiona una directory ricorsivamente
python3 scan.py ./path/to/src/
# Usa un modello diverso
python3 scan.py ./src --model gpt-5.4
# Controlla il parallelismo
python3 scan.py ./src --parallel 30
# Indica al triage grep la radice completa del repository (utile quando si scansiona una sottodirectory)
python3 scan.py ./lib/crypto/ --repo-dir ./
# Mostra solo risultati ad alta confidenza
python3 scan.py ./src --min-confidence 0.7
# Più round di triage per maggiore accuratezza (default: 5)
python3 scan.py ./src --triage-rounds 7
I risultati vengono salvati in ~/nano-analyzer-results/<timestamp>/ (o --output-dir):
<timestamp>/
├── summary.json # riepilogo della scansione leggibile da macchina
├── summary.md # riepilogo della scansione leggibile da umano
├── <filename>.md # output grezzo dello scanner per file
├── <filename>.context.md # briefing di contesto per file
├── <filename>.json # dati completi dei risultati per file
├── triages/ # ragionamento dettagliato del triage
│ └── T0001_<file>_<title>.md
├── findings/ # risultati sopravvissuti al triage
│ └── VULN-001_<file>.md
├── triage.json # tutti i verdetti del triage
└── triage_survivors.md # riepilogo dei risultati convalidati
Quando una scansione trova un problema di gravità media o superiore, il pipeline di triage si attiva:
I risultati che sopravvivono al triage vengono scritti nella directory findings/ con catene complete di ragionamento.
Questo strumento è un prototipo di ricerca. Non sostituisce audit di sicurezza professionali, revisione manuale del codice o strumenti di analisi statica consolidati. Non fare affidamento su di esso come unica valutazione della sicurezza. Utilizzalo a tuo rischio.
Apache License 2.0
| Flag | Default | Descrizione |
|---|
path | (obbligatorio) | File o directory da scansionare |
--model | gpt-5.4-nano | Modello per tutte le fasi (contesto, scansione, triage) |
--parallel | 50 | Numero massimo di chiamate API di scansione concorrenti |
--triage-threshold | medium | Esegui triage per risultati con gravità pari o superiore a questa |
--triage-rounds | 5 | Round di triage per ogni risultato |
--triage-parallel | 50 | Numero massimo di chiamate API di triage concorrenti |
--max-connections | parallel + triage-parallel | Limite totale delle chiamate API |
--min-confidence | 0.0 | Mostra solo risultati con confidenza superiore a questa (0.0–1.0) |
--project | nome della directory | Nome del progetto usato nei prompt di triage |
--repo-dir | automatico | Radice del repository per ricerche grep (automatico: directory padre per file, directory di scansione per cartelle) |
--output-dir | ~/nano-analyzer-results/<timestamp>/ | Dove salvare i risultati |
--max-chars | 200.000 | Salta file più grandi di questo valore |
--verbose-triage | disattivato | Mostra l'avanzamento del triage per round |