Infrastructura pentru testarea continuă OSS-Fuzz a primit capacitatea de a testa proiecte scrise în limbajul Lua, pe lângă limbajele anterior acceptate C/C++, Go, Swift, Rust, Python, JavaScript și Java. Integrarea a fost realizată prin proiectul luzer, care dezvoltă un instrumentar specializat pentru testarea prin fuzzing a codului scris în Lua și extensii pentru Lua scrise în C/C++.
Proiectul utilizează biblioteca libFuzzer și poate fi folosit împreună cu instrumentele AddressSanitizer, MemorySanitizer, LeakSanitizer, ThreadSanitizer și Undefined Behavior Sanitizer, care permit, pe baza problemelor identificate în procesul de testare prin fuzzing, să determine existența vulnerabilităților tipice cauzate de suprascrierea buffer-ului, suprascrierea întreagă, accesul la zone neinițializate și eliberate, scurgerile de memorie, dereferințele pointerilor și problemele de blocare. Codul proiectului este disponibil sub licența ISC.
În timpul funcționării, luzer testează combinațiile posibile de date de intrare și generează un raport cu toate erorile detectate și excepțiile nereacționate. De exemplu, în timpul verificării în luzer a bibliotecii de parsare a formatului MsgPack antirez/lua-cmsgpack, s-a constatat că datele cu un număr mare de array-uri pot provoca o suprascriere a stivei.
În cadrul proiectului lunapark, instrumentarul luzer este folosit pentru testarea PUC Rio Lua, compilatorului LuaJIT care urmărește, sistemelor de baze de date de înaltă performanță și server aplicațiilor Tarantool, precum și pentru testarea modulelor Lua terțe.
Dezvoltatorii proiectelor open-source pot adăuga propriile lor repozitorii pentru testare, pregătind un șablon de testare prin fuzzing și trimițând o solicitare specială printr-un pull request. Atunci când sunt descoperite erori, dezvoltatorii primesc automat o notificare și se creează o solicitare privată de corectare (pentru a evita scurgerile premature de informații despre vulnerabilități, tichetul este creat în sistemul de urmărire a erorilor cu acces restricționat). OSS Fuzz urmărește starea corectării erorii și închide automat tichetul, dacă acesta a încetat să mai fie reproducibil. Informația despre problemă devine publică după 7 zile de la corectare sau după 90 de zile de la identificarea erorii, dacă problema rămâne neegalată.
Sursa: opennet.ro
