Логотип

Критическая уязвимость в библиотеке Protobuf позволяет выполнять код JavaScript

Критическая уязвимость в библиотеке Protobuf позволяет выполнять код JavaScript

Опубликован экспериментальный код для использования критической уязвимости, позволяющей удаленно выполнять код, в protobuf.js — широко используемой JavaScript-реализации Protocol Buffers от Google.

Этот инструмент очень популярен в реестре Node Package Manager (npm): в среднем его скачивают почти 50 миллионов раз в неделю. Он используется для межсервисного взаимодействия, в приложениях реального времени, а также для эффективного хранения структурированных данных в базах данных и облачных средах.

В опубликованном в пятницу отчете компания Endor Labs, специализирующаяся на безопасности приложений, сообщает, что уязвимость удаленного выполнения кода (RCE) в protobuf.js вызвана небезопасной динамической генерацией кода.

Проблема с безопасностью не получила официального номера CVE и в настоящее время отслеживается под идентификатором GHSA-xq3m-2v4x-88gg, присвоенным GitHub.

Endor Labs объясняет, что библиотека создает функции JavaScript на основе схем protobuf, объединяя строки и выполняя их с помощью конструктора Function(), но не проверяет идентификаторы, полученные из схемы, например имена сообщений.

Это позволяет злоумышленнику предоставить вредоносную схему, которая внедряет произвольный код в сгенерированную функцию, которая затем выполняется, когда приложение обрабатывает сообщение с использованием этой схемы.

Это открывает путь к удаленному выполнению кода на серверах или в приложениях, которые загружают схемы, созданные злоумышленниками, предоставляя доступ к переменным среды, учетным данным, базам данных и внутренним системам и даже позволяя перемещаться по инфраструктуре.

Читать  Исследователи обнаружили два ранее неизвестных бэкдора Linux

Атака может затронуть и компьютеры разработчиков, если они локально загружают и декодируют ненадежные схемы.

Уязвимость затрагивает версии protobuf.js 8.0.0/7.5.4 и ниже. Endor Labs рекомендует обновить их до версий 8.0.1 и 7.5.5, в которых эта проблема устранена.

Патч очищает имена типов, удаляя небуквенно-цифровые символы, что не позволяет злоумышленнику закрыть синтетическую функцию. Однако, по словам Эндора, в долгосрочной перспективе было бы лучше вообще запретить передачу идентификаторов, доступных злоумышленнику, через Function.

Компания Endor Labs предупреждает, что «эксплуатация уязвимости не представляет сложности» и что это подтверждается минимальным доказательством концепции (PoC), включенным в рекомендацию по безопасности. Однако на сегодняшний день не было зафиксировано ни одного случая активной эксплуатации уязвимости.

Об уязвимости сообщил исследователь из Endor Labs и специалист по поиску уязвимостей в системе безопасности Кристиан Стайку 2 марта, а разработчики protobuf.js опубликовали исправление на GitHub 11 марта. Исправления для пакетов npm были доступны 4 апреля для ветки 8.x и 15 апреля для ветки 7.x.

Помимо обновления до исправленных версий, Endor Labs также рекомендует системным администраторам проверять транзитивные зависимости, относиться к загрузке схем как к ненадежному источнику данных и отдавать предпочтение предварительно скомпилированным/статическим схемам в производственной среде.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

четыре × пять =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала