Nowe narzędzie ODGen odkrywa 180 dni zerowych w bibliotekach Node.js PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Nowe narzędzie ODGen odkrywa 180 dni zerowych w bibliotekach Node.js

Naukowcy z Johns Hopkins University odkryli niedawno zaskakujące 180 luki zero-day w tysiącach bibliotek Node.js przy użyciu nowego narzędzia do analizy kodu, które opracowali specjalnie w tym celu, zwanego ODGen.

Siedemdziesiąt z tych usterek otrzymało od tego czasu wspólne identyfikatory podatności i narażenia (CVE). Obejmują one wady wstrzykiwania poleceń, luki związane z przechodzeniem ścieżki, problemy z wykonaniem dowolnego kodu oraz luki w zabezpieczeniach cross-site scripting — niektóre z nich w powszechnie używanych aplikacjach.

W artykule opublikowanym na sympozjum Usenix Security na początku tego miesiąca, naukowcy z Johns Hopkins — Song Li, Mingqing Kang, Jianwei Hou i Yinzhi Cao — opisali ODGen jako lepszą alternatywę dla obecnej analizy kodu i tzw. podejścia do znajdowania luk w Node.js.

Podejścia oparte na analizie programów okazały się przydatne w wykrywaniu poszczególnych typów luk w zabezpieczeniach, takich jak błędy wstrzykiwania kodu w języku JavaScript. Ale nie można ich łatwo rozszerzyć, aby wykryć wszelkiego rodzaju luki, które mogą być obecne w platformie Node.js, twierdzą naukowcy. Podobnie metody analizy kodu oparte na grafach — gdzie kod jest najpierw reprezentowany jako graf, a następnie odpytywany o określone błędy kodowania — działają dobrze w środowiskach takich jak C++ i PHP. Zauważyli jednak, że podejścia oparte na grafach nie są tak skuteczne w wyszukiwaniu luk w JavaScript z powodu szerokiego wykorzystania dynamicznych funkcji języka programowania.

„Nowatorskie” podejście do znajdowania luk w JavaScript

Dlatego naukowcy zamiast tego opracowali to, co opisali jako „nowatorska” i lepsza metoda o nazwie Object Dependence Graph (ODG) które można wykorzystać do wykrywania luk w Node.js. Wdrożyli ODGen, aby wygenerować „ODG” dla programów Node.js w celu wykrywania luk.

Cao, adiunkt informatyki na Uniwersytecie Johnsa Hopkinsa i współautor raportu badawczego, używa kilku analogii do ogólnego opisu analizy kodu opartej na grafach i proponowanego przez siebie grafu obiektywnej zależności. „Jeśli rozważymy podatność jako specjalny wzorzec – powiedzmy zielony węzeł połączony z czerwonym węzłem, a następnie z czarnym węzłem – narzędzie do analizy kodu oparte na grafach najpierw konwertuje programy na graf z wieloma węzłami i krawędziami” – mówi Cao. . „Następnie narzędzie szuka takich wzorców na wykresie, aby zlokalizować lukę”.

Object Dependence Graph, który zaproponowali badacze, udoskonala to podejście, przedstawiając obiekty JavaScript jako węzły i dodając funkcje — w tym zależności między obiektami — które są specyficzne dla języka programowania, a następnie wysyłając zapytania o błędy. Cao opisuje, jak działa ta metoda, wykorzystując ziarna w garści ryżu: Jeśli wszystkie ziarna wyglądają tak samo przed ugotowaniem, ale po ugotowaniu przyjmują dwa różne odcienie — jeden reprezentujący dobre ziarna, a drugi złe — wtedy łatwiej je zauważyć i usunąć złe ziarna. „Abstrakcyjna interpretacja jest trochę jak proces gotowania, który przekształca ryż – to znaczy programy – w obiekty o różnych kolorach”, więc błędy są łatwiejsze do wykrycia, mówi Cao.

Różnorodność błędów

Aby sprawdzić, czy ich podejście działa, naukowcy najpierw przetestowali ODGen na próbce 330 wcześniej zgłoszonych luk w zabezpieczeniach pakietów Node.js w repozytorium menedżera pakietów węzłów (npm). Test wykazał, że skaner poprawnie zidentyfikował 302 z 330 luk w zabezpieczeniach. Zachęceni stosunkowo wysokim wskaźnikiem dokładności, naukowcy porównali ODGen z około 300,000 2,964 pakietów Java w npm. Skaner zgłosił łącznie 264 potencjalnych luk w pakietach. Badacze sprawdzili 1,000 z nich – wszystkie z ponad 180 pobrań tygodniowo – i byli w stanie potwierdzić 122 jako uzasadnione luki w zabezpieczeniach. Czterdzieści trzy z nich znajdowały się na poziomie aplikacji, 15 znajdowały się w pakietach importowanych przez inne aplikacje lub kod, a pozostałych XNUMX było obecnych w pakietach pośrednich.

Wiele (80) potwierdzonych luk w zabezpieczeniach wykrytych przez ODGen to przepływy wstrzykiwania poleceń, które umożliwiają atakującym wykonanie dowolnego kodu na poziomie systemu operacyjnego za pośrednictwem podatnej aplikacji. Trzydzieści było wad w przemierzaniu ścieżki; 24 umożliwiało manipulowanie kodem, a 19 dotyczyło specyficznego typu ataku polegającego na wstrzykiwaniu poleceń, zwanego zanieczyszczeniem prototypu.

Znak czasu:

Więcej z Mroczne czytanie