Google har præsenteret et nyt åbent projekt, Vanir, der udvikler en statisk analyser for automatisk at identificere ubrugte patches, der fjerner sårbarheder. Vanir bruger en signaturdatabase med information om kendte sårbarheder og patches til at afhjælpe disse sårbarheder. En sådan database er blevet opretholdt af Google siden juli 2020 og dækker 95% af sårbarhederne i projekter relateret til Android-platformen, inklusive Linux-kernen. I øjeblikket understøttes kodeskanning for sprog som C, C++ og Java. Vanirs kode er skrevet i C++ og Python, og det distribueres under BSD-licensen.
Projektet består af to dele - signaturgeneratoren og detektor for savnede patches. Generatoren opretter en signatur til identifikation af manglende rettelser baseret på beskrivelsen af sårbarheden i OSV-format og et link til patchen eller commit'en, der fjerner sårbarheden. I sin nuværende form understøttes behandling af commits i repositories som googlesource.com og git.codelinaro.org, men understøttelse af andre tjenester kan nemt tilføjes ved at tilslutte en handler til kodeudtrækning.
Detektoren analyserer koden i det angivne repository og bestemmer, om der mangler rettelser, der er beskrevet i de leverede signaturer. Implementeringen er baseret på algoritmer til automatisk forfining af signaturer og analyse af flere mønstre, som foreslået i forskningsprojekterne ReDeBug og VUDDY. På en moderne PC med 16-kernet CPU tager scanning af kildekodetræet for Android-platformen mod OSV-database med information om over 2000 sårbarheder 10-20 minutter. Som resultat genereres en rapport med en liste over potentielt urettet sårbarheder og links til de relaterede kodelinjer, CVE-identifikatorer og patches. Ifølge statistikken indsamlet over to års brug af Vanir i Google er niveauet for falske positiver 2,72%.


Fordele ved det foreslåede værktøj:
- Muligheden for at identificere urettede sårbarheder i tredjepartsgafler, modifikationer og kodeoverførsler, der ikke er direkte relateret til hovedprojektet. I konteksten af Android kan værktøjet bruges til at kontrollere anvendelsen af rettelser i varianter af Android-platformen, der er udviklet af OEM-enhedsproducenter.
- Kontrol udføres kun baseret på analysen af den eksisterende kode, uden at knytte den til metadata som versionsnummer, commit-historik og SBOM (Software Bill Of Materials).
- Understøttelse af automatisk generering af signaturer ved hjælp af oplysninger om sårbarheder, der fremgår af offentlige kilder, og opdaterede patches offentliggjort af de relevante udviklere.
- Højere præstation ved kontrol baseret på statisk analyse af kildekoden sammenlignet med værktøjer til dynamisk analyse og kontrol af binære builds.
- Selvtilstrækkelighed - muligheden for at implementere infrastrukturer på egne systemer uden at skulle henvende sig til eksterne tjenester.
- Tilgængeligheden af en klar og opdateret signaturdatabase, understøttet af Google Android Security Team.
- Understøttelse af tilslutning til kontinuerlige integrations- og leveringssystemer (CI/CD). Mulighed for integration i andre projekter ved hjælp af Vanir som biblioteker på Python.
- Mulighed for at tilpasse systemet til opgaver, der ikke er relateret til sårbarheder, for eksempel til at identificere kodekloning eller brugen af licenseret kode i andre projekter.
Kilde: opennet.ru
