Материнская компания npm (Node Package Manager), GitHub, сообщила о двух серьезных уязвимостях, выявленных в JavaScript-менеджере пакетов в октябре-ноябре текущего года.

Первая и наиболее серьезная ошибка, о которой ИБ-исследователи сообщили разработчикам через bug bounty программу GitHub в начале ноября, позволяет злоумышленнику опубликовать новую версию любого пакета npm, используя учетную запись без корректной авторизации.

Уязвимость возникла из-за несогласованности проверок авторизации и данных между несколькими микросервисами, которые обрабатывают запросы к npm.

«В данной архитектуре служба авторизации корректно проверяла авторизацию пользователя для пакетов на основе данных, передаваемых в путях URL запросов. Однако служба, выполняющая базовые обновления данных реестра, определяла, какой пакет нужно публиковать, основываясь на содержимом загруженного файла пакета, — объясняет глава службы безопасности GitHub Майк Хэнли. — Данное несоответствие создало возможность, когда запросы на публикацию новых версий пакета разрешались для одного пакета, но на самом деле  выполнялись для другого, потенциально неавторизованного пакета. Мы решили эту проблему, обеспечив согласованность между службами публикации и авторизации, чтобы гарантировать, что один и тот же пакет используется как для авторизации, так и для публикации».

Разработчики пишут, что никаких свидетельств эксплуатации этого бага нет. Но при этом специалисты признают, что уязвимость существовала в npm «сверх временного интервала», для которого у них есть телеметрия, «позволяющая определить, происходили ли когда-либо злоупотребления этой уязвимостью».

Вторая уязвимость была связана с утечкой имен приватных пакетов npm (но не их содержимого), которая произошла через сервер репликации npmjs.com, с которого получают данные сторонние службы. Утечка затронула частные библиотеки npm, которые выглядят как «@владелец/ пакет» и были созданы до 20 октября. Названия таких библиотек были доступны посторонним в период между 21 октября и 29 октября. В настоящее время утечка устранена, и данные удалены.

«Во время обслуживания базы данных, которая поддерживает общедоступную реплику npm на replicate.npmjs.com, были созданы записи, которые могли раскрывать названия частных пакетов, — объясняет Хэнли. — На короткое время это позволило потребителям replicate.npmjs.com узнать названия приватных пакетов из записей, опубликованных в общедоступной ленте изменений. Никакая другая информация, включая содержимое этих приватных пакетов, доступна не была».

Проблема в том, что даже простого знания называний приватных пакетов вполне достаточно для проведения таргетированных и автоматизированных атак типа dependency confusion и typosquatting. Эксперты признают, что replicate.npmjs.com используется третьими сторонами, а значит, те по-прежнему могут хранить копии утечки или «реплицировать данные в другом месте».

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии