Neues ODGen-Tool entdeckt 180 Zero-Days in Node.js-Bibliotheken PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Neues ODGen-Tool entdeckt 180 Zero-Days in Node.js-Bibliotheken

Forscher der Johns Hopkins University haben kürzlich erstaunliche 180 Zero-Day-Schwachstellen in Tausenden von Node.js-Bibliotheken entdeckt, indem sie ein neues Codeanalysetool namens ODGen verwendeten, das sie speziell für diesen Zweck entwickelt haben.

Siebzig dieser Schwachstellen haben seitdem Common Vulnerabilities and Exposures (CVE)-Kennungen erhalten. Dazu gehören Command Injection-Fehler, Path Traversal-Schwachstellen, Probleme bei der Ausführung von willkürlichem Code und Cross-Site-Scripting-Schwachstellen – einige davon in weit verbreiteten Anwendungen.

In einem Papier, das Anfang dieses Monats auf dem Usenix Security Symposium veröffentlicht wurde, beschrieben die Johns Hopkins-Forscher – Song Li, Mingqing Kang, Jianwei Hou und Yinzhi Cao – ODGen als eine bessere Alternative zur aktuellen Codeanalyse und sogenannten Graph-Abfragen Ansätze zum Auffinden von Schwachstellen in Node.js.

Auf Programmanalysen basierende Ansätze haben sich als nützlich erwiesen, um einzelne Arten von Schwachstellen wie Code-Injektionsfehler in JavaScript zu erkennen. Sie können jedoch nicht einfach erweitert werden, um alle Arten von Schwachstellen zu erkennen, die in der Node.js-Plattform vorhanden sein könnten, sagten die Forscher. In ähnlicher Weise funktionieren graphbasierte Codeanalysemethoden – bei denen Code zuerst als Diagramm dargestellt und dann nach bestimmten Codierungsfehlern abgefragt wird – gut in Umgebungen wie C++ und PHP. Graphbasierte Ansätze seien jedoch nicht so effizient beim Durchsuchen von JavaScript-Schwachstellen, da die Programmiersprache in großem Umfang dynamische Funktionen verwende, stellten sie fest.

Ein „neuartiger“ Ansatz zum Auffinden von JavaScript-Schwachstellen

Also entwickelten die Forscher stattdessen das, was sie beschrieben eine „neuartige“ und bessere Methode namens Object Dependence Graph (ODG) die zum Erkennen von Schwachstellen in Node.js verwendet werden können. Sie implementierten ODGen, um „ODG“ für Node.js-Programme zu generieren, um Schwachstellen zu erkennen, sagten sie.

Cao, Assistenzprofessor für Informatik an der Johns Hopkins University und Co-Autor des Forschungsberichts, verwendet einige Analogien, um die graphbasierte Codeanalyse im Allgemeinen und den vorgeschlagenen Objective Dependence Graph zu beschreiben. „Wenn wir eine Schwachstelle als ein spezielles Muster betrachten – sagen wir, einen grünen Knoten, der mit einem roten Knoten und dann einem schwarzen Knoten verbunden ist – wandelt ein graphbasiertes Codeanalyse-Tool Programme zunächst in einen Graphen mit vielen Knoten und Kanten um“, sagt Cao . „Dann sucht das Tool nach solchen Mustern in der Grafik, um eine Schwachstelle zu lokalisieren.“

Der von den Forschern vorgeschlagene Object Dependence Graph verfeinert diesen Ansatz, indem er JavaScript-Objekte als Knoten darstellt und Funktionen – einschließlich Abhängigkeiten zwischen Objekten – hinzufügt, die für die Programmiersprache spezifisch sind, und dann nach Fehlern abfragt. Cao beschreibt, wie die Methode mit Körnern in einer Handvoll Reis funktioniert: Wenn alle Körner vor dem Kochen gleich aussehen, aber nach dem Kochen zwei verschiedene Farbtöne annehmen – eine für gute Körner und die andere für schlechte Körner – dann wird es einfacher, sie zu erkennen und auszusortieren die schlechten Körner. „Abstrakte Interpretation ist so etwas wie der Kochprozess, der Reis – also Programme – in verschiedenfarbige Objekte umwandelt“, so Cao, sodass Fehler leichter zu erkennen sind.

Eine Vielzahl von Fehlern

Um zu sehen, ob ihr Ansatz funktioniert, testeten die Forscher ODGen zunächst anhand einer Stichprobe von 330 zuvor gemeldeten Schwachstellen in Node.js-Paketen im Node Package Manager (npm)-Repository. Der Test zeigte, dass der Scanner 302 der 330 Schwachstellen korrekt identifizierte. Beflügelt von der relativ hohen Genauigkeitsrate ließen die Forscher ODGen gegen etwa 300,000 Java-Pakete in npm laufen. Der Scanner meldete insgesamt 2,964 potenzielle Schwachstellen in den Paketen. Die Forscher überprüften 264 davon – alle mit durchschnittlich mehr als 1,000 Downloads pro Woche – und konnten 180 als legitime Schwachstellen bestätigen. 122 davon befanden sich auf Anwendungsebene, 15 befanden sich in Paketen, die von anderen Anwendungen oder Code importiert wurden, und die restlichen XNUMX befanden sich in indirekten Paketen.

Eine Vielzahl (80) der bestätigten Schwachstellen, die ODGen entdeckte, waren Command Injection Flows, die es Angreifern ermöglichen, beliebigen Code auf Betriebssystemebene über eine anfällige Anwendung auszuführen. Dreißig davon waren Wegdurchquerungsfehler; 24 ermöglichten Code-Manipulationen und 19 betrafen eine bestimmte Art von Command-Injection-Angriffen, die als Prototyp-Verschmutzung bezeichnet wurden.

Zeitstempel:

Mehr von Dunkle Lektüre