
Un scanner minimaliste de vulnérabilités zero-day propulsé par LLM par AISLE.
Un scanner de vulnérabilités zero-day minimal propulsé par LLM par AISLE.

Prototype de recherche à des fins de démonstration. Il s'agit d'un harnais simple et monofichier capable de détecter de véritables vulnérabilités zero-day. Notez qu'il s'agit d'un prototype, orienté vers les bugs de sécurité mémoire en C/C++, et qu'il produira des faux positifs. Nous le partageons tel quel dans un esprit de recherche ouverte — attendez-vous à des angles vifs.
Nano-analyzer est un scanner Python simple et monofichier qui envoie le code source à travers un pipeline LLM en trois étapes :
Les résultats sont sauvegardés sous forme de fichiers Markdown et JSON pour examen humain.
Ceci est un prototype v0.1. Veuillez garder à l'esprit les points suivants :
rg) pour les recherches grep de tricsearch/cindex) pour un grep plus rapide sur les grands dépôtsgit clone https://github.com/weareaisle/nano-analyzer.git
cd nano-analyzer
# Aucune installation de dépendance nécessaire. Exécutez directement :
python3 scan.py --help
Définissez votre clé API en tant que variable d'environnement :
# Pour les modèles OpenAI (noms de modèles sans barre oblique, ex. "gpt-5.4-nano") :
export OPENAI_API_KEY=sk-...
# Pour les modèles OpenRouter (noms de modèles avec barre oblique, ex. "qwen/qwen3-32b") :
export OPENROUTER_API_KEY=sk-or-...
Le scanner détermine quelle clé utiliser en fonction du nom du modèle : s'il contient un /, il passe par OpenRouter ; sinon, il utilise directement l'API OpenAI.
# Analyser un seul fichier
python3 scan.py ./chemin/vers/fichier.c
# Analyser un dossier de manière récursive
python3 scan.py ./chemin/vers/src/
# Utiliser un modèle différent
python3 scan.py ./src --model gpt-5.4
# Contrôler le parallélisme
python3 scan.py ./src --parallel 30
# Pointer le grep de tri vers la racine complète du dépôt (utile lors de l'analyse d'un sous-dossier)
python3 scan.py ./lib/crypto/ --repo-dir ./
# N'afficher que les résultats à haute confiance
python3 scan.py ./src --min-confidence 0.7
# Plus de rounds de tri pour une meilleure précision (par défaut : 5)
python3 scan.py ./src --triage-rounds 7
Les résultats sont sauvegardés dans ~/nano-analyzer-results/<timestamp>/ (ou --output-dir) :
<timestamp>/
├── summary.json # résumé d'analyse lisible par machine
├── summary.md # résumé d'analyse lisible par humain
├── <filename>.md # sortie brute du scanner par fichier
├── <filename>.context.md # briefing de contexte par fichier
├── <filename>.json # données complètes des résultats par fichier
├── triages/ # raisonnement détaillé du tri
│ └── T0001_<file>_<title>.md
├── findings/ # résultats ayant survécu au tri
│ └── VULN-001_<file>.md
├── triage.json # tous les verdicts de tri
└── triage_survivors.md # résumé des résultats validés
Lorsqu'une analyse trouve un problème de sévérité moyenne ou supérieure, le pipeline de tri s'enclenche :
Les résultats qui survivent au tri sont écrits dans le dossier findings/ avec les chaînes de raisonnement complètes.
Cet outil est un prototype de recherche. Il ne remplace pas les audits de sécurité professionnels, la revue manuelle de code ou les outils d'analyse statique établis. Ne vous fiez pas à lui comme votre seul moyen d'évaluation de sécurité. Utilisez-le à vos propres risques.
Apache License 2.0
| Drapeau | Défaut | Description |
|---|
path | (obligatoire) | Fichier ou dossier à analyser |
--model | gpt-5.4-nano | Modèle pour toutes les étapes (contexte, analyse, tri) |
--parallel | 50 | Nombre maximal d'appels API d'analyse simultanés |
--triage-threshold | medium | Trier les résultats de sévérité égale ou supérieure à celle-ci |
--triage-rounds | 5 | Rounds de tri par résultat |
--triage-parallel | 50 | Nombre maximal d'appels API de tri simultanés |
--max-connections | parallel + triage-parallel | Plafond total d'appels API |
--min-confidence | 0.0 | Afficher uniquement les résultats au-dessus de cette confiance (0.0–1.0) |
--project | nom du dossier | Nom du projet utilisé dans les invites de tri |
--repo-dir | auto | Racine du dépôt pour les recherches grep (auto : dossier parent pour les fichiers, dossier d'analyse pour les dossiers) |
--output-dir | ~/nano-analyzer-results/<timestamp>/ | Où sauvegarder les résultats |
--max-chars | 200,000 | Ignorer les fichiers plus grands que ce nombre |
--verbose-triage | désactivé | Afficher la progression du tri par round |