Google esitles uut avatud projekti Vanir, mis arendab staatilist analüüsijat automaatseks tuvastamiseks mitte rakendatud koodipatch'ide osas, mis kõrvaldab haavatavused. Vanir kasutab allkirjade andmebaasi, mis sisaldab teavet tuntud haavatavuste ja patch'ide kohta nende kõrvaldamiseks. Sellist andmebaasi haldab Google alates juulist 2020 ja see katab 95% haavatavustest Androidi platvormiga seotud projektides, sealhulgas Linuxi kernelis. Praegu toetatakse allika koodi kontrollimist keeltes C, C++ ja Java. Vaniri kood on kirjutatud keeltes C++ ja Python ning levitatakse BSD litsentsi alusel.
Projekt koosneb kahest osast — allkirja generaatorist ja puudu olevate patch'ide detektorist. Generaator loob allkirja, et tuvastada paranduse puudumist haavatavuse kirjelduse põhjal OSV formaadis ja lingiga patch'ile või commit'ile, mis kõrvaldab haavatavuse. Praeguses vormis toetatakse commit'ide töötlemist googlesource.com ja git.codelinaro.org hoidlates, kuid toetust teiste teenuste jaoks saab hõlpsasti lisada, ühendades töötleja koodi väljavõtmiseks.
Detektor analüüsib koodi määratud hoidlates ja määrab, et selles ei ole parandusi, mis on kirjeldatud antud allkirjades. Teostus põhineb automaatsete allkirjade täpsustamise ja mitme mustri analüüsi algoritmidel, mis on esitatud uurimisprojektides ReDeBug ja VUDDY. Kaasaegsel arvutil 16-kerge CPU-ga kestab Androidi lähtekoodipuu skaneerimine OSV andmebaasi järgi, kus on üle 2000 haavatavuse, 10-20 minutit. Väljundiks on aruanne potentsiaalsetest mittetöödeldud haavatavustest koos seotud koodipositsioonide, CVE-identifikaatorite ja patch'idega. Vaniri kahe aasta kasutamise statistika kohaselt Google'is on valehäirete määr 2.72%.


Pakutud tööriista eelised:
- Võime tuvastada mittetöödeldud haavatavusi kolmandate osapoolte harudest, modifikatsioonidest ja koodi laenudest, mis ei ole otseselt seotud põhiprojektiga. Androidi kontekstis saab tööriista kasutada, et kontrollida patch'ide rakendamist Androidi platvormi variatsioonides, mida arendavad OEM-seadmeloojad.
- Kontrollimise teostamine ainult olemasoleva koodi analüüsi põhjal, ilma seotud metainformatsioonita, näiteks versiooninumbri, commitide ajaloo ja SBOM (Software Bill Of Materials).
- Automaatsete signatuuride genereerimise toetamine, kasutades avalikes allikates esinevat teavet haavatavuste kohta ja avaldatud saatjate plekke.
- Statiline koodi analüüsi kontrollimise kõrgem jõudlus võrreldes dünaamiliste analüüsi tööriistade ja binaarsed kogudega.
- Iseseisvus - võimalus oma süsteemides infrastruktuuri juurutamiseks ilma väliste teenuste kaasamiseta.
- Valmis aktuaalne signatuuride baas, mida toetab Google Androidi turvameeskond.
- Tugiteenused pideva integreerimise ja tarnimise (CI/CD) süsteemidega. Võimalus integreeruda teistesse projektidesse, kasutades Vaniri Python raamatukogude vormis.
- Süsteemi kohandamise võimalus ülesannete jaoks, mis ei ole seotud haavatavustega, näiteks koodi kloonimise või litsentseeritud koodi kasutamise tuvastamiseks teistes projektides.
Allikas: opennet.ru
