
Ein minimaler, LLM-betriebener Zero-Day-Schwachstellenscanner von AISLE.
Ein minimaler, auf LLM basierender Zero-Day-Schwachstellenscanner von AISLE.

Forschungsprototyp zu Demonstrationszwecken. Dies ist ein einfaches, aus einer einzigen Datei bestehendes Harness, das echte Zero-Day-Schwachstellen erkennen kann. Beachten Sie, dass es sich um einen Prototyp handelt, der auf C/C++-Speichersicherheitsfehler ausgerichtet ist und falsch-positive Ergebnisse liefern wird. Wir teilen ihn im Sinne der offenen Forschung so, wie er ist – seien Sie auf raue Kanten gefasst.
Nano-analyzer ist ein einfacher, aus einer einzigen Datei bestehender Python-Scanner, der Quellcode durch eine dreistufige LLM-Pipeline schickt:
Ergebnisse werden als Markdown- und JSON-Dateien zur manuellen Überprüfung gespeichert.
Dies ist ein v0.1 Prototyp. Bitte beachten Sie Folgendes:
rg) für Triage-Grep-Abfragencsearch/cindex) für schnellere Grep-Abfragen in großen Repositoriesgit clone https://github.com/weareaisle/nano-analyzer.git
cd nano-analyzer
# No dependency installation needed. Run directly:
python3 scan.py --help
Setzen Sie Ihren API-Schlüssel als Umgebungsvariable:
# For OpenAI models (model names without a slash, e.g. "gpt-5.4-nano"):
export OPENAI_API_KEY=sk-...
# For OpenRouter models (model names with a slash, e.g. "qwen/qwen3-32b"):
export OPENROUTER_API_KEY=sk-or-...
Der Scanner bestimmt anhand des Modellnamens, welcher Schlüssel verwendet wird: Enthält er einen /, wird über OpenRouter geroutet; andernfalls wird die OpenAI-API direkt verwendet.
# Scan a single file
python3 scan.py ./path/to/file.c
# Scan a directory recursively
python3 scan.py ./path/to/src/
# Use a different model
python3 scan.py ./src --model gpt-5.4
# Control parallelism
python3 scan.py ./src --parallel 30
# Point triage grep at the full repo root (useful when scanning a subdirectory)
python3 scan.py ./lib/crypto/ --repo-dir ./
# Only surface high-confidence findings
python3 scan.py ./src --min-confidence 0.7
# More triage rounds for higher accuracy (default: 5)
python3 scan.py ./src --triage-rounds 7
| Flag | Standard | Beschreibung |
|---|---|---|
path | (erforderlich) | Zu scannende Datei oder Verzeichnis |
--model | gpt-5.4-nano | Modell für alle Phasen (Kontext, Scan, Triage) |
--parallel | 50 | Maximale gleichzeitige Scan-API-Aufrufe |
--triage-threshold | medium | Funde mit diesem Schweregrad oder höher einer Triage unterziehen |
--triage-rounds | 5 | Triage-Runden pro Fund |
--triage-parallel | 50 | Maximale gleichzeitige Triage-API-Aufrufe |
--max-connections | parallel + triage-parallel | Gesamtobergrenze für API-Aufrufe |
--min-confidence | 0.0 | Nur Funde oberhalb dieser Sicherheit anzeigen (0,0–1,0) |
--project | Verzeichnisname | Projektname, der in Triage-Prompts verwendet wird |
--repo-dir | auto | Repository-Wurzel für Grep-Abfragen (auto: übergeordnetes Verzeichnis für Dateien, Scan-Verzeichnis für Ordner) |
--output-dir | ~/nano-analyzer-results/<timestamp>/ | Wo Ergebnisse gespeichert werden |
--max-chars | 200,000 | Dateien überspringen, die größer sind als |
--verbose-triage | aus | Triage-Fortschritt pro Runde anzeigen |
Ergebnisse werden unter ~/nano-analyzer-results/<timestamp>/ (oder --output-dir) gespeichert:
<timestamp>/
├── summary.json # maschinenlesbare Scan-Zusammenfassung
├── summary.md # menschenlesbare Scan-Zusammenfassung
├── <filename>.md # rohe Scannerausgabe pro Datei
├── <filename>.context.md # Kontextzusammenfassung pro Datei
├── <filename>.json # vollständige Ergebnisdaten pro Datei
├── triages/ # detaillierte Triage-Begründung
│ └── T0001_<file>_<title>.md
├── findings/ # Funde, die die Triage überstanden haben
│ └── VULN-001_<file>.md
├── triage.json # alle Triage-Urteile
└── triage_survivors.md # Zusammenfassung der validierten Funde
Wenn ein Scan ein Problem mit mittlerem oder höherem Schweregrad findet, wird die Triage-Pipeline gestartet:
Funde, die die Triage überstehen, werden mit vollständigen Begründungsketten in das Verzeichnis findings/ geschrieben.
Dieses Werkzeug ist ein Forschungsprototyp. Es ersetzt keine professionellen Sicherheitsaudits, manuelle Code-Reviews oder etablierte statische Analysetools. Verlassen Sie sich nicht darauf als Ihre einzige Sicherheitsbewertung. Verwendung auf eigene Gefahr.
Apache License 2.0