Логотип

Критическая уязвимость в библиотеке 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(), но не проверяет идентификаторы, полученные из схемы, например имена сообщений.

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

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

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

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

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

Читать  Автоматизированная кампания кражи учётных данных через эксплуатацию React2Shell (CVE‑2025‑55182)

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

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

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

Редактор: AndreyEx

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

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

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

три × один =

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


Спасибо!

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

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