Uusi ODGen-työkalu paljastaa 180 nollapäivää Node.js-kirjastoissa PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Uusi ODGen-työkalu paljastaa 180 nollapäivää Node.js-kirjastoissa

Johns Hopkinsin yliopiston tutkijat paljastivat äskettäin hätkähdyttävät 180 nollapäivän haavoittuvuutta tuhansissa Node.js-kirjastoissa käyttämällä uutta koodianalyysityökalua, joka on kehitetty erityisesti tätä tarkoitusta varten, nimeltään ODGen.

Seitsemänkymmentä näistä puutteista on sittemmin saanut yleiset haavoittuvuudet ja altistumistunnisteet (CVE). Niihin kuuluvat komentojen lisäysvirheet, polun läpiviennin haavoittuvuudet, mielivaltaiset koodin suoritusongelmat ja sivustojen väliset komentosarjahaavoittuvuudet – joista osa on laajalti käytetyissä sovelluksissa.

Usenix Security Symposiumissa aiemmin tässä kuussa julkaistussa artikkelissa Johns Hopkinsin tutkijat - Song Li, Mingqing Kang, Jianwei Hou ja Yinzhi Cao - kuvailivat ODGeniä paremmaksi vaihtoehdoksi nykyiselle koodianalyysille ja niin kutsutulle graafikyselypohjaiselle. lähestymistapoja Node.js-haavoittuvuuksien löytämiseen.

Ohjelmaanalyyseihin perustuvat lähestymistavat ovat osoittautuneet hyödyllisiksi yksittäisten haavoittuvuustyyppien, kuten JavaScriptin koodinsyöttövirheiden, havaitsemisessa. Mutta niitä ei voida helposti laajentaa havaitsemaan kaikenlaisia ​​​​haavoittuvuuksia, joita Node.js-alustassa saattaa olla, tutkijat sanoivat. Samoin kaaviopohjaiset koodianalyysimenetelmät - joissa koodi esitetään ensin kaaviona ja sitten kysytään tiettyjä koodausvirheitä - toimivat hyvin ympäristöissä, kuten C++ ja PHP. Graafipohjaiset lähestymistavat eivät kuitenkaan ole yhtä tehokkaita JavaScript-haavoittuvuuksien louhinnassa, koska ohjelmointikieli käyttää laajasti dynaamisia ominaisuuksia, he huomauttivat.

"Uusi" lähestymistapa JavaScript-haavoittuvuuksien etsimiseen

Joten tutkijat sen sijaan kehittivät sen, mitä he kuvailivat "uusi" ja parempi menetelmä nimeltä Object Dependence Graph (ODG) joita voidaan käyttää Node.js-haavoittuvuuksien havaitsemiseen. He ottivat käyttöön ODGenin luodakseen "ODG:n" Node.js-ohjelmille haavoittuvuuksien havaitsemiseksi, he sanoivat.

Cao, Johns Hopkinsin yliopiston tietojenkäsittelytieteen apulaisprofessori ja tutkimusraportin toinen kirjoittaja, käyttää paria analogiaa kuvaamaan kuvaajapohjaista koodianalyysiä yleensä ja heidän ehdottamastaan ​​objektiivisen riippuvuuden kuvaajaa. "Jos tarkastelemme haavoittuvuutta erityisenä kuviona - esimerkiksi vihreä solmu, joka on yhdistetty punaiseen solmuun ja sitten musta solmu - graafipohjainen koodianalyysityökalu muuntaa ensin ohjelmat graafiksi, jossa on useita solmuja ja reunoja", Cao sanoo. . "Sitten työkalu etsii tällaisia ​​​​malleja kaaviosta löytääkseen haavoittuvuuden."

Tutkijoiden ehdottama Object Dependence Graph -kaavio tarkentaa tätä lähestymistapaa esittämällä JavaScript-objekteja solmuina ja lisäämällä ominaisuuksia - mukaan lukien objektien väliset riippuvuudet -, jotka ovat ominaisia ​​​​ohjelmointikielelle, ja sitten kyselemällä virheitä. Cao kuvaa, kuinka menetelmä toimii käyttämällä jyviä kouralliseen riisiä: Jos kaikki jyvät näyttävät samalta ennen keittämistä, mutta niissä on kaksi eri sävyä keittämisen jälkeen - yksi edustaa hyviä ja toinen huonoja jyviä - niin se on helpompi havaita ja karsia pois. huonot jyvät. "Abstrakti tulkinta on tavallaan kuin kiehumisprosessi, joka muuntaa riisin - eli ohjelmat - erivärisiksi esineiksi", joten virheet on helpompi havaita, Cao sanoo.

Erilaisia ​​vikoja

Nähdäkseen, toimiiko heidän lähestymistapansa, tutkijat testasivat ensin ODGeniä 330:n aiemmin ilmoitetun Node.js-paketin haavoittuvuuden otokseen vastaan ​​node-pakettienhallinnan (npm) arkiston. Testi osoitti, että skanneri tunnisti oikein 302 330 haavoittuvuudesta. Suhteellisen korkean tarkkuuden tukemana tutkijat suorittivat ODGenin noin 300,000 2,964 Java-paketin kanssa npm:ssä. Skanneri ilmoitti yhteensä 264 1,000 mahdollisesta haavoittuvuudesta paketeissa. Tutkijat tarkistivat niistä 180 - kaikilla keskimäärin yli 122 15 latausta viikossa - ja pystyivät vahvistamaan XNUMX laillisiksi haavoittuvuuksiksi. Niistä XNUMX oli sovellustasolla, XNUMX oli muiden sovellusten tai koodin tuomissa pakkauksissa ja loput XNUMX epäsuorassa paketissa.

Useat (80) vahvistetuista haavoittuvuuksista, jotka ODGen havaitsi, olivat komentojen lisäysvirtoja, joiden avulla hyökkääjät voivat suorittaa mielivaltaisen koodin käyttöjärjestelmätasolla haavoittuvan sovelluksen kautta. Kolmekymmentä oli polun läpikulkuvirheitä; 24 mahdollisti koodin peukaloinnin ja 19 sisälsi tietyntyyppisen komento-injektiohyökkäyksen, jota kutsutaan prototyyppisaasteeksi.

Aikaleima:

Lisää aiheesta Pimeää luettavaa