Un framework pour la génération et l'évaluation de cibles de fuzzing
Ce framework génère des cibles de fuzzing pour des projets C/C++/Java/Python réels avec divers grands modèles de langage (LLM) et les évalue au moyen de la plateforme OSS-Fuzz.
Voici un exemple de résultat d'expérimentation du 31 janvier 2024.
L'expérimentation comprenait 1300+ benchmarks issus de 297 projets open-source.
Dans l'ensemble, ce framework parvient à exploiter avec succès les LLM pour générer des cibles de fuzzing valides (qui produisent une augmentation non nulle de la couverture) pour 160 projets C/C++. L'augmentation maximale de la couverture de lignes est de 29 % par rapport aux cibles existantes écrites par des humains.
Notez que ces rapports ne sont pas publics car ils peuvent contenir des vulnérabilités non divulguées.
Utilisation
Consultez notre guide d'utilisation détaillé pour savoir comment exécuter ce framework et générer des rapports à partir des résultats.
Exécution et évaluation indépendantes des agents
Vous pouvez également exécuter ou évaluer des agents individuels sans lancer d'expérimentations complètes, à l'aide du framework intégré d'exécution d'agents.
Consultez la documentation du framework pour obtenir des instructions détaillées sur la façon d'exécuter des agents individuels ou des séquences d'agents.
Collaborations
Intéressé par des collaborations de recherche ou avec la communauté open-source ?
N'hésitez pas à créer une issue ou à nous écrire : [email protected].
Bugs découverts
Jusqu'à présent, nous avons signalé 30 nouveaux bugs/vulnérabilités trouvés par des cibles générées automatiquement par ce framework :
Ces bugs n'ont pu être découverts qu'avec des cibles nouvellement générées. Ils n'étaient pas atteignables avec les cibles OSS-Fuzz existantes.
Principales améliorations actuelles de la couverture par projet
Projet
Gain total de couverture
Gain relatif total
OSS-Fuzz-gen lignes couvertes totales
OSS-Fuzz-gen nouvelles lignes couvertes
Lignes couvertes existantes
Total de lignes du projet
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
* « Total de lignes du projet » mesure le code source du projet testé compilé et lié par les cibles de fuzzing préexistantes écrites par des humains provenant d'OSS-Fuzz.
* « Gain total de couverture » est calculé en utilisant comme dénominateur le « Total de lignes du projet ». « Gain relatif total » correspond à l'augmentation de couverture par rapport à l'ancien nombre de lignes couvertes.
* Du code supplémentaire du projet testé peut être inclus lors de la compilation des nouvelles cibles de fuzzing et entraîner des gains en pourcentage élevés.
Citation de ce travail
Veuillez cliquer sur le bouton 'Cite this repository' situé sur le côté droit de cette page GitHub pour obtenir les détails de citation.