Mikä on Fuzz-testaus?

Fuzz-testaus, joka tunnetaan myös nimellä fuzzing tai monkey-testaus, on tekniikka, jota käytetään testaamaan ohjelmistoja tuntemattomille haavoittuvuuksille. Fuzz-testausprosessi automatisoidaan fuzzer- nimellä tunnetulla ohjelmalla, joka tuottaa suuren määrän tietoja, jotka lähetetään kohdeprogrammille tulona. Jos kohdeohjelma kaatuu tai käyttäytyy ei-toivotulla tavalla, fuzzer tekee lokin virheestä aiheutuneesta syötteestä.

Hakkerit käyttävät usein fuzzereita etsimään ohjelmistojen haavoittuvuuksia ja testaavat heitä heikkouksiin, joita he voivat hyödyntää. Ohjelmistokehittäjät voivat käyttää fuzzeria ennakoimaan ja puolustamaan näitä hyökkäyksiä.

alkuperä

Ensimmäisen fuzzerin kirjoitti kehittäjä Steve Capps 1980-luvun alussa testatakseen Macintosh-tietokoneen ohjelmien heikkoutta. Hän kutsui ohjelmaa "The Monkey" viittaamalla apinan klassiseen sanontaan, joka painoi satunnaisia ​​näppäimiä kirjoituskoneeseen äärettömän paljon aikaa. Teoria on, että antanut tarpeeksi aikaa, apina kirjoittaa lopulta Shakespearen täydelliset teokset. Vaikka tätä lähestymistapaa ohjelmistojen testaukseen kutsutaan tyypillisesti "fuzzingiksi", sitä kutsutaan myös "apinan testaukseksi" Capps-ohjelman vuoksi.

Luettelo Fuzzersista

Fuzzing-tekniikoita voidaan käyttää ohjelmiston testaamiseen, ja monia fuzzereja on olemassa tiettyihin tarkoituksiin.

Seuraavassa on luettelo fuzzereista, joista useimmat ovat avoimen lähdekoodin ja monet yhä aktiivisessa kehityksessä.

Fuzzerin nimi / URL-osoiteKuvaus
Google SanitizersGoogle-sivustossa kehitettiin neljä tietojenkäsittelylaitetta, jotka käyttävät fuzzingia ohjelmavirheiden havaitsemiseksi:
  • AddressSanitizer, joka havaitsee muistin osoitevirheet C- ja C ++ -ohjelmissa.
  • LeakSanitizer, joka havaitsee muistivuodot.
  • ThreadSanitizer, joka havaitsee kilpailuolosuhteet C ++: ssa ja Goissa .
  • Memory Sanitizer, joka havaitsee alustamattoman muistin.
AFL-nöyhtäAmerican Fuzzy Lop, työkalu, joka käyttää geneettisiä algoritmeja koottujen ohjelmien turvallisuuden testaamiseen.
BackfuzzProtokollan fuzzing-työkalupakki.
BrundleFuzzJaettu fuzzer Windowsille ja Linuxille.
CERT FOECERT: n kehittämä epäonnistumisen tarkkailukone, joka käyttää mutaatiota fuzzingin avulla havaitsemaan haavoittuvuudet Windows-ohjelmissa.
CERTfuzzCERT FOE: n lähdekoodi.
ChoronzonEvoluutio tietoon perustuva fuzzer.
DiffyTwitterin kehittämä työkalu web-palveluiden haavoittuvuuksien löytämiseksi.
pyörryksissäPythonin fuzzing-kirjasto
dfuzzerFuzzing-työkalu prosessien testaamiseen, jotka kommunikoivat D-Bus IPC- ja RPC-mekanismin kautta.
dotdotpwnTyökalu, jolla voidaan testata Web-sovelluksia polkuhaavoittuvuuksiin.
DranzerFuzz-testeri ActiveX-ohjaimille.
EMFFuzzerEnhanced Metafile fuzz tester.
hyödynnettävissäLaajennus GDB: lle (GNU debugger), joka analysoi Linux-suoritettavia tiedostoja ja luokittelee niiden virheet vakavuuden mukaan tunnettujen hyödyntämistapojen mukaan. Alun perin kehitetty CERT: ssä.
Go-fuzzFuzz-testeri Go-ohjelmille, joka kokoaa kohteet satunnaisarvoilla.
GRRKääntää 32-bittiset binaarit 64-bittiseksi, fuzzing ne osana prosessia.
honggfuzzEvoluutio, palauteohjattu fuzzer laitteisto- ja ohjelmistoalalla.
HTTP / 2 FuzzerHTTP / 2-sovellusten fuzzer on edelleen ladattavissa, mutta sitä ei enää kehitetä aktiivisesti.
Hodor"Hieman enemmän kuin täysin tyhmä" (brute force) fuzzer.
iFuzzerPythonissa kirjoitettu fuzzer, joka käyttää Mercurialia ja Valgrindia.
KEMUfuzzerFuzzer virtuaalikoneille, jotka toimivat QEMU-, VMware-, VirtualBox- tai BHOCS-emulointijärjestelmillä.
KernelFuzzerSärmäys ytimen järjestelmäpuheluille
LibFuzzerKirjasto prosessin, evoluutio-, peitto-ohjattavan fuzz-testauksen varten.
NetzobFuzzer käänteistekniikan viestintäprotokollia varten.
Neural FuzzerFuzzer, joka käyttää koneen oppimista (hermoverkkoja) testien suorittamiseen.
PainajainenJaettu fuzzer, jossa on web-pohjaisia ​​hallintatyökaluja.
PathgrindReittipohjainen dynaaminen analyysi 32-bittisille sovelluksille.
Teho-fuzzerFuzzer, joka on suunniteltu testaamaan perf_event_open () -järjestelmän puhelua Linux-ytimessä.
pulsarFuzzer, joka "oppii" protokollia.
PyJFuzzPython JSONin fuzzer.
QuickFuzzHaskellissa kirjoitettu kokeellinen kielioppi fuzzer.
RadamsaYleiskäyttöinen fuzzer.
himokasYksinkertainen Python-fuzzer, joka tuottaa satunnaistulon testattuun ohjelmaan.
sfuzzYksinkertainen fuzz. "Mitä se kuulostaa - yksinkertainen fuzzer." Mukana osana Kali Linux -työkalua.
skipfishGooglessa kehitetty verkkosovelluksen tietoturvatarkistus.
syntribiosAutomaattinen fuzz-testeri verkkosovelluksille, kirjoitettu Pythonissa ja jota ylläpitää OpenStack Security Group.
TriforceAFLTäydellinen järjestelmä, joka käyttää QEMU: ta.
KanadanhirviVerkkosovelluksen haavoittuvuuden skanneri.
WfuzzBrute-force fuzzer web-sovelluksiin.
zzufDeterministinen, läpinäkyvä sovellustulon fuzzer, joka muuttaa satunnaisesti tiedostojen syöttötoimintojen bittejä.

Seuraavassa on fuzzing-valjaat tai kehykset, joiden avulla voit hallita fuzz-testausta.

Fuzzing FrameworkKuvaus
CERT BFFCERT: n kehittämä BFF (Basic Fuzzing Framework), jonka tarkoituksena on löytää haavoittuvuuksia Windows-, MacOS- ja Linux-sovelluksissa.
FuzzFlowFuzzing-kehys AngularJS: ssä.
FuzzinatorRunko satunnaisille fuzz-testeille.
FuzzLabsYleiskäyttöinen fuzz-testauskehys.
myllyFuzz-testausautomaatti / kehys web-selaimien testaamiseen.
KisuPythonissa kirjoitettu fuzz-testauskehys.
ofuzzOCAML: ssä kirjoitettu fuzzing-kehys.
NodefuzzNodejsissa kirjoitettu fuzz-testauskehys web-selaimille.
PassiveFuzzFrameworkOSXFuzzer MacOS-ytimen haavoittuvuuksien testaamiseen.
Peach FuzzerFuzz-testausfoorumi, joka voi "testata lähes minkä tahansa järjestelmän tuntemattomia haavoittuvuuksia varten".
RamFuzzFuzzer, jolla testataan kohteen menetelmien yksittäisiä parametreja.
Sulley"Täysin automatisoitu ja valvomaton, puhdas Pythonin" fuzzing-kehys.
FunFuzzerMozilla on Python-fuzzing-valjaat JavaScript-moottoreille ja DOM-muokkauslaitteille.

Virhe, ohjelmointitermit, suojausehdot, ohjelmistojen testaus