
Marco de evaluación para agentes de pentesting de IA que mide el descubrimiento validado de vulnerabilidades mediante coincidencia semántica basada en LLM, resolución bipartita y análisis acumulativo en objetivos del mundo real.
Los agentes de pentesting con IA son cada vez más creíbles como sistemas ofensivos de seguridad, pero los benchmarks actuales aún proporcionan una guía limitada sobre qué sistemas tendrán un mejor rendimiento en objetivos del mundo real. La mayoría de las evaluaciones existentes valoran y optimizan metas predefinidas, como la captura de banderas, la ejecución remota de código, la reproducción de exploits o la similitud de trayectorias, en entornos simplificados o reducidos. Estos benchmarks son valiosos para medir capacidades acotadas, pero no capturan adecuadamente la complejidad, la exploración abierta y la toma de decisiones estratégicas que exige el pentesting realista. Presentamos un marco de evaluación práctico que traslada la evaluación desde la finalización de tareas hacia el descubrimiento validado de vulnerabilidades, lo que permite evaluar objetivos suficientemente complejos que abarcan múltiples superficies de ataque y clases de vulnerabilidad. El marco combina ground truth estructurado con emparejamiento semántico basado en LLM para identificar vulnerabilidades, resolución bipartita para puntuar los hallazgos bajo una ambigüedad realista, mantenimiento continuo del ground truth, evaluación repetida y acumulativa de agentes estocásticos, métricas de eficiencia y selección de conjuntos reducidos para una experimentación sostenible. Esta metodología amplía el estado del arte al permitir una comparación más realista y operativamente informativa de los agentes de pentesting con IA. Para permitir la reproducibilidad, además publicamos el ground truth anotado por expertos y el código del protocolo de evaluación propuesto.
Canal de evaluación para herramientas de pruebas de seguridad. Compara los hallazgos de la herramienta con conjuntos de datos de ground truth mediante emparejamiento basado en LLM y produce métricas de precisión, recall, F1 y F0.5.
poetry install
Requiere Python 3.11+ y Poetry instalados.
# 1. Set your LLM API key
export OPENAI_API_KEY="..."
# 2. Run evaluation
ethibench evaluate ./my_experiment --dataset path/to/dataset.yaml
# 3. View results
cat ./my_experiment/evaluation_outputs/summary.md
ethibench evaluateEjecuta el pipeline completo de evaluación en un directorio de experimento.
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: evaluate all experiments in a folder
ethibench evaluate --parent-dir final_experiments/ --dataset <dataset.yaml>
# Force re-evaluation (ignore cached artifacts)
ethibench evaluate <experiment_dir> --dataset <dataset.yaml> --force
Argumentos:
experiment_dir — (opcional) Directorio que contiene subdirectorios de objetivos (o subdirectorios run_*, cada uno con subdirectorios de objetivos). Puede omitirse cuando se usa --parent-dir.Opciones:
--dataset, -d — (obligatorio) Ruta al archivo YAML del dataset.--gt-dir, -g — Directorio de ground truth. Por defecto, gt/ junto al YAML del dataset.--output-dir, -o — Directorio de salida. Por defecto, evaluation_outputs/ dentro del directorio del experimento. Se ignora en modo por lotes.--replicates, -n — Número de réplicas de emparejamiento LLM (predeterminado: 1).--force, -f — Vuelve a ejecutar todos los pasos, ignorando los artefactos en caché. De forma predeterminada, se reutilizan los resultados intermedios existentes (emparejamientos crudos, emparejamientos bipartitos, métricas).--parent-dir, -p — Carpeta principal que contiene múltiples directorios de experimento para evaluar en lote. Todos los subdirectorios inmediatos se tratan como experimentos.Qué hace:
target_id), carga cada findings.jsonl y asigna subset_name desde el YAML del dataset.metrics.json por objetivo si existe, agrega coste/tokens/duración.evaluation_outputs/plots/.evaluation_outputs/summary.md.ethibench analyzeEjecuta herramientas de análisis sobre salidas de evaluación existentes.
ethibench analyze <experiment_dir> --dataset <dataset.yaml> [options]
# Batch: analyze all experiments and produce aggregated results
ethibench analyze --parent-dir final_experiments/ --dataset <dataset.yaml>
Argumentos:
experiment_dir — (opcional) Directorio de experimento a analizar. Puede omitirse cuando se usa --parent-dir.Opciones:
--dataset, -d — (obligatorio) Ruta al archivo YAML del dataset.--gt-dir, -g — Directorio de ground truth. Por defecto, gt/ junto al YAML del dataset.--output-dir, -o — Directorio de salidas de evaluación. Por defecto, evaluation_outputs/ dentro del directorio del experimento.--parent-dir, -p — Carpeta principal que contiene múltiples directorios de experimento para analizar en lote. Produce análisis por experimento además de resultados agregados.Salidas por experimento (evaluation_outputs/analysis/):
duplicates.json — hallazgos que coincidieron en el emparejamiento crudo pero fueron eliminados por la optimización bipartita.unmatched.json — hallazgos sin coincidencia con ground truth (falsos positivos).statistics.json — estadísticas de cobertura de GT, distribución de hallazgos por GT.Salidas agregadas (solo con --parent-dir, en <parent-dir>/aggregated_analysis/):
all_duplicates.jsonl — todos los hallazgos duplicados de todos los experimentos (JSONL, objetos de hallazgo completos con campo experiment).all_false_positives.jsonl — todos los hallazgos no emparejados/falsos positivos de todos los experimentos (formato JSONL).gt_statistics_avg.json — cobertura de GT promediada por subconjunto, más un resumen de cobertura por experimento.ethibench compareCompara los resultados de evaluación de múltiples experimentos, generando gráficos lado a lado y un informe resumen. Cada experimento debe tener ya salidas de evaluación (ejecuta primero ethibench evaluate). Las etiquetas son siempre los nombres de los directorios.
# Explicit experiment directories
ethibench compare exp-gpt4o/ exp-claude/ --output-dir comparison/
# Auto-discover all experiments under a parent folder
ethibench compare --parent-dir all-experiments/ --output-dir comparison/
# Mix: explicit dirs + auto-discovery
ethibench compare exp-extra/ --parent-dir all-experiments/ --output-dir comparison/
Argumentos:
experiment_dirs — (opcional) Uno o más directorios de experimento para incluir explícitamente.Opciones:
--output-dir, -o — (obligatorio) Directorio de salida para los resultados de la comparación.--parent-dir, -p — Carpeta principal desde la que descubrir experimentos automáticamente. Se incluye cualquier subdirectorio inmediato que contenga una carpeta evaluation_outputs/, ordenado alfabéticamente. Puede combinarse con experiment_dirs explícitos.