Noul instrument ODGen dezvăluie 180 de zile zero în bibliotecile Node.js PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Noul instrument ODGen dezvăluie 180 de zile zero în bibliotecile Node.js

Cercetătorii de la Universitatea Johns Hopkins au descoperit recent 180 de vulnerabilități zero-day în mii de biblioteci Node.js folosind un nou instrument de analiză a codului pe care l-au dezvoltat special pentru acest scop, numit ODGen.

De atunci, șaptezeci dintre aceste defecte au primit identificatori comune de vulnerabilități și expuneri (CVE). Acestea includ defecte de injectare a comenzii, vulnerabilități de traversare a căilor, probleme de execuție a codului arbitrar și vulnerabilități de scripting între site-uri - unele dintre ele în aplicații utilizate pe scară largă.

Într-o lucrare publicată la Simpozionul de securitate Usenix la începutul acestei luni, cercetătorii Johns Hopkins - Song Li, Mingqing Kang, Jianwei Hou și Yinzhi Cao - au descris ODGen ca o alternativă mai bună la analiza actuală a codului și la așa-numita interogare bazată pe grafice. abordări pentru găsirea vulnerabilităților Node.js.

Abordările bazate pe analiza programelor s-au dovedit utile pentru a ajuta la detectarea tipurilor de vulnerabilități individuale, cum ar fi defecte de injectare de cod în JavaScript. Dar nu pot fi extinse cu ușurință pentru a detecta toate tipurile de vulnerabilități care ar putea fi prezente în platforma Node.js, au spus cercetătorii. În mod similar, metodele de analiză a codului bazate pe grafice - în care codul este mai întâi reprezentat ca un grafic și apoi interogat pentru erori specifice de codare - funcționează bine în medii precum C++ și PHP. Cu toate acestea, abordările bazate pe grafice nu sunt la fel de eficiente în analizarea vulnerabilităților JavaScript din cauza utilizării extinse de către limbajul de programare a caracteristicilor dinamice, au observat ei.

O abordare „nouă” pentru găsirea vulnerabilităților JavaScript

Deci, cercetătorii au dezvoltat în schimb ceea ce au descris o metodă „romană” și mai bună numită Object Dependence Graph (ODG) care poate fi folosit pentru detectarea vulnerabilităților Node.js. Au implementat ODGen pentru a genera „ODG” pentru programele Node.js pentru a detecta vulnerabilități, au spus ei.

Cao, profesor asistent de informatică la Universitatea Johns Hopkins și co-autor al raportului de cercetare, folosește câteva analogii pentru a descrie analiza codului bazată pe grafice în general și graficul de dependență obiectivă propus. „Dacă considerăm o vulnerabilitate ca un model special – de exemplu, un nod verde conectat cu un nod roșu și apoi un nod negru – un instrument de analiză a codului bazat pe grafice convertește mai întâi programele într-un grafic cu multe noduri și margini”, spune Cao. . „Apoi instrumentul caută astfel de modele în grafic pentru a localiza o vulnerabilitate.”

Graficul de dependență de obiecte pe care cercetătorii l-au propus rafinează această abordare reprezentând obiectele JavaScript ca noduri și adăugând caracteristici - inclusiv dependențe între obiecte - care sunt specifice limbajului de programare și apoi interogând erori. Cao descrie modul în care funcționează metoda folosind boabe într-o mână de orez: dacă toate boabele arată la fel înainte de fierbere, dar iau două nuanțe diferite după fierbere - una reprezentând boabe bune și cealaltă boabe proaste - atunci devine mai ușor de identificat și îndepărtat. boabele rele. „Interpretarea abstractă este un fel ca procesul de fierbere care transformă orezul – adică programele – în obiecte de culori diferite”, astfel încât erorile sunt mai ușor de detectat, spune Cao.

O varietate de bug-uri

Pentru a vedea dacă abordarea lor funcționează, cercetătorii au testat mai întâi ODGen pe un eșantion de 330 de vulnerabilități raportate anterior în pachetele Node.js din depozitul managerului de pachete node (npm). Testul a arătat că scanerul identifică corect 302 dintre cele 330 de vulnerabilități. Susținuți de rata de precizie relativ ridicată, cercetătorii au rulat ODGen împotriva a aproximativ 300,000 de pachete Java în npm. Scanerul a raportat un total de 2,964 de vulnerabilități potențiale în toate pachetele. Cercetătorii au verificat 264 dintre ele - toate cu peste 1,000 de descărcări pe săptămână în medie - și au putut confirma 180 ca fiind vulnerabilități legitime. Patruzeci și trei dintre acestea au fost la nivel de aplicație, 122 au fost în pachete care sunt importate prin alte aplicații sau cod, iar restul de 15 au fost prezente în pachete indirecte.

O pluralitate (80) dintre vulnerabilitățile confirmate pe care ODGen le-a detectat au fost fluxuri de injecție de comandă care permit atacatorilor să execute cod arbitrar la nivel de sistem de operare printr-o aplicație vulnerabilă. Treizeci au fost defecte de traversare a căii; 24 a permis manipularea codului, iar 19 a implicat un tip specific de atac cu injecție de comandă numit poluare prototip.

Timestamp-ul:

Mai mult de la Lectură întunecată