Compania Google a lansat un nou proiect open-source, Vanir, care dezvoltă un analizator static pentru identificarea automată a patch-urilor neaplicate în cod, care elimină vulnerabilitățile. Vanir utilizează o bază de semnături cu informații despre vulnerabilitățile cunoscute și patch-urile care le remediază. Această bază de date este administrată de Google din iulie 2020 și acoperă 95% din vulnerabilitățile proiectelor legate de platforma Android, inclusiv nucleul Linux. În prezent, se suportă verificarea codului sursă în limbajele C, C++ și Java. Codul Vanir este scris în C++ și Python și este distribuit sub licența BSD.
Proiectul constă din două părți — un generator de semnături și un detector de patch-uri pierdute. Generatorul formulează o semnătură pentru a identifica absența corecției pe baza descrierii vulnerabilității în format OSV și a linkului către patch-ul sau commit-ul care remediază vulnerabilitatea. În forma sa actuală, se suportă procesarea commit-urilor din repositoarele googlesource.com și git.codelinaro.org, dar suportul pentru alte servicii poate fi adăugat cu ușurință prin conectarea unui handler pentru extragerea codului.
Detectorul analizează codul din repositoul specificat și determină absența corecțiilor descrise în semnăturile furnizate. Implementarea se bazează pe algoritmi de rafinare automată a semnăturilor și analiza de modele multiple, propusă în proiectele de cercetare ReDeBug și VUDDY. Pe un PC modern cu un CPU de 16 nuclee, scanarea arborelui de cod sursă al platformei Android pe baza OSV cu informații despre mai mult de 2000 de vulnerabilități durează între 10 și 20 de minute. La final, se generează un raport cu o listă de vulnerabilități potențial nerezolvate și linkuri către pozițiile asociate din cod, identificatori CVE și patch-uri. Conform statisticilor adunate în doi ani de utilizare a Vanir în Google, rata falselor alarme este de 2,72%.


Avantajele instrumentarului propus:
- Posibilitatea de a identifica vulnerabilitățile nerezolvate în ramuri, modificări și împrumuturi de cod externe, care nu sunt direct legate de proiectul principal. În contextul Android, instrumentarul poate fi utilizat pentru a verifica aplicarea corecțiilor în variantele platformei Android dezvoltate de producătorii OEM de dispozitive.
- Realizarea verificării doar pe baza analizei codului existent, fără legătura cu metadatele, cum ar fi numărul versiunii, istoricul commit-urilor și SBOM (Software Bill Of Materials).
- Suport pentru generarea automată a semnăturilor, folosind informații despre vulnerabilități care apar în surse publice și patch-uri publicate de dezvoltatori.
- O performanță mai mare a verificării bazate pe analiza statică a codului sursă comparativ cu instrumentele de analiză dinamică și verificarea pachetelor binare.
- Autosuficiența — capacitatea de a desfășura infrastructura pe propriile sisteme fără a apela la servicii externe.
- Disponibilitatea unei baze de semnături actualizate, însoțită de echipa Google Android Security Team.
- Suport pentru conectarea la sistemele de integrare și livrare continuă (CI/CD). Posibilitatea de integrare în alte proiecte folosind Vanir sub formă de biblioteci în limbajul Python.
- Posibilitatea de adaptare a sistemului pentru sarcini nelegată de vulnerabilități, de exemplu, pentru identificarea clonării codului sau utilizarea codului licențiat în alte proiecte.
Sursa: opennet.ro
