Společnost Google představila nový otevřený projekt Vanir, který vyvíjí statický analyzátor pro automatické odhalování nepoužitých oprav kódu, které odstraňují zranitelnosti. Vanir používá databázi podpisů s informacemi o známých zranitelnostech a opravách k odstranění těchto zranitelností. Podobná databáze je udržována Googlem od července 2020 a pokrývá 95 % zranitelností v projektech souvisejících s platformou Android, včetně jádra Linux. V současnosti je podporováno ověřování zdrojového kódu v jazycích C, C++ a Java. Kód Vanir je napsán v jazycích C++ a Python a je šířen pod licencí BSD.
Projekt se skládá ze dvou částí — generátoru podpisů a detektoru chybějících oprav. Generátor vytváří podpis pro identifikaci absence opravy na základě popisu zranitelnosti ve formátu OSV a odkazu na opravu nebo commit, který zranitelnost odstraňuje. V aktuální podobě je podporováno zpracování commitů v repositorích googlesource.com a git.codelinaro.org, ale podpora dalších služeb může být snadno přidána prostřednictvím připojení zpracovatele pro extrakci kódu.
Detektor provádí analýzu kódu v uvedeném repozitáři a určuje absenci v něm oprav, jak je popsáno v poskytnutých podpisech. Implementace je založena na algoritmech automatické jemné úpravy podpisů a analýzy vícešablon, které byly navrženy v výzkumných projektech ReDeBug a VUDDY. Na moderním PC se 16-jádrovým CPU skenování stromu zdrojových textů platformy Android podle databáze OSV s informacemi o více než 2000 zranitelnostech trvá 10-20 minut. Na konci je vytvořena zpráva se seznamem potenciálně neopravovaných zranitelností a odkazy na související pozice v kódu, CVE identifikátory a opravy. Podle statistik shromážděných během dvou let používání Vanir v Googlu je míra falešných poplachů 2,72 %.


Výhody navrhovaného nástroje:
- Možnost odhalení neopravovaných zranitelností ve třetích větvích, modifikacích a výpůjčkách kódu, které nejsou přímo spojeny s hlavním projektem. V kontextu Android může být nástroj použit k ověřování aplikace oprav v variantách platformy Android vyvíjených výrobci OEM zařízení.
- Provádění kontroly pouze na základě analýzy stávajícího kódu, bez vazby na metadata, jako je číslo verze, historie commitů a SBOM (Seznam komponent softwaru).
- Podpora automatického generování podpisů pomocí informací o zranitelnostech, které se objevují ve veřejných zdrojích, a publikovaných oprav.
- Vyšší výkon kontroly na základě statické analýzy zdrojového kódu ve srovnání s nástroji pro dynamickou analýzu a kontrolu binárních sestavení.
- Samostatnost — možnost nasadit infrastrukturu na svých systémech bez obracení se na externí služby.
- Existence aktuální databáze podpisů, kterou spravuje tým Google Android Security Team.
- Podpora připojení k systémům pro kontinuální integraci a doručování (CI/CD). Možnost integrace do dalších projektů s použitím Vanir ve formě knihoven v jazyce Python.
- Možnost přizpůsobit systém pro úkoly nesouvisející se zranitelnostmi, například pro odhalování klonování kódu nebo použití licencovaného kódu v jiných projektech.
Zdroj: opennet.ru
