Uus ODGeni tööriist avab Node.js teekides PlatoBlockchaini andmeluure 180 nullpäeva. Vertikaalne otsing. Ai.

Uus ODGeni tööriist toob Node.js teekides välja 180 nullpäeva

Johns Hopkinsi ülikooli teadlased avastasid hiljuti tuhandetes Node.js'i teekides jahmatavad 180 nullpäeva turvaauku, kasutades selleks spetsiaalselt välja töötatud uut koodianalüüsi tööriista ODGen.

Seitsekümmend neist vigadest on sellest ajast peale saanud ühised haavatavuse ja kokkupuute (CVE) tunnused. Nende hulka kuuluvad käskude sisestamise vead, tee läbimise haavatavused, suvalise koodi täitmise probleemid ja saidiülese skriptimise haavatavused – mõned neist laialdaselt kasutatavates rakendustes.

Selle kuu alguses Usenixi turvasümpoosionil avaldatud artiklis kirjeldasid Johns Hopkinsi teadlased Song Li, Mingqing Kang, Jianwei Hou ja Yinzhi Cao ODGeni kui paremat alternatiivi praegusele koodianalüüsile ja nn graafikupäringupõhisele. lähenemisviise Node.js haavatavuste leidmiseks.

Programmianalüüsil põhinevad lähenemisviisid on osutunud kasulikuks üksikute haavatavuste tuvastamisel, nagu JavaScripti koodi sisestamise vead. Teadlaste sõnul ei saa neid aga kergesti laiendada, et tuvastada kõikvõimalikud haavatavused, mis võivad Node.js platvormil esineda. Samamoodi toimivad graafikupõhised koodianalüüsi meetodid – kus kood esitatakse esmalt graafikuna ja seejärel küsitakse konkreetsete kodeerimisvigade kohta – hästi sellistes keskkondades nagu C++ ja PHP. Graafikupõhised lähenemisviisid ei ole aga JavaScripti haavatavuste kaevandamisel nii tõhusad, kuna programmeerimiskeel kasutab laialdaselt dünaamilisi funktsioone, märkisid nad.

„Uudne” lähenemisviis JavaScripti haavatavuste leidmiseks

Seega arendasid teadlased selle asemel välja selle, mida nad kirjeldasid "uudne" ja parem meetod nimega Object Dependence Graph (ODG) mida saab kasutada Node.js-i haavatavuste tuvastamiseks. Nad rakendasid ODGeni, et luua Node.js programmide jaoks haavatavuste tuvastamiseks "ODG".

Cao, Johns Hopkinsi ülikooli arvutiteaduse dotsent ja uurimisaruande kaasautor, kasutab paari analoogiat, et kirjeldada graafikul põhinevat koodianalüüsi üldiselt ja nende pakutud objektiivse sõltuvuse graafikut. "Kui käsitleme haavatavust kui erimustrit – näiteks rohelist sõlme, mis on ühendatud punase sõlmega ja seejärel musta sõlmega -, siis graafikupõhine koodianalüüsi tööriist teisendab esmalt programmid paljude sõlmede ja servadega graafikuks," ütleb Cao. . "Seejärel otsib tööriist haavatavuse leidmiseks graafikult selliseid mustreid."

Uurijate pakutud objektide sõltuvuse graafik täpsustab seda lähenemisviisi, esitades JavaScripti objekte sõlmedena ja lisades funktsioone (sh objektidevahelised sõltuvused), mis on spetsiifilised programmeerimiskeelele, ning seejärel otsides vigu. Cao kirjeldab, kuidas meetod töötab terade kasutamisel peotäis riisis: kui kõik terad näevad enne keetmist ühesugused, kuid pärast keetmist on neil kaks erinevat tooni – üks esindab häid ja teine ​​halbu teri –, siis on seda lihtsam märgata ja välja rookida. halvad terad. "Abstraktne tõlgendus sarnaneb keetmisprotsessiga, mis muudab riisi - see tähendab programmid - erinevat värvi objektideks", nii et vigu on lihtsam märgata, ütleb Cao.

Erinevad vead

Et näha, kas nende lähenemisviis toimib, testisid teadlased esmalt ODGeni 330 varem teatatud haavatavusega Node.js pakettides sõlme paketihalduri (npm) hoidlas. Test näitas, et skanner tuvastas 302-st haavatavusest 330 õigesti. Suhteliselt kõrgest täpsusmäärast tingituna käitasid teadlased ODGeni umbes 300,000 2,964 Java-paketiga npm-s. Skanner teatas pakettide lõikes kokku 264 potentsiaalsest haavatavusest. Uurijad kontrollisid neist 1,000 - kõiki nädalas keskmiselt rohkem kui 180 allalaadimisega - ja suutsid kinnitada, et 122 on õigustatud haavatavused. Neist 15 olid rakenduse tasemel, XNUMX olid pakettides, mida impordivad muud rakendused või kood, ja ülejäänud XNUMX olid kaudsetes pakettides.

Paljud (80) kinnitatud haavatavused, mille ODGen tuvastas, olid käskude sisestamise vood, mis võimaldavad ründajatel käivitada haavatava rakenduse kaudu suvalist koodi operatsioonisüsteemi tasemel. Kolmkümmend olid tee läbimise vead; 24 võimaldas koodi rikkumist ja 19 hõlmas teatud tüüpi käsusüstimise rünnakut, mida nimetatakse prototüübi reostuseks.

Ajatempel:

Veel alates Tume lugemine