
LLM powered fuzzing via OSS-Fuzz.
Dieses Framework generiert Fuzz-Targets für reale C/C++/Java/Python-Projekte mit verschiedenen Large Language Models (LLM) und benchmarkt sie über die OSS-Fuzz-Plattform.
Weitere Details finden Sie in AI-Powered Fuzzing: Breaking the Bug Hunting Barrier:

Derzeit unterstützte Modelle sind:
Generierte Fuzz-Targets werden anhand von vier Metriken gegen die aktuellsten Daten aus der Produktionsumgebung bewertet:
OSS-Fuzz.Hier ist ein Beispiel-Ergebnis eines Experiments vom 31. Januar 2024. Das Experiment umfasste 1300+ Benchmarks aus 297 Open-Source-Projekten.

Insgesamt gelingt es diesem Framework, LLMs erfolgreich einzusetzen, um gültige Fuzz-Targets (die eine Abdeckungssteigerung ungleich null erzeugen) für 160 C/C++-Projekte zu generieren. Die maximale Steigerung der Zeilenabdeckung gegenüber den vorhandenen, von Menschen geschriebenen Targets beträgt 29 %.
Beachten Sie, dass diese Berichte nicht öffentlich sind, da sie möglicherweise nicht offengelegte Schwachstellen enthalten.
In unserer ausführlichen Nutzungsanleitung finden Sie Anweisungen, wie Sie dieses Framework ausführen und auf Grundlage der Ergebnisse Berichte erstellen können.
Sie können auch einzelne Agents ausführen oder bewerten, ohne vollständige Experimente auszuführen, indem Sie das integrierte Agent-Ausführungsframework verwenden. In der Dokumentation des Frameworks finden Sie detaillierte Anweisungen, wie Sie einzelne Agents oder Agent-Sequenzen ausführen können.
Interessiert an Forschung oder Kooperationen mit der Open-Source-Community? Erstellen Sie gerne ein Issue oder schreiben Sie uns eine E-Mail: [email protected].
Bisher haben wir 30 neue Bugs/Schwachstellen gemeldet, die von automatisch generierten Targets gefunden wurden, die mit diesem Framework erstellt wurden:
Diese Bugs konnten ausschließlich mit neu generierten Targets entdeckt werden. Sie waren mit den vorhandenen OSS-Fuzz-Targets nicht erreichbar.
* „Total project lines" misst den Quellcode des getesteten Projekts, der von den bereits vorhandenen, von Menschen geschriebenen Fuzz-Targets aus OSS-Fuzz kompiliert und gelinkt wird.
* „Total coverage gain" wird mithilfe eines Nenners von „Total project lines" berechnet. „Total relative gain" ist die Steigerung der Abdeckung im Vergleich zur bisherigen Anzahl abgedeckter Zeilen.
* Beim Kompilieren der neuen Fuzz-Targets kann zusätzlicher Code aus dem getesteten Projekt einbezogen werden, was zu hohen prozentualen Gewinnen führt.
Bitte klicken Sie für Zitationsdetails auf die Schaltfläche 'Cite this repository' auf der rechten Seite dieser GitHub-Seite.
| Projekt | Bug | LLM | Prompt Builder | Target oracle |
|---|
cJSON | OOB read | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
libplist | OOB read | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
hunspell | OOB read | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
zstd | OOB write | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
gdbm | Stack buffer underflow | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
hoextdown | Use of uninitialised memory | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
pjsip | OOB read | Vertex AI | Standard | Geringe Abdeckung mit Fuzz-Keyword + einfache Parameter, weite Reichweite |
pjsip | OOB read | Vertex AI | Standard | Geringe Abdeckung mit Fuzz-Keyword + einfache Parameter, weite Reichweite |
gpac | OOB read | Vertex AI | Standard | Geringe Abdeckung mit Fuzz-Keyword + einfache Parameter, weite Reichweite |
gpac | OOB read/write | Vertex AI | Standard | Alle |
gpac | OOB read | Vertex AI | Standard | Alle |
gpac | OOB read | Vertex AI | Standard | Alle |
sqlite3 | OOB read | Vertex AI | Standard | Alle |
htslib | OOB read | Vertex AI | Standard | Alle |
libical | OOB read | Vertex AI | Standard | Alle |
croaring | OOB read | Vertex AI | Test-to-harness | Alle |
openssl | CVE-2024-9143 - OOB read/write | Vertex AI | Standard | Alle |
liblouis | Use of uninitialised memory | Vertex AI | Test-to-harness | Test identifier |
libucl | OOB read | Vertex AI | Standard | Geringe Abdeckung mit Fuzz-Keyword + einfache Parameter, weite Reichweite |
openbabel | Use after free | Vertex AI | Standard | Geringe Abdeckung mit Fuzz-Keyword + einfache Parameter, weite Reichweite |
libyang | OOB read | Vertex AI | Standard | Alle |
openbabel | OOB read | Vertex AI | Standard | Alle |
exiv2 | OOB read | Vertex AI | Standard | Alle |
| Nicht offengelegt | Java RCE (wartet auf Triage durch den Maintainer) | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
| Nicht offengelegt | Regexp DoS (wartet auf Triage durch den Maintainer) | Vertex AI | Standard | Weite Reichweite, geringe Abdeckung |
| Nicht offengelegt | OOB read | Vertex AI | Standard | Alle |
| Nicht offengelegt | OOB write | Vertex AI | Standard | Alle |
| Nicht offengelegt | OOB read | Vertex AI | Standard | Alle |
| Nicht offengelegt | OOB read | Vertex AI | Standard | Alle |
| Nicht offengelegt | Use after free | Vertex AI | Agent prompt | Alle |
| Projekt | Gesamtabdeckungsgewinn | Gesamter relativer Gewinn | Von OSS-Fuzz-gen insgesamt abgedeckte Zeilen | Von OSS-Fuzz-gen neu abgedeckte Zeilen | Bereits abgedeckte Zeilen | Gesamtzahl der Projektzeilen |
|---|
| 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 | 5503 |
| glaze | 34.55% | 30.06% | 2920 | 2416 | 8036 | 6993 |
| rapidjson | 31.83% | 148.07% | 1585 | 958 | 647 | 3010 |
| libunwind | 30.58% | 83.25% | 2899 | 1342 | 1612 | 4388 |
| openh264 | 30.07% | 50.14% | 6607 | 5751 | 11470 | 19123 |