Un framework para la generación y evaluación de fuzz targets
Este framework genera fuzz targets para proyectos reales de C/C++/Java/Python con
varios modelos de lenguaje de gran tamaño (LLM) y los evalúa mediante la
plataforma OSS-Fuzz.
Aquí hay un ejemplo de resultado de experimento del 31 de enero de 2024.
El experimento incluyó más de 1300 benchmarks de 297 proyectos de código abierto.
En general, este framework logra aprovechar con éxito los LLM para generar fuzz targets válidos (que generan un aumento de cobertura distinto de cero)
para 160 proyectos de C/C++. El aumento máximo de cobertura de líneas es del 29% respecto a los fuzz targets escritos por humanos existentes.
Ten en cuenta que estos informes no son públicos, ya que pueden contener vulnerabilidades no divulgadas.
Uso
Consulta nuestra guía de uso para obtener instrucciones sobre cómo ejecutar este framework y generar informes basados en los resultados.
Ejecución y evaluación independiente de agentes
También puedes ejecutar o evaluar agentes individuales sin ejecutar experimentos completos, utilizando el framework integrado de ejecución de agentes.
Consulta la documentación del framework para obtener instrucciones detalladas sobre cómo ejecutar agentes individuales o secuencias de agentes.
Colaboraciones
¿Te interesan las colaboraciones de investigación o con la comunidad de código abierto?
No dudes en crear un issue o enviarnos un correo electrónico: [email protected].
Bugs descubiertos
Hasta ahora, hemos reportado 30 nuevos bugs/vulnerabilidades encontrados por fuzz targets generados automáticamente construidos
por este framework:
Estos bugs solo pudieron descubrirse con fuzz targets generados recientemente. No eran alcanzables con los fuzz targets OSS-Fuzz existentes.
Principales mejoras de cobertura actuales por proyecto
Proyecto
Ganancia total de cobertura
Ganancia relativa total
Líneas cubiertas totales por OSS-Fuzz-gen
Líneas cubiertas nuevas por OSS-Fuzz-gen
Líneas cubiertas existentes
Líneas totales del proyecto
phmap
98.42%
205.75%
1601
1181
574
1120
usbguard
97.62%
26.04%
24550
5463
20979
3564
onednn
96.67%
7057.14%
5434
5434
77
210
avahi
82.06%
155.90%
3358
2814
1805
3046
pugixml
72.98%
194.95%
9015
6646
3409
7662
librdkafka
66.88%
845.57%
5019
4490
531
1169
casync
66.75%
903.23%
1171
1120
124
1678
tomlplusplus
61.06%
331.10%
4755
3652
1103
5981
astc-encoder
59.35%
177.88%
2726
1745
981
2940
mruby
48.56%
0.00%
34493
34493
0
71038
arduinojson
42.10%
85.80%
3344
1800
2098
4276
json
41.13%
66.51%
5051
3339
5020
8119
double-conversion
40.40%
88.12%
1663
779
884
1928
tinyobjloader
38.26%
77.01%
1157
717
931
1874
glog
38.18%
58.69%
895
331
564
867
cppitertools
35.78%
45.07%
253
151
335
422
eigen
35.38%
190.70%
2643
1947
1021
* "Líneas totales del proyecto" mide el código fuente del proyecto bajo prueba compilado y enlazado por los fuzz targets escritos por humanos preexistentes de OSS-Fuzz.
* La "ganancia total de cobertura" se calcula utilizando como denominador las "líneas totales del proyecto". La "ganancia relativa total" es el aumento de cobertura en comparación con el número anterior de líneas cubiertas.
* Puede incluirse código adicional del proyecto bajo prueba al compilar los nuevos fuzz targets, lo que resulta en ganancias de alto porcentaje.
Cómo citar este trabajo
Haz clic en el botón 'Cite this repository' situado en el lado derecho de esta página de GitHub para obtener los detalles de la cita.