Ranjivosti ovisnosti (eng. dependency) se ne prijavljuju ili ne krpaju dovoljno brzo
zvješće također otkriva nekoliko ključnih problema s prijavljivanjem i zakrpavanjem ranjivosti u softverskim ovisnostima. Čak 69% sigurnosnih savjeta objavljuje se na platformama poput CVE-a, blogova ili GitHuba tek nakon što je zakrpa već dostupna. Medijan kašnjenja između dostupnosti zakrpe i objave sigurnosnog savjeta iznosi 25 dana.
Ovi čimbenici znatno povećavaju vremenski okvir tijekom kojeg napadači mogu iskoristiti ranjive sustave putem softverskih ovisnosti.
Unatoč olakšavanju programiranja, sve popularnije biblioteke umjetne inteligencije pogoršavaju postojeće probleme upravljanja ranjivosti ovisnosti. Točnije, izvješćivanje o ranjivostima u knjižnicama umjetne inteligencije nedosljedno je, s brojevima koji variraju za čak 10% između javnih savjetodavnih baza podataka, pokazalo je izvješće.
Fantomske ovisnosti — skrivene, nedeklarisane biblioteke u kodu aplikacije — također su češće u softverskim projektima AI i ML, prema autorima izvješća. AI projekti obično se pišu u Pythonu, jeziku ozloglašenom po fantomskim ovisnostima jer dopušta dinamičke ili neizravne instalacije paketa koje zaobilaze datoteke manifesta.
Fantomske ovisnosti činile su samo značajan dio otiska ovisnosti za 27% tvrtki čiji su podaci analizirani za ovo izvješće. Ali unutar te skupine, više od 56% je izjavilo da su ranjivosti knjižnice u njihovim fantomskim ovisnostima.
Stručnjaci za sigurnost zatrpani su nevažnim upozorenjima o ranjivosti
Četvrtina savjeta sadrži ili netočne ili nepotpune podatke, prema izvješću, što može dovesti do lažno pozitivnih i lažno negativnih rezultata.
Gotovo polovica onih u javnim bazama podataka ranjivosti u thr Go, Maven, NuGet, PyPI, RubyGems i npm ekosustavima također ne sadrži nikakve informacije o ranjivostima na razini koda, poput imena zahvaćenih funkcija ili obveza popravka. Zapravo, samo 2% sadrži bilo kakve informacije o zahvaćenim funkcijama.
Identificiranje veza između aplikacija i ranjivosti unutar njihovih ovisnosti tehnički je zahtjevno. Međutim, ove su informacije ključne za sigurnosne stručnjake kako bi znali predstavljaju li ranjivosti rizik za njihove aplikacije.
Bez toga ne mogu brzo filtrirati nevažne ranjivosti, što mnogi od njih jesu. Tim Endor Labsa otkrio je da se više od 90,5% ranjivosti ovisnosti o otvorenom kodu u Javi, Pythonu, Rustu, Gou, C#, .NET-u, Kotlinu i Scali zapravo ne može iskoristiti na funkcionalnoj razini — što znači da nemaju barem put poziva od aplikacije do ranjive funkcije u toj knjižnici.
Darren Meyer, istraživački inženjer u Endor Labsu, rekao je da se organizacije “utapaju u upozorenjima o ranjivostima, od kojih mnoga ne predstavljaju relevantan rizik.”
“Istraživanje upozorenja skupo je za sigurnosne timove (i softverske timove), a pokušaj da se sve popravi još je skuplji”, dodao je.
Prednosti ažuriranja 20 najboljih Python komponenti
Ažuriranje ovisnosti na verzije koje nisu ranjive ima značajan utjecaj na broj relevantnih ranjivosti. Na primjer, ažuriranje 20 najboljih komponenti Pythona uklanja više od 75% svih pronađenih ranjivosti, uključujući 60% za Javu i 44% za npm.
Nadalje, filtriranje ranjivosti ovisnosti koje nisu dostupne — ne može im se pristupiti i iskoristiti — i koje imaju EPSS ocjenu manju od 1% može značajno smanjiti broj koji stručnjaci za sigurnost moraju nadzirati. Kombinirajući ih s filtrima za ranjivosti za koje nema dostupnog popravka i nisu prisutni u testnom kodu ostavlja samo 4% Java i JavaScript ranjivosti i manje od 1% Python ranjivosti, smanjujući troškove sanacije.
Autori izvješća napisali su: “Kada se kombinira s podacima analize dostupnosti na razini funkcije i drugim strategijama određivanja opsega temeljenim na kontekstu, određivanje prioriteta EPSS-a često je toliko učinkovito da dodatne strategije određivanja prioriteta s većim naporom (kao što je provođenje vježbi bodovanja okoliša i vremena CVSS za određivanje ozbiljnosti) u vašem okruženju) često nisu potrebni.
“Ovo štedi troškove analize ranjivosti za vašu organizaciju.”