Новый инструмент ODGen обнаружил 180 нулевых дней в библиотеках Node.js. Анализ данных PlatoBlockchain. Вертикальный поиск. Ай.

Новый инструмент ODGen обнаруживает 180 нулевых дней в библиотеках Node.js

Исследователи из Университета Джона Хопкинса недавно обнаружили поразительные 180 уязвимостей нулевого дня в тысячах библиотек Node.js, используя новый инструмент анализа кода, который они разработали специально для этой цели, под названием ODGen.

Семьдесят из этих уязвимостей с тех пор получили общие идентификаторы уязвимостей и экспозиций (CVE). К ним относятся недостатки внедрения команд, уязвимости обхода пути, проблемы с выполнением произвольного кода и уязвимости межсайтового скриптинга — некоторые из них в широко используемых приложениях.

В документе, опубликованном на симпозиуме по безопасности Usenix ранее в этом месяце, исследователи Университета Джона Хопкинса — Сонг Ли, Минцин Канг, Цзяньвэй Хоу и Иньчжи Цао — описали ODGen как лучшую альтернативу текущему анализу кода и так называемому основанному на графовых запросах. подходы к поиску уязвимостей Node.js.

Подходы, основанные на программном анализе, оказались полезными при обнаружении отдельных типов уязвимостей, таких как недостатки внедрения кода в JavaScript. Но их нельзя легко расширить для обнаружения всех видов уязвимостей, которые могут присутствовать в платформе Node.js, говорят исследователи. Точно так же методы анализа кода на основе графов, когда код сначала представляется в виде графа, а затем запрашивается на наличие конкретных ошибок кодирования, хорошо работают в таких средах, как C++ и PHP. Однако подходы на основе графов не так эффективны при обнаружении уязвимостей JavaScript из-за широкого использования динамических функций языка программирования, отметили они.

«Новый» подход к поиску уязвимостей JavaScript

Итак, исследователи вместо этого разработали то, что они описали как «новый» и лучший метод под названием Object Dependence Graph (ODG) который можно использовать для обнаружения уязвимостей Node.js. По их словам, они внедрили ODGen для создания «ODG» для программ Node.js для обнаружения уязвимостей.

Цао, доцент кафедры компьютерных наук в Университете Джона Хопкинса и соавтор исследовательского отчета, использует пару аналогий для описания анализа кода на основе графов в целом и предложенного ими графа объективных зависимостей. «Если мы рассматриваем уязвимость как особый шаблон — скажем, зеленый узел, соединенный с красным узлом, а затем с черным узлом, — инструмент анализа кода на основе графа сначала преобразует программы в граф с множеством узлов и ребер», — говорит Цао. . «Затем инструмент ищет такие шаблоны в графе, чтобы найти уязвимость».

Граф зависимостей объектов, предложенный исследователями, совершенствует этот подход, представляя объекты JavaScript в виде узлов и добавляя функции, включая зависимости между объектами, специфичные для языка программирования, а затем запрашивая ошибки. Цао описывает, как работает этот метод, используя зёрна в горсти риса: если все зёрна выглядят одинаково до варки, но после варки приобретают два разных оттенка — одно соответствует хорошему зерну, а другое — плохому зерну, — тогда их становится легче обнаружить и отсеять. плохие зерна. «Абстрактная интерпретация похожа на процесс варки риса, то есть программы, в разноцветные объекты», поэтому ошибки легче обнаружить, — говорит Цао.

Разнообразие ошибок

Чтобы проверить, работает ли их подход, исследователи сначала протестировали ODGen на выборке из 330 ранее зарегистрированных уязвимостей в пакетах Node.js в репозитории диспетчера пакетов узла (npm). Тест показал, что сканер правильно идентифицировал 302 из 330 уязвимостей. Воодушевленные относительно высоким уровнем точности, исследователи проверили ODGen примерно на 300,000 2,964 пакетов Java в npm. Сканер сообщил о 264 потенциальных уязвимостях в пакетах. Исследователи проверили 1,000 из них — все с более чем 180 загрузок в неделю в среднем — и смогли подтвердить, что 122 из них являются законными уязвимостями. Сорок три из них находились на уровне приложений, 15 находились в пакетах, импортируемых другими приложениями или кодом, а остальные XNUMX присутствовали в непрямых пакетах.

Множество (80) подтвержденных уязвимостей, обнаруженных ODGen, представляли собой потоки внедрения команд, которые позволяют злоумышленникам выполнять произвольный код на уровне операционной системы через уязвимое приложение. Тридцать были дефектами обхода пути; 24 из них включали фальсификацию кода, а 19 включали особый тип атаки с внедрением команд, называемой загрязнением прототипа.

Отметка времени:

Больше от Темное чтение