Die Infrastruktur für kontinuierliches Fuzzing-Testing in OSS-Fuzz wurde um die Möglichkeit erweitert, Projekte, die in der Programmiersprache Lua geschrieben sind, zusätzlich zu den zuvor unterstützten Sprachen C/C++, Go, Swift, Rust, Python, JavaScript und Java zu testen. Die Integration erfolgt über das Projekt luzer, das spezialisierte Werkzeuge für das Fuzzing-Testing von Lua-Code und in C/C++ geschriebenen Lua-Erweiterungen entwickelt.
Das Projekt nutzt die Bibliothek libFuzzer und kann in Kombination mit den Tools AddressSanitizer, MemorySanitizer, LeakSanitizer, ThreadSanitizer und Undefined Behavior Sanitizer eingesetzt werden. Diese helfen dabei, basierend auf Problemen, die während des Fuzzing-Tests erkannt wurden, das Vorhandensein typischer Sicherheitsanfälligkeiten zu bestimmen, die durch Pufferüberläufe, ganzzahlige Überläufe, Zugriff auf nicht initialisierte und freigegebene Bereiche, Speicherlecks, Dereferenzierung von Zeigern und Probleme mit der Bereitstellung von Sperren verursacht werden. Der Code des Projekts ist unter der ISC-Lizenz verfügbar.
Während der Arbeit durchläuft luzer mögliche Kombinationen von Eingabedaten und erstellt einen Bericht über alle festgestellten Abstürze und nicht abgefangenen Ausnahmen. Zum Beispiel wurde bei der Überprüfung der MsgPack-Parserbibliothek antirez/lua-cmsgpack in luzer festgestellt, dass Daten mit einer großen Anzahl von Arrays zu einem Stack-Overflow führen können.
Im Rahmen des Projekts lunapark wird das luzer-Tool zur Testung von PUC Rio Lua, dem Trace-Compiler von LuaJIT, einer hochleistungsfähigen Datenbank und Server Tarantool-Anwendungen sowie zur Testung von Drittanbieter-Lua-Modulen eingesetzt.
Entwickler von Open-Source-Projekten können ihre Repositories zur Testung hinzufügen, indem sie eine Vorlage für das Fuzzing-Testing vorbereiten und eine spezielle Anfrage über einen Pull-Request einreichen. Bei der Entdeckung von Fehlern werden den Entwicklern automatisch Benachrichtigungen gesendet und es wird ein privates Ticket zur Behebung erstellt (um vorzeitige Informationen über Sicherheitsanfälligkeiten zu verhindern, wird das Ticket in einem System zur Fehlerverfolgung mit eingeschränktem Zugriff erstellt). OSS Fuzz verfolgt den Status der Fehlerbehebung und schließt das Ticket selbst, wenn der Fehler nicht mehr reproduzierbar ist. Informationen zu dem Problem werden sieben Tage nach der Behebung oder 90 Tage nach der Entdeckung des Fehlers öffentlich zugänglich gemacht, wenn das Problem weiterhin nicht behoben ist.
Quelle: opennet.ru
