
Un escáner de vulnerabilidades zero-day minimalista impulsado por LLM de AISLE.
Un escáner de vulnerabilidades de día cero mínimo basado en LLM por AISLE.

Prototipo de investigación con fines de demostración. Este es un harness simple de un solo archivo que puede detectar vulnerabilidades reales de día cero. Tenga en cuenta que es un prototipo, sesgado hacia errores de seguridad de memoria en C/C++, y producirá falsos positivos. Lo compartimos tal cual en el espíritu de la investigación abierta — espere esquinas afiladas.
Nano-analyzer es un escáner Python simple de un solo archivo que envía código fuente a través de un pipeline LLM de tres etapas:
Los resultados se guardan como archivos Markdown y JSON para revisión humana.
Esta es una versión v0.1 prototipo. Tenga en cuenta lo siguiente:
rg) para búsquedas grep de triajecsearch/cindex) para un grep más rápido en repositorios grandesgit clone https://github.com/weareaisle/nano-analyzer.git
cd nano-analyzer
# No es necesario instalar dependencias. Ejecute directamente:
python3 scan.py --help
Establezca su clave API como variable de entorno:
# Para modelos OpenAI (nombres de modelo sin barra, ej., "gpt-5.4-nano"):
export OPENAI_API_KEY=sk-...
# Para modelos OpenRouter (nombres de modelo con barra, ej., "qwen/qwen3-32b"):
export OPENROUTER_API_KEY=sk-or-...
El escáner determina qué clave usar según el nombre del modelo: si contiene una /, se enruta a través de OpenRouter; de lo contrario, utiliza la API de OpenAI directamente.
# Escanear un solo archivo
python3 scan.py ./path/to/file.c
# Escanear un directorio recursivamente
python3 scan.py ./path/to/src/
# Usar un modelo diferente
python3 scan.py ./src --model gpt-5.4
# Controlar paralelismo
python3 scan.py ./src --parallel 30
# Apuntar el grep de triaje a la raíz completa del repositorio (útil al escanear un subdirectorio)
python3 scan.py ./lib/crypto/ --repo-dir ./
# Solo mostrar hallazgos de alta confianza
python3 scan.py ./src --min-confidence 0.7
# Más rondas de triaje para mayor precisión (por defecto: 5)
python3 scan.py ./src --triage-rounds 7
Los resultados se guardan en ~/nano-analyzer-results/<timestamp>/ (o --output-dir):
<timestamp>/
├── summary.json # resumen del escaneo legible por máquina
├── summary.md # resumen del escaneo legible por humanos
├── <filename>.md # salida cruda del escáner por archivo
├── <filename>.context.md # informe de contexto por archivo
├── <filename>.json # datos completos del resultado por archivo
├── triages/ # razonamiento detallado del triaje
│ └── T0001_<file>_<title>.md
├── findings/ # hallazgos que sobrevivieron al triaje
│ └── VULN-001_<file>.md
├── triage.json # todos los veredictos de triaje
└── triage_survivors.md # resumen de hallazgos validados
Cuando un escaneo encuentra un problema de severidad media o superior, se activa el pipeline de triaje:
Los hallazgos que sobreviven al triaje se escriben en el directorio findings/ con cadenas completas de razonamiento.
Esta herramienta es un prototipo de investigación. No reemplaza las auditorías de seguridad profesionales, la revisión manual de código ni las herramientas establecidas de análisis estático. No confíe en ella como su única evaluación de seguridad. Úsela bajo su propio riesgo.
Apache License 2.0
| Bandera | Predeterminado | Descripción |
|---|
path | (requerido) | Archivo o directorio a escanear |
--model | gpt-5.4-nano | Modelo para todas las etapas (contexto, escaneo, triaje) |
--parallel | 50 | Máximo de llamadas API de escaneo concurrentes |
--triage-threshold | medium | Triaje de hallazgos con esta severidad o superior |
--triage-rounds | 5 | Rondas de triaje por hallazgo |
--triage-parallel | 50 | Máximo de llamadas API de triaje concurrentes |
--max-connections | parallel + triage-parallel | Límite total de llamadas API |
--min-confidence | 0.0 | Solo mostrar hallazgos por encima de esta confianza (0.0–1.0) |
--project | nombre del directorio | Nombre del proyecto utilizado en los prompts de triaje |
--repo-dir | auto | Raíz del repositorio para búsquedas grep (auto: directorio padre para archivos, directorio de escaneo para carpetas) |
--output-dir | ~/nano-analyzer-results/<timestamp>/ | Dónde guardar los resultados |
--max-chars | 200,000 | Omitir archivos más grandes que esto |
--verbose-triage | off | Mostrar progreso del triaje por ronda |