Уязвимость в Google Protocol Buffers превращает схемы в «shell»-код

Javascript Protocol Buffers уязвимости Cyera Dos csoonline.com

Широко используемая JavaScript-реализация Protocol Buffers от Google (protobuf.js) имеет шесть уязвимостей, связанных с обработкой схем и метаданных, которые могут привести к удаленному выполнению кода. Исследователи Cyera обнаружили, что ошибки валидации ввода позволяют внедрять вредоносные данные. — csoonline.com

Широко используемая JavaScript-реализация формата Protocol Buffers от Google излишне доверяет недоверенным данным, подвергая уязвимые приложения удаленному выполнению кода и другим атакам.

Исследователи из Cyera обнаружили шесть уязвимостей, затрагивающих «protobuf.js», все они связаны с обработкой библиотекой схем и метаданных. Злоумышленники могут использовать недочет в проверке входных данных для внедрения вредоносных данных и влияния на поведение приложения.

Protocol Buffers — это технология для упаковки данных в компактном, структурированном формате с целью оптимизации обмена информацией между различными приложениями. Сообщается, что библиотека protobuf.js получает более 50 миллионов загрузок еженедельно. Она часто неявно включается в приложения через зависимости, такие как инструменты gRPC, библиотеки Google Cloud и другие фреймворки, что затрудняет ее отслеживание для организаций.

Исследователи раскрыли шесть CVE, охватывающих удаленное выполнение кода, условия отказа в обслуживании (DoS), загрязнение прототипов (prototype pollution), внедрение прототипов (prototype injection) и проблемы генерации кода.

«Хотя эксплуатация этих уязвимостей обычно требует специфических условий, эти условия становятся все более распространенными в экосистемах данных и ИИ, которые регулярно обмениваются данными, схемами и конфигурационными файлами между сервисами, репозиториями, облачными платформами и сторонними интеграциями», — заявили исследователи Cyera Ассаф Мораг и Владимир Токарев в посте в блоге.

Исправленные версии доступны как для protobuf.js, так и для protonufjs-cli, инструментов командной строки для генерации кода в проекте.

Метаданные, способные писать код

Самым значительным из багов является ошибка генерации кода, отслеживаемая как CVE-2026-44291.

По данным Cyera, protobuf.js динамически генерирует функции кодировщика и декодера и компилирует их с использованием конструктора Function() в JavaScript. При определенных условиях злоумышленник может манипулировать информацией, полученной из схемы, так что данные, предназначенные для описания сообщения, превратятся в исполняемый код.

Исследователи продемонстрировали цепочку атак, в которой загрязнение прототипов используется для того, чтобы заставить protobuf.js принять значения, контролируемые злоумышленником, как легитимные типы protobuf. Затем эти значения включаются в сгенерированный код и выполняются в процессе Node.js.

Последствия выходят за рамки приложений во время выполнения. Отдельная проблема внедрения кода, отслеживаемая как CVE-2026-44295, затрагивает инструмент командной строки pbjs, где специально созданные имена схем могут быть внедрены в сгенерированные файлы JavaScript и выполнены при последующем импорте этих файлов.

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

Остальные уязвимости менее серьезны. Исследователи выявили ошибку внедрения прототипов (CVE-2026-44292), которая может изменить поведение приложения путем вмешательства в унаследованные свойства объектов, а также ошибки отказа в обслуживании (DoS) (CVE-2026-44289, CVE-2026-44290 и CVE-2026-44294), которые могут привести к сбою или исчерпанию ресурсов приложения с использованием злонамеренно сформированных входных данных.

Рекомендовано обновление в связи с риском в цепочке поставок

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

«Команды разработчиков регулярно принимают вклады кода, интегрируют сторонние компоненты и автоматически обрабатывают файлы через конвейеры CI/CD», — пояснили они. «Мы обнаружили, что при определенных условиях вредоносная схема protobuf может быть введена в этот рабочий процесс и в конечном итоге выполнена в доверенных средах сборки».

Компрометация на этом этапе может иметь каскадные последствия для продуктов, клиентов и бизнес-операций, добавили они.

Уязвимости затрагивают версии protobuf.js 7.5.5 и более ранние, а также версии 8.0.0 и 8.0.1, а также уязвимые релизы protobuf.js-cli. Исправленные версии доступны для protobuf.js 7.5.6 и 8.0.2, а пользователям protobuf.js-cli рекомендуется обновиться до версий 1.2.1 или 2.0.2.

Facebook*, Instagram* и WhatsApp* принадлежат компании Meta* Platforms Inc., деятельность которой признана экстремистской и запрещена на территории Российской Федерации.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: