52 миллиона скачиваний в неделю. В популярной библиотеке для JavaScript нашли критическую дыру

Под удар попали сервисы на базе Google Cloud и мобильная платформа Firebase.


pq292edv2ckof65zlowlkvxsjbrw6lan.jpg

Обычный файл с описанием данных может внезапно превратиться в способ захватить сервер. Специалисты Endor Labs нашли в популярной библиотеке protobuf.js уязвимость, которая позволяет выполнить чужой код почти без усилий, если приложение подхватит подменённый файл схемы.

Protobuf.js – одна из самых распространённых библиотек для работы с форматом Protocol Buffers в JavaScript. Такой формат используют миллионы сервисов, включая решения на базе облачной платформы Google Cloud и платформы Firebase . Пакет скачивают около 52 млн раз в неделю, причём часто он попадает в проекты как скрытая зависимость .

Сама атака выглядит проще, чем может показаться. Достаточно, чтобы злоумышленник подсунул приложению вредоносный файл схемы protobuf. Такие файлы нередко загружают из внешних источников – партнёрских сервисов, общих хранилищ или сторонних серверов. После загрузки достаточно одного обычного сообщения: библиотека обработает данные и выполнит встроенный вредоносный код без авторизации и без действий со стороны пользователя.

Проблема связана с тем, как protobuf.js обрабатывает схемы. Библиотека не просто читает описание данных, а генерирует на его основе JavaScript-код и сразу запускает его через механизм, аналогичный eval. При этом имена типов из схемы вставляются в код как есть, без проверки. Если злоумышленник подставит в имя конструкции JavaScript, библиотека выполнит их как полноценный код.