Robocikowo>ROBOCIKOWO
Narzędzia deweloperskie

OSS-Fuzz

2016AktywnyOpublikowano: 2 września 2026Aktualizacja: 2 września 2026Opublikowany
Darmowa usługa Google do ciągłego fuzzingu oprogramowania open source, wykrywająca podatności i błędy; rozszerzana o AI (OSS-Fuzz-Gen) generujące targety fuzzingowe LLM-ami.
Kluczowa innowacja
Uczyniła ciągły, zautomatyzowany fuzzing na skalę przemysłową darmowym i dostępnym dla projektów open source jako usługa CI, zamiast jednorazowych, ręcznych kampanii testowych.
Kategoria
Narzędzia deweloperskie
Poziom abstrakcji
System
Poziom operacji
ToolingEwaluacja (runtime)
Zastosowania
Wykrywanie podatności bezpieczeństwa w bibliotekach C/C++Ciągłe testowanie stabilności projektów open sourceFuzzing zintegrowany z CI/CDAutomatyczne generowanie targetów fuzzingowych z użyciem LLM (OSS-Fuzz-Gen)Benchmark dla AI generującego testy i harnessy fuzzingowe

Jak działa

Projekty integrują się przez pliki build (Dockerfile + build.sh) definiujące sposób budowania celów fuzzingowych. OSS-Fuzz kompiluje kod z wybranym silnikiem fuzzingu (libFuzzer/AFL++/Honggfuzz/Centipede) i sanityzerami (address/memory/undefined), a następnie uruchamia je masowo w rozproszonej infrastrukturze ClusterFuzz. Wykryte awarie są deduplikowane, minimalizowane i zgłaszane maintainerom w ramach procesu odpowiedzialnego ujawniania, a poprawki są automatycznie weryfikowane. Rozszerzenie OSS-Fuzz-Gen używa LLM-ów do generowania nowych harnessów fuzzingowych i ocenia je względem istniejących pod kątem kompilowalności, awarii w czasie wykonania i pokrycia kodu.

Rozwiązany problem

Krytyczne oprogramowanie open source było testowane fuzzingiem rzadko i doraźnie, przez co poważne podatności (np. Heartbleed) długo pozostawały niewykryte. OSS-Fuzz zapewnia stały, zautomatyzowany fuzzing na infrastrukturze Google z szybkim raportowaniem awarii i regresji do maintainerów.

Komponenty

ClusterFuzzRozproszona infrastruktura wykonania fuzzingu

Skalowalny backend uruchamiający cele fuzzingowe na dużej liczbie maszyn, deduplikujący i minimalizujący awarie oraz zarządzający ich cyklem życia.

Silniki fuzzinguGenerowanie wejść testowych

libFuzzer, AFL++, Honggfuzz i Centipede — silniki generujące i mutujące dane wejściowe w poszukiwaniu awarii.

Oficjalna

SanityzeryWykrywanie błędów w czasie wykonania

AddressSanitizer, MemorySanitizer i UndefinedBehaviorSanitizer wykrywają błędy pamięci i niezdefiniowane zachowania podczas wykonywania celów fuzzingowych.

Oficjalna

Infrastruktura budowania (Docker)Reprodukowalne budowanie celów fuzzingowych

Obrazy Docker z plikami build.sh definiują reprodukowalny sposób kompilacji celów fuzzingowych dla każdego projektu.

OSS-Fuzz-GenGenerowanie targetów fuzzingowych przez LLM

Framework wykorzystujący duże modele językowe (Gemini, GPT) do automatycznego pisania i oceny harnessów fuzzingowych dla projektów OSS-Fuzz.

Oficjalna

Ewolucja

2016
Uruchomienie OSS-Fuzz
Punkt przełomowy

Google uruchamia OSS-Fuzz (ogłoszenie 1 grudnia 2016) po podatności Heartbleed, we współpracy z Core Infrastructure Initiative.

2023
Publikacja OSS-Fuzz-Gen

Google udostępnia OSS-Fuzz-Gen — framework wykorzystujący LLM do automatycznego generowania targetów fuzzingowych.

2024
Wykrycie CVE-2024-9143 przez AI
Punkt przełomowy

Targety wygenerowane przez LLM w OSS-Fuzz-Gen znalazły 30 nowych błędów, w tym CVE-2024-9143 w OpenSSL, nieosiągalnych dla wcześniejszych, ręcznych targetów.

Hiperparametry (konfigurowalne osie)

Silnik fuzzinguWysoka

Silnik generujący dane wejściowe dla celu fuzzingowego.

libFuzzer
AFL++
Honggfuzz
Centipede
SanityzerWysoka

Instrumentacja wykrywająca błędy w czasie wykonania. Domyślnie address i undefined.

addressAddressSanitizer (domyślny)
undefinedUndefinedBehaviorSanitizer (domyślny)
memoryMemorySanitizer (opcjonalny)
Język projektuŚrednia

Język programowania fuzzowanego projektu.

C/C++
Rust
Go
Python
Java/JVM
JavaScript

Wymagania sprzętowe

Podstawowe

Fuzzing jest zadaniem CPU-bound; OSS-Fuzz uruchamia cele na klastrach x86_64/i386 bez potrzeby akceleratorów.