NPM исправляет утечку имен частных пакетов, серьезную ошибку авторизации

20
Прибыль Bandai Namco выросла почти на 50% в 2022 финансовом году

Последнее обновление 07.01.2023 — QGames

Крупнейший реестр программного обеспечения пакетов Node.js, npm, обнаружил множество недостатков безопасности, которые были обнаружены и исправлены недавно.

Первый недостаток связан с утечкой имен частных пакетов npm на «реплике» сервера npmjs.com — каналы с которых потребляются сторонними службами.

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

Утечка имен приватных пакетов npm

На этой неделе материнская компания npm, GitHub, раскрыла два недостатка безопасности, которые были выявлены и устранены в реестре npm в период с октября по этот месяц.

Первый — это утечка данных на сервере репликации npmjs, вызванная «плановым обслуживанием». Утечка раскрыла список имен частных пакетов npm, но не содержимое этих пакетов во время окна обслуживания.

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

По теме:  Ваш iPhone можно отследить, даже когда он выключен

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

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

Утечка особенно касается частных библиотек npm с ограниченным объемом, которые выглядят как « @ owner / package » и были созданы до 20 октября. Имена таких библиотек были раскрыты «между 21 октября 13: 12: 10Z UTC и 29 октября 15: 51: 00Z UTC», согласно GitHub.

Утечка данных была обнаружена GitHub 26 октября, а 29 октября все записи, содержащие имена частных пакетов, были удалены из базы данных репликации npm. Хотя GitHub предупреждает, что, несмотря на это, сервис replicate.npmjs.com используется третьими сторонами, которые, следовательно, могут продолжать хранить копию или «могли реплицировать данные в другом месте».

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

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

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

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

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

Исследователи Каетан Гржибовски и Мацей Пьехота были признаны ответственными за сообщение об ошибке через программу вознаграждений за ошибки безопасности GitHub.

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

GitHub с большой уверенностью заявил, что уязвимость не использовалась злонамеренно, по крайней мере, с сентября 2020 года, то есть примерно в то время, когда стала доступна телеметрия.

«Мы быстро утвердили отчет, начали наши процессы реагирования на инциденты и устранили уязвимость в течение шести часов после получения отчета», — говорится в сообщении GitHub.

npm с 2022 года потребует двухфакторную аутентификацию

Оба объявления последовали вскоре после того, как популярные библиотеки npm, ua-parser-js , coa и rc были захвачены в серии атак, направленных на заражение потребителей программного обеспечения с открытым исходным кодом троянами и крипто-майнерами.

Эти атаки были связаны с компрометацией учетных записей npm, принадлежащих разработчикам этих библиотек. По данным GitHub, ни у одного из сопровождающих этих популярных библиотек для своих учетных записей не была включена двухфакторная аутентификация (2FA).

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

Таким образом, чтобы свести к минимуму вероятность повторения таких компромиссов в ближайшем будущем, GitHub начнет требовать от специалистов по поддержке npm для включения 2FA где-то в первом квартале 2022 года.

Что касается случаев, когда вредоносное ПО для опечаток и путаницы зависимостей публикуется в npm из учетной записи, принадлежащей злоумышленнику, а не из захваченной учетной записи, GitHub продолжает инвестировать в ресурсы и улучшения безопасности для автоматизации обнаружения вредоносных программ в режиме реального времени в недавно опубликованных версиях пакетов npm.

Источник