Tutorial de testare Fuzz (Fuzzing).

โšก Rezumat inteligent

Testarea Fuzz introduce date nevalide, neaศ™teptate sau aleatorii รฎntr-un program ศ™i urmฤƒreศ™te erorile de funcศ›ionare, blocฤƒrile ศ™i erorile de memorie, expunรขnd defecte de securitate pe care testele funcศ›ionale scriptate aproape niciodatฤƒ nu le ating singure.

  • ๐Ÿ”˜ Originea: Barton Miller a inventat termenul la Universitatea din Wisconsin-Madison, iar primele rulฤƒri fuzz din 1989 au dus la blocarea a aproximativ o treime din utilitฤƒศ›ile UNIX testate.
  • โ˜‘๏ธ Bucla รฎn ศ™ase paศ™i: Identificaศ›i ศ›inta, identificaศ›i intrฤƒrile, generaศ›i date fuzzy, executaศ›i, monitorizaศ›i comportamentul, apoi รฎnregistraศ›i fiecare defect care apare.
  • โœ… Trei strategii de generaศ›ie: Fuzzerii de mutaศ›ii modificฤƒ mostrele valide, fuzzerii de generaศ›ii construiesc intrฤƒri dintr-un model, iar fuzzerii de protocol funcศ›ioneazฤƒ dintr-o specificaศ›ie.
  • ๐Ÿงช Feedback-ul despre acoperire a schimbat cรขmpul: Motoarele moderne pฤƒstreazฤƒ orice intrare care ajunge la cod nou, care gฤƒseศ™te erori mult mai profunde decรขt datele pur aleatorii.
  • ๐Ÿ› ๏ธ Sculele au evoluat: Peach Fuzzer ศ™i WebScarab sunt arhivate, รฎn timp ce AFL++, libFuzzer, OSS-Fuzz, boofuzz โ€‹โ€‹ศ™i OWASP ZAP sunt opศ›iunile รฎntreศ›inute.
  • โš™๏ธ Limite cunoscute: Fuzzing-ul gฤƒseศ™te erori, nu defecte logice, aศ™a cฤƒ completeazฤƒ, nu รฎnlocuieศ™te, revizuirea codului ศ™i testarea de penetrare.

Tutorial de testare Fuzz (Fuzzing).

Ce este Fuzz Testing?

Testarea Fuzz sau Fuzzing este o tehnicฤƒ de testare software care constฤƒ รฎn introducerea de date nevalide sau aleatorii, numitฤƒ FUZZ, รฎntr-un sistem software pentru a descoperi erori de codare ศ™i lacune de securitate. Scopul testฤƒrii fuzz este de a introduce date folosind tehnici automate sau semi-automate ศ™i de a testa sistemul pentru diverse excepศ›ii, cum ar fi blocarea sistemului sau defecศ›iunea codului รฎncorporat.

Testarea fuzz a fost dezvoltatฤƒ iniศ›ial de Barton Miller la Universitatea din Wisconsin-Madison, care a inventat termenul dupฤƒ ce zgomotul de linie de pe o legฤƒturฤƒ de modem a dus la blocarea programelor pe care le folosea. Studenศ›ii sฤƒi au rulat primele fuzzere รฎn 1989 ศ™i au descoperit cฤƒ aproximativ o treime din utilitarele UNIX pe care le-au vizat s-au blocat sau s-au blocat. Testarea fuzz este o testare software tehnicฤƒ ศ™i este un tip de Testarea securitฤƒศ›ii.

Diagrama de mai jos prezintฤƒ bucla de fuzzing de bazฤƒ, รฎn care datele generate sunt trimise cฤƒtre aplicaศ›ia testatฤƒ, iar rฤƒspunsul este observat.

Flux de lucru pentru testarea fuzz: un fuzzer genereazฤƒ date de intrare incorecte ศ™i le transmite aplicaศ›iei testate

De ce sฤƒ faci Fuzz Testing?

Fuzzing-ul รฎศ™i cรขศ™tigฤƒ locul รฎntr-un plan de testare deoarece exploreazฤƒ input-urile pentru care nimeni nu s-a gรขndit sฤƒ scrie un caz de testare. Principalele motive pentru care echipele รฎl adoptฤƒ sunt enumerate mai jos.

  • Testarea fuzz gฤƒseศ™te de obicei cele mai grave erori ศ™i defecte de securitate, deoarece o eroare este o dovadฤƒ directฤƒ a unei cฤƒi de intrare netratate.
  • Testarea fuzz oferฤƒ rezultate mai eficiente atunci cรขnd este utilizatฤƒ cu Negru Box Testarea, testarea beta ศ™i alte metode de depanare.
  • Testarea fuzz este utilizatฤƒ pentru a verifica vulnerabilitatea software-ului ศ™i este o tehnicฤƒ de testare foarte rentabilฤƒ, deoarece datele de intrare sunt generate mai degrabฤƒ decรขt scrise de mรขnฤƒ.
  • Testarea fuzz este una dintre tehnicile de testare de tip โ€žcutie neagrฤƒโ€. Fuzzing-ul este, de asemenea, una dintre cele mai comune metode folosite de hackeri pentru a gฤƒsi o vulnerabilitate รฎntr-un sistem, aศ™a cฤƒ rularea ei mai รฎntรขi eliminฤƒ cea mai uศ™oarฤƒ rutฤƒ de intrare pentru un atacator.

Tipuri de testare Fuzz

Fuzzerii sunt de obicei grupaศ›i รฎn funcศ›ie de cรขt ศ™tiu despre programul pe care รฎl atacฤƒ. Cu cรขt fuzzerul ศ™tie mai multe, cu atรขt poate aprofunda codul.

Tip Ce ศ™tie fuzzerul Utilizare tipicฤƒ
Cutia neagrฤƒ fuzzing Nimic despre componentele interne; vede doar intrฤƒri ศ™i ieศ™iri. Fumul rapid ruleazฤƒ รฎmpotriva unui binar sau a unui endpoint live.
Cutie albฤƒ care se estompeazฤƒ Cod sursฤƒ complet, adesea combinat cu execuศ›ie simbolicฤƒ pentru a rezolva ramificaศ›iile greu accesibile. Analiza aprofundatฤƒ a unei componente a cฤƒrei sursฤƒ este disponibilฤƒ.
Cutia gri fuzzing Fฤƒrฤƒ revizuire a sursei, dar cu feedback la momentul execuศ›iei, cum ar fi ramificaศ›iile de cod la care a ajuns o intrare. Implicit pentru motoarele moderne precum AFL++ ศ™i libFuzzer.

O a doua divizare, mai veche, separฤƒ prostii de la fuzzing inteligentUn parser neinteligent schimbฤƒ biศ›ii fฤƒrฤƒ sฤƒ ศ™tie ce format de intrare are, aศ™a cฤƒ majoritatea datelor sale sunt respinse de primul parser pe care รฎl รฎntรขlneศ™te. Un parser inteligent รฎnศ›elege sumele de control, cรขmpurile de lungime ศ™i structura mesajelor, astfel รฎncรขt intrฤƒrile sale supravieศ›uiesc validฤƒrii ศ™i ajung la logica de bazฤƒ. Fuzzing ghidat de acoperire este rafinamentul de tip โ€žcutie griโ€ care a fฤƒcut ca fuzzing-ul sฤƒ devinฤƒ mainstream: motorul instrumenteazฤƒ codul binar, pฤƒstreazฤƒ orice intrare care ajunge la o nouฤƒ ramurฤƒ ศ™i modificฤƒ supravieศ›uitorii, astfel รฎncรขt corpusul evolueazฤƒ constant cฤƒtre cod neexplorat รฎn loc sฤƒ reporneascฤƒ de la un zgomot aleatoriu.

Cum se face Fuzz Testing

Paศ™ii pentru testarea fuzz includ paศ™ii de bazฤƒ ai testฤƒrii:

Pasul 1) Identificaศ›i sistemul ศ›intฤƒ โ€” alegeศ›i fiศ™ierul binar, biblioteca, serviciul sau endpoint-ul protocolului care va fi atacat ศ™i confirmaศ›i cฤƒ aveศ›i permisiunea de a-l testa.

Pasul 2) Identificaศ›i intrฤƒrile โ€” listeazฤƒ fiecare punct de intrare din care citeศ™te ศ›inta: fiศ™iere, argumente din linia de comandฤƒ, variabile de mediu, pachete de reศ›ea, cรขmpuri de formular ศ™i sarcini utile API.

Pasul 3) Generaศ›i date Fuzzed โ€” produc intrฤƒri malformate prin mutarea eศ™antioanelor valide, prin generarea lor dintr-un model al formatului sau prin combinarea ambelor.

Pasul 4) Executaศ›i testul folosind date fuzzy โ€” ruleazฤƒ ศ›inta รฎn funcศ›ie de intrฤƒrile generate, ideal รฎntr-o buclฤƒ care reporneศ™te procesul automat dupฤƒ fiecare eศ™ec.

Pasul 5) Monitorizaศ›i comportamentul sistemului โ€” fiศ›i atenศ›i la erori, blocฤƒri, erori de aserศ›ionฤƒri, utilizare excesivฤƒ a memoriei ศ™i rapoarte de dezinfectare, รฎn loc sฤƒ verificaศ›i doar rezultatul tipฤƒrit.

Pasul 6) รŽnregistraศ›i defectele โ€” salvaศ›i intrarea exactฤƒ care a declanศ™at fiecare eศ™ec, micศ™oraศ›i-o la cel mai mic caz reproductiv ศ™i arhivaศ›i-o รฎn stivฤƒ trace ataศ™at.

Exemple de Fuzzers

Fuzzerii sunt clasificaศ›i ศ™i รฎn funcศ›ie de modul รฎn care รฎศ™i construiesc inputul, iar cele trei abordฤƒri de mai jos sunt cele pe care le veศ›i รฎntรขlni cel mai des.

  • Fuzzers bazate pe mutaศ›ii modificaศ›i mostrele de date existente pentru a crea noi date de test. Aceasta este o abordare foarte simplฤƒ ศ™i directฤƒ: รฎncepe cu mostre valide ale unui protocol ศ™i continuฤƒ sฤƒ modifice fiecare octet sau fiศ™ier.
  • Fuzzere bazate pe generaศ›ii definesc date noi pe baza datelor de intrare ale modelului. รŽncep sฤƒ genereze date de intrare de la zero pe baza specificaศ›iei.
  • Fuzzeri bazaศ›i pe protocol depind de cunoศ™tinศ›e detaliate despre formatul protocolului testat, iar aceastฤƒ รฎnศ›elegere provine din specificaศ›ie. Aceasta implicฤƒ scrierea unei matrice a specificaศ›iei รฎn instrument, apoi utilizarea unei tehnici de generare de teste bazate pe model pentru a parcurge specificaศ›ia ศ™i a adฤƒuga nereguli รฎn conศ›inutul datelor, secvenศ›ฤƒ ศ™i aศ™a mai departe. Aceasta este cunoscutฤƒ ศ™i sub denumirea de testare sintacticฤƒ, testare gramaticalฤƒ sau testare a robusteศ›ii. Un fuzzer poate genera cazuri de testare dintr-unul existent sau poate utiliza intrฤƒri valide sau nevalide.

Existฤƒ douฤƒ limitฤƒri ale fuzzing-ului bazat pe protocol:

  1. Testarea nu poate continua pรขnฤƒ cรขnd specificaศ›ia este maturฤƒ.
  2. Multe protocoale utile sunt o extensie a protocoalelor publicate. Dacฤƒ testarea fuzz se bazeazฤƒ pe specificaศ›iile publicate, Testaศ›i acoperirea pentru noile protocoale vor fi limitate.

Cea mai simplฤƒ formฤƒ de tehnicฤƒ de fuzzing este trimiterea de date de intrare aleatorii cฤƒtre software, fie sub formฤƒ de pachete de protocol, fie ca eveniment. Aceastฤƒ tehnicฤƒ de transmitere a unor date de intrare aleatorii este foarte puternicฤƒ pentru gฤƒsirea erorilor รฎn multe aplicaศ›ii ศ™i servicii. Sunt disponibile ศ™i alte tehnici, care sunt foarte uศ™or de implementat. Pentru a implementa aceste tehnici, trebuie doar sฤƒ modificฤƒm intrฤƒrile existente ศ™i putem modifica o intrare pur ศ™i simplu prin interschimbarea biศ›ilor acesteia.

Tipuri de erori detectate de Fuzz Testing

Deoarece fuzzingul judecฤƒ o rulare dupฤƒ cum se comportฤƒ programul ศ™i nu dupฤƒ o valoare aศ™teptatฤƒ, defectele pe care le scoate la ivealฤƒ se grupeazฤƒ รฎn trei familii.

  • Eศ™ecuri de afirmare ศ™i scurgeri de memorie: Aceastฤƒ metodologie este utilizatฤƒ pe scarฤƒ largฤƒ pentru aplicaศ›ii mari รฎn care erorile afecteazฤƒ siguranศ›a memoriei, ceea ce reprezintฤƒ o vulnerabilitate severฤƒ. Buffer Aici apar depฤƒศ™irile de capacitate, citirile de tip โ€žuse-after-freeโ€ ศ™i citirile out-of-bounds.
  • Intrare nevalidฤƒ: รŽn testarea fuzz, fuzzerii sunt folosiศ›i pentru a genera date de intrare nevalide, care sunt folosite pentru testarea rutinelor de gestionare a erorilor, iar acest lucru este important pentru software-ul care nu รฎศ™i controleazฤƒ datele de intrare. Fuzzing-ul simplu poate fi vฤƒzut ca o modalitate de a automatiza testare negativฤƒ.
  • Erori de corectitudine: Fuzzing-ul poate fi folosit ศ™i pentru a detecta anumite tipuri de erori de โ€žcorectitudineโ€, cum ar fi o bazฤƒ de date coruptฤƒ sau rezultate de cฤƒutare slabe. Fuzzing-ul diferenศ›ial, care furnizeazฤƒ aceeaศ™i intrare cฤƒtre douฤƒ implementฤƒri ศ™i comparฤƒ rฤƒspunsurile, este modalitatea obiศ™nuitฤƒ de a le detecta.

Instrumente de testare Fuzz

Instrumentele utilizate รฎn securitatea web pot fi utilizate pe scarฤƒ largฤƒ รฎn testarea fuzz, cum ar fi Burp Suite ศ™i Peach Fuzzer. Mai multe dintre numele clasice de mai jos sunt acum arhivate, aศ™a cฤƒ statutul lor actual este menศ›ionat lรขngฤƒ fiecare intrare.

  • Fuzzer cu piersiciPeach Fuzzer oferฤƒ o acoperire de securitate mai robustฤƒ decรขt un scaner. Alte instrumente de testare pot cฤƒuta doar ameninศ›ฤƒri cunoscute, รฎn timp ce Peach Fuzzer permite utilizatorilor sฤƒ gฤƒseascฤƒ ameninศ›ฤƒri cunoscute ศ™i necunoscute. Peach Tech a fost achiziศ›ionatฤƒ de GitLab, iar Community Edition v3 nu mai este รฎntreศ›inutฤƒ; succesorul รฎntreศ›inut este Ediศ›ia Comunitarฤƒ GitLab Protocol Fuzzer.
  • Spike Proxy: un instrument de nivel profesional care cautฤƒ vulnerabilitฤƒศ›i la nivel de aplicaศ›ie รฎn aplicaศ›iile web. SPIKE Proxy acoperฤƒ elementele de bazฤƒ, cum ar fi SQL Injecศ›ie ศ™i scripting cross-site, pe o reศ›ea complet deschisฤƒ Python infrastructurฤƒ ศ™i era disponibilฤƒ pentru Linux ศ™i WindowsNu a fost รฎntreศ›inut de mulศ›i ani ศ™i este inclus aici din motive istorice.
  • WebScarabWebScarab este scris รฎn Java ศ™i, prin urmare, este portabil pe multe platforme. Framework-ul WebScarab comunicฤƒ folosind protocoalele HTTP ศ™i HTTPS ศ™i funcศ›ioneazฤƒ ca un proxy de interceptare: permite operatorului sฤƒ revizuiascฤƒ ศ™i sฤƒ modifice cererile create de browser รฎnainte ca serverul sฤƒ le primeascฤƒ ศ™i sฤƒ revizuiascฤƒ ศ™i sฤƒ actualizeze rฤƒspunsurile generate de server รฎnainte ca browserul sฤƒ le primeascฤƒ. Orice breศ™ฤƒ pe care o gฤƒseศ™te WebScarab este adฤƒugatฤƒ la lista sa de probleme raportate. Depozitul a fost arhivat รฎn aprilie 2024 ศ™i este acum doar pentru citire.
  • OWASP WSFuzzerWSFuzzer este un program licenศ›iat GPL, scris รฎn Python care viza serviciile web ศ™i, รฎn ultima sa versiune, bazat pe HTTP Servicii SOAP au fost ศ›inta principalฤƒ. A fost livrat ca parte a WebScarab ศ™i a fost retras odatฤƒ cu acesta; OWASP ZAP ศ™i add-on-ul sฤƒu Fuzzer sunt รฎnlocuitorul recomandat.
  • Alternative menศ›inute: AFL++ ศ™i libFuzzer sunt motoarele standard ghidate de acoperire pentru codul nativ, OSS-Fuzz le ruleazฤƒ continuu ศ™i gratuit pentru proiecte open-source ศ™i boofuzz acoperฤƒ fuzzing-ul protocolului de reศ›ea รฎn PythonO listฤƒ mai amplฤƒ este inclusฤƒ รฎn ghidul pentru instrumente de testare a securitฤƒศ›ii.

Cele mai bune practici de testare fuzz

Un fuzzer รฎndreptat spre o ศ›intฤƒ ศ™i lฤƒsat รฎn pace rareori gฤƒseศ™te prea multe. Practicile de mai jos diferenศ›iazฤƒ o campanie care produce defecte รฎnregistrate de una care doar consumฤƒ timp CPU.

  • รŽncepeศ›i de la un corpus de seminศ›e bun. Colecteazฤƒ intrฤƒri reale, valide, pe care aplicaศ›ia le acceptฤƒ deja. Mutarea unui fiศ™ier autentic ajunge la codul de parsare mult mai repede decรขt mutarea unor octeศ›i aleatori.
  • Scrieศ›i un ham mic ศ™i rapid. Punctul de intrare ar trebui sฤƒ facฤƒ un singur lucru per rulare, sฤƒ evite apelurile de reศ›ea ศ™i scrierile pe disc ศ™i sฤƒ se รฎntoarcฤƒ rapid, deoarece debitul se mฤƒsoarฤƒ รฎn execuศ›ii pe secundฤƒ.
  • Porniศ›i dezinfectantele. Corupศ›ia silenศ›ioasฤƒ a memoriei adesea nu duce la blocฤƒri. AddressSanitizer ศ™i UndefinedBehaviorSanitizer o transformฤƒ รฎntr-o eroare imediatฤƒ, diagnosticabilฤƒ.
  • Aleargฤƒ mult timp ศ™i aleargฤƒ continuu. O rulare de una sau douฤƒ ore identificฤƒ erorile superficiale; cฤƒile profunde necesitฤƒ de obicei multe ore, motiv pentru care fuzzing-ul ar trebui sฤƒ fie inclus รฎntr-o sesiune CI nocturnฤƒ, mai degrabฤƒ decรขt รฎntr-o sesiune manualฤƒ.
  • Minimizeazฤƒ ศ™i deduplicฤƒ fiecare eroare. Reduce intrarea eศ™uatฤƒ la cea mai micฤƒ formฤƒ ศ™i grupeazฤƒ erorile dupฤƒ stivฤƒ trace, altfel o eroare ajunge cรขt sute de bilete.
  • Pฤƒstraศ›i un corpus de regresie. Adฤƒugaศ›i fiecare intrare de reproducere la un set permanent care ruleazฤƒ la fiecare compilare, astfel รฎncรขt un defect remediat sฤƒ nu poatฤƒ reveni รฎn mod discret.
  • Delimiteazฤƒ ศ›inta din punct de vedere legal. Defectarea unui serviciu terศ› activ fฤƒrฤƒ permisiune scrisฤƒ este imposibil de distins de un atac.

Avantajele testฤƒrii Fuzz

Folositฤƒ cu aศ™teptฤƒri realiste, fuzzing-ul adaugฤƒ o valoare pe care alte tehnici se chinuie sฤƒ o egaleze.

  • Testarea fuzz รฎmbunฤƒtฤƒศ›eศ™te testarea securitฤƒศ›ii software-ului.
  • Erorile gฤƒsite รฎn fuzzing sunt uneori severe ศ™i sunt adesea aceleaศ™i cu cele folosite de atacatori, inclusiv blocฤƒri, scurgeri de memorie ศ™i excepศ›ii netratate.
  • Dacฤƒ testerii nu observฤƒ erori din cauza limitฤƒrilor de timp ศ™i resurse, acele erori se gฤƒsesc ศ™i รฎn testarea fuzz.
  • Intrฤƒrile sunt generate de o maศ™inฤƒ, astfel รฎncรขt acoperirea continuฤƒ sฤƒ creascฤƒ peste noapte, fฤƒrฤƒ efort manual suplimentar.

Dezavantajele testฤƒrii Fuzz

Aceleaศ™i proprietฤƒศ›i care fac fuzzing-ul ieftin limiteazฤƒ ศ™i ceea ce poate dovedi.

  • Testarea fuzz singurฤƒ nu poate oferi o imagine completฤƒ a unei ameninศ›ฤƒri generale de securitate sau a unui set de erori.
  • Testarea fuzz este mai puศ›in eficientฤƒ รฎn gestionarea ameninศ›ฤƒrilor de securitate care nu provoacฤƒ blocฤƒri ale programelor, cum ar fi unii viruศ™i, viermi ศ™i troieni.
  • Testarea fuzz poate detecta doar erori sau ameninศ›ฤƒri relativ simple ศ™i nu va raศ›iona despre logica de afaceri.
  • Pentru a funcศ›iona eficient, necesitฤƒ un timp semnificativ de lucru cu maศ™ina.
  • Stabilirea unei condiศ›ii de valoare limitฤƒ cu intrฤƒri aleatorii este foarte problematicฤƒ, deศ™i testerii rezolvฤƒ acum o mare parte din aceasta cu algoritmi determiniศ™ti conduศ™i de intrฤƒrile utilizatorului.

Testarea Fuzz vs. Testarea Penetraศ›iei

Ambele activitฤƒศ›i cautฤƒ defecte de securitate, รฎnsฤƒ rฤƒspund la รฎntrebฤƒri diferite ศ™i sunt rareori interschimbabile.

Criterii Testarea Fuzz Testarea penetrฤƒrii
Condus de Un motor automat care genereazฤƒ date de intrare incorecte Un tester priceput raศ›ioneazฤƒ despre sistem
Cautฤƒ Blocฤƒri, blocฤƒri ศ™i erori de siguranศ›ฤƒ a memoriei Puncte slabe exploatabile, inclusiv defecte logice ศ™i de configurare
Adรขncime Acoperire foarte largฤƒ a datelor de intrare, raศ›ionament superficial Acoperire restrรขnsฤƒ, raศ›ionament profund
producศ›ie Reproducerea intrฤƒrilor ศ™i a stivei traces Un raport de constatฤƒri cu cฤƒi de exploatare ศ™i evaluฤƒri ale riscurilor
Cel mai bun moment Continuu, รฎn procesul de construire Periodic, รฎmpotriva unui candidat la lansare

รŽn practicฤƒ, cele douฤƒ se alimenteazฤƒ reciproc: fuzzing-ul eliminฤƒ erorile ieftine ศ™i automatizabile, astfel รฎncรขt orele limitate ale unui tester sunt dedicate defectelor pe care doar un om le poate observa.

รŽntrebฤƒri frecvente

Un corpus de bazฤƒ este setul iniศ›ial de intrฤƒri valide pe care fuzzerul le mutฤƒ. Fiศ™ierele mici, variate ศ™i reale funcศ›ioneazฤƒ cel mai bine, deoarece fiecare trece deja de parser ศ™i permite motorului sฤƒ รฎศ™i cheltuiascฤƒ bugetul pe cod mai complex รฎn loc de prima verificare a validitฤƒศ›ii.

Un sistem fuzz harness este o funcศ›ie de mici dimensiuni care predฤƒ un buffer de octeศ›i fuzz codului testat. Ar trebui sฤƒ evite starea globalฤƒ, scrierile รฎn fiศ™iere ศ™i apelurile de reศ›ea, astfel รฎncรขt motorul sฤƒ รฎl poatฤƒ rula de mii de ori pe secundฤƒ.

O orฤƒ sau douฤƒ expun erori superficiale. Campaniile serioase se desfฤƒศ™oarฤƒ timp de mai multe ore sau zile, deoarece acoperirea nouฤƒ soseศ™te รฎn rafale. Un platou pe curba de acoperire, nu o citire a ceasului, este semnalul sincer cฤƒ o serie de campanii a รฎncetat sฤƒ dea roade.

AddressSanitizer detecteazฤƒ depฤƒศ™irile de buffer ศ™i use-after-free, UndefinedBehaviorSanitizer detecteazฤƒ abuzurile de numere รฎntregi ศ™i pointeri, iar MemorySanitizer detecteazฤƒ citirile de memorie neiniศ›ializatฤƒ. Fฤƒrฤƒ acestea, multe corupศ›ii trec รฎn tฤƒcere, iar fuzzerul nu raporteazฤƒ nicio eroare.

Reproduce-l, minimizeazฤƒ intrarea la cel mai mic caz de eroare, grupeazฤƒ-l cu accidentele care au aceeaศ™i stivฤƒ trace, apoi depuneศ›i un tichet prin intermediul metodei obiศ™nuite procesul de management al defectelor ศ™i adฤƒugaศ›i datele de intrare รฎntr-un corpus de regresie.

Au รฎn comun aleatoriu, dar nu ศ™i intenศ›ie. Testarea maimuศ›elor lanseazฤƒ acศ›iuni arbitrare ale utilizatorului asupra unei interfeศ›e care ruleazฤƒ, รฎn timp ce fuzzing-ul vizeazฤƒ un parser de intrare specific ศ™i mฤƒsoarฤƒ acoperirea codului, astfel รฎncรขt sฤƒ se poatฤƒ direcศ›iona cฤƒtre codul pe care intrฤƒrile anterioare nu l-au atins niciodatฤƒ.

Modelele lingvistice sunt utilizate pentru a elabora scheme de conectare pentru API-uri nedefinite, pentru a sintetiza intrฤƒri iniศ›iale pentru formate exotice ศ™i pentru a grupa ศ™i rezuma rapoartele de eroare. Motorul furnizeazฤƒ รฎn continuare feedback de acoperire; modelul eliminฤƒ รฎn principal munca de configurare manualฤƒ.

Copilotul GitHub poate crea un punct de intrare libFuzzer, un fiศ™ier de compilare ศ™i un generator de seminศ›e dintr-o semnฤƒturฤƒ API existentฤƒ. RevPriviศ›i rezultatul cu atenศ›ie, deoarece un ham care รฎnghite รฎn liniศ™te erorile nu va raporta erori.

Rezumaศ›i aceastฤƒ postare cu: