Üdvözlöm, Ön a
fuzzing szó jelentését keresi. A DICTIOUS-ban nem csak a
fuzzing szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
fuzzing szót egyes és többes számban mondani. Minden, amit a
fuzzing szóról tudni kell, itt található. A
fuzzing szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
fuzzing és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
fuzzing (tsz. fuzzings)
- (informatika) A fuzzing (vagy fuzz tesztelés) egy automatikus szoftvertesztelési technika, amely során a program bemeneteire nagy mennyiségű véletlenszerű, érvénytelen, váratlan vagy kézzel módosított adatot küldünk, azzal a céllal, hogy hibákat, összeomlásokat, vagy sebezhetőségeket tárjunk fel.
🎯 Fő cél
- Stabilitás és biztonság tesztelése.
- Crash-ek, assertion hibák, memóriakezelési hibák és potenciális sebezhetőségek felderítése, pl.:
- buffer overflow,
- use-after-free,
- integer overflow,
- heap corruption,
- null pointer dereference.
🔍 Hogyan működik?
- A fuzzer (fuzzing eszköz) generál bemeneteket.
- Ezeket megeteti a programmal.
- A fuzzer figyeli a program viselkedését:
- lefagyás,
- kivétel,
- hibakód,
- memóriaszivárgás,
- CPU/memória túlhasználat.
- Ha valami „érdekes” történik, a bemenet elmentésre kerül elemzéshez vagy reprodukáláshoz.
🧱 Fuzzing típusai
1. Black-box Fuzzing
- Nem ismeri a program belső működését.
- Csak a bemenetek és kimenetek figyelésével dolgozik.
- Egyszerű, de kevésbé hatékony.
2. White-box Fuzzing
- Teljes hozzáféréssel dolgozik a forráskódhoz.
- Elemzi a vezérlésáramlást, lefedettséget.
- Sokkal okosabb bemenetgenerálás.
3. Grey-box Fuzzing (→ legnépszerűbb!)
- Középutas megközelítés.
- A futás során gyűjt információkat (pl. kódfedettség).
- Példa: AFL (American Fuzzy Lop), libFuzzer, Honggfuzz.
⚙️ Milyen típusú bemenetekkel dolgozik?
- Szöveg (pl. JSON, XML, HTML)
- Bináris fájlok (pl. képek, videók, MP3)
- Protokoll bemenetek (pl. HTTP, FTP)
- Parancssori argumentumok
- REST API-k, hálózati csomagok
📈 Mit figyel a fuzzer?
- Segfault
- Heap overflow
- Division by zero
- Assertion failure
- Infinite loop / timeout
- Kivétel dobás (exception)
- Memory leaks (valgrind / ASan)
🛠️ Népszerű fuzzerek
Eszköz
|
Típus
|
Nyelv / Platform
|
AFL
|
Grey-box
|
C/C++
|
libFuzzer
|
In-process
|
C/C++, LLVM
|
Honggfuzz
|
Grey-box
|
C/C++, Linux
|
Boofuzz
|
Network
|
Python
|
zzuf
|
Black-box
|
Fájlalapú
|
fuzzdb
|
Input repo
|
Fuzzing payloadok
|
🔐 Fuzzing a biztonságban
A fuzzing kritikus eszköz a szoftverbiztonsági tesztelésben:
- Zero-day sebezhetőségek felfedezése.
- Protokoll implementációk (pl. TLS, HTTP) hibáinak felderítése.
- Jelszóellenőrzők, formátum-elemzők célzott tesztelése.
A fuzzinget használta pl. a:
- Google (Chrome fuzzing – ClusterFuzz),
- Microsoft (Windows Defender fuzzing),
- Mozilla (Firefox fuzzing),
- OSS-Fuzz (nyílt forráskódú projektekhez).
🧬 Coverage-guided Fuzzing
Ez a technika (pl. AFL, libFuzzer):
- Méri, hogy melyik utasítások hajtódnak végre a bemenet hatására.
- Új bemeneteket keres, amelyek új kódrészeket érnek el.
- Mutációs algoritmusokat használ:
- bájtok módosítása,
- törlés, beszúrás, XOR, véletlen értékek,
- értelmes struktúrák (pl. JSON zárójelezés).
⚠️ Limitációk
- Bemenetformátum ismerete hiányos → gyorsan elakad.
- Hamis pozitív hibák (pl. crash nem sebezhetőség).
- Skálázhatóság: nagy programok fuzzolása költséges.
- Stateful protokollok fuzzolása nehézkes (pl. SMTP, FTP).
- Nem determinisztikus viselkedés → nehezen reprodukálható hibák.
🧰 Fuzzing és más technikák
Technika
|
Összehasonlítás
|
Tesztelés
|
Fuzzing automatikusan keres hibás eseteket
|
Statikus analízis
|
Forráskódot vizsgál, nem futtat
|
Symbolic execution
|
Sokkal mélyebb, de lassabb
|
Formal verification
|
Teljes helyesség, de komplex és időigényes
|
Fuzzing ezek mellett használható, nem helyettük.
🔎 Fuzzing pipeline példa (libFuzzer + ASan)
- Program fordítása:
clang -fsanitize=address,fuzzer test.c
- Elindítás:
./a.out corpus/
- Bemenetek automatikus generálása
- Crash esetén: bemenet mentése, stack trace, reprodukció
TL;DR
A fuzzing egy automatikus hibakeresési technika, amely szándékosan rossz vagy véletlenszerű bemeneteket ad a programnak, és figyeli, hogy hogyan reagál. Fő célja a robosztusság tesztelése és sebezhetőségek felfedezése. Használható fájlkezelők, formátumfeldolgozók, hálózati protokollok, és API-k tesztelésére is. A modern fuzzerek (pl. AFL, libFuzzer) okos bemenetgenerálással és futás közbeni megfigyeléssel dolgoznak, így képesek mély hibákat is feltárni.