Infrastruktura për testimin e vazhdueshëm të fuzzing-ut OSS-Fuzz është zgjeruar për të përfshirë mundësinë e testimit të projekteve të shkruara në gjuhën Lua, përveç gjuhëve të mbështetura më parë si C/C++, Go, Swift, Rust, Python, JavaScript dhe Java. Integrimi është realizuar përmes projektit luzer, që zhvillon një set të specializuar veglash për testimin e fuzzing-ut të kodit në gjuhën Lua dhe shtesave për Lua të shkruara në C/C++.
Projekti përdor bibliotekën libFuzzer dhe mund të përdoret në kombinim me veglat AddressSanitizer, MemorySanitizer, LeakSanitizer, ThreadSanitizer dhe Undefined Behavior Sanitizer, të cilat mundësojnë identifikimin e tipeve të zakonshme të vulnerabiliteteve të shkaktuara nga mbingarkesa e buffers, mbingarkesat numerike, qasja në zona të pa inicializuara dhe të lëshuara, rrjedhjet e memories, dereferenca e treguesve dhe probleme me vendosjen e bllokimeve. Kodi i projektit është i disponueshëm nën licencën ISC.
Gjatë punës së tij, luzer gjeneron kombinime të mundshme të të dhënave të hyrjes dhe krijon një raport mbi të gjithë defektet e zbuluara dhe përjashtimet e papërfshira. Për shembull, gjatë testimit në luzer të bibliotekës së analizes së formatit MsgPack antirez/lua-cmsgpack u zbulua se të dhënat me një numër të madh arrays mund të çojnë në mbingarkesën e stack-ut.
Në kuadër të projektit lunapark, vegla luzer përdoret për testimin e PUC Rio Lua, kompilatorit të gjurmimit LuaJIT, një sistemi të dhënash me performancë të lartë dhe сервера aplikacioneve Tarantool, si dhe për testimin e moduleve të jashtme Lua.
Zhvilluesit e projekteve të hapura mund të shtojnë depozitat e tyre për testim, duke përgatitur një model testimi fuzzing dhe duke dërguar një kërkesë të veçantë përmes një pull request. Kur zbulojnë defekte, zhvilluesit automatikisht marrin një njoftim dhe krijohet një kërkesë private për korrigjim (për të shmangur rrjedhjen e parakohshme të informacionit mbi vulnerabilitetet, kërkesa krijohet në sistemin e ndjekjes së gabimeve me qasje të kufizuar). OSS Fuzz ndjek statusin e korrigjimit të gabimeve dhe e mbyll vetë kërkesën, nëse ajo nuk përsëritet më. Informacioni mbi problemin bëhet publik 7 ditë pas korrigjimit ose 90 ditë nga identifikimi i problemit, nëse ai mbetet i patsaktë.
Burimi: opennet.ru
