Taggat med: fuzzing

Ett flertal sårbarheter uppdagade i OpenVPN

OpenVPN har utsatts för ett antal olika oberoende granskningar och jag har skrivit om några av dessa. Nu har även en person vid namn Guido Vranken fuzzat OpenVPN och identifierat en hel del bunt med säkerhetsbuggar.

För att citera Guido:

I’ve discovered 4 important security vulnerabilities in OpenVPN. Interestingly, these were not found by the two recently completed audits of OpenVPN code

Att fuzza OpenVPN var dock inte helt trivialt. Bland annat för att OpenVPN anropar externa binärer via execve samt att koden är full av ASSERT:s.

För fuzzing användes LLVM libFuzzer tillsammans med AddressSanitizer (ASAN), UndefinedBehaviorSanitizer (UBSAN) och MemorySanitizer (MSAN).

Buggarna har fått följande CVE:er: CVE-2017-7521, CVE-2017-7520, CVE-2017-7508, CVE-2017-7522.

Uppgradera till OpenVPN version 2.4.3 som innehåller säkerhetsfixar för ovan sårbarheter.

Snabbare fuzztester med taviso loadlibrary

Tavis Ormandy (taviso) på Google har släppt ett nytt verktyg som underlättar fuzztester av mjukvaror. Verktyget heter loadlibrary och gör att dynamiska bibliotek (DLL:er) från Windows kan köras på Linux.

Vid storskaliga fuzztester är det viktigt med så lite overhead som möjligt för att inte slösa resurser på onödiga saker. Därför utvecklade taviso verktyget loadlibrary för att enkelt kunna skapa små containers med Windows-DLL:er och sedan fuzza dessa DLL:er i en storskalig miljö. Google har även sedan tidigare utvecklat verktyget OSS-fuzz som just är ett ramverk för att snabbt och enkelt göra fuzzing av mjukvaror.

Fuzz-tester är en metodik för att skicka in mer eller mindre slumpmässig data på olika sätt och sedan se hur ett program beter sig. Och kan då upptäcka en mängd olika sårbarheter såsom buffer-overflows, integer underflows osv.

Taviso har med hjälp av loadlibrary identifierat en allvarlig sårbarhet i bl.a. Microsofts antivirus-motor vid namn Microsoft Malware Protection Engine, Mpengine.dll (Windows Defender).

Exempel på hur Mpengine kan köras på Linux för att genomsöka filen eicar.com efter Eicar-testvirus:

$ ./mpclient eicar.com
main(): Scanning eicar.com...
EngineScanCallback(): Scanning input
EngineScanCallback(): Threat Virus:DOS/EICAR_Test_File identified.

Till skillnad från Wine som kör hela Windows-applikationer så kör taviso-loadlibrarykod från enstaka DLL:er.

Här kan du ladda hem loadlibrary från Github:

Obligatorisk Dilbert: