Несколько дней тому назад GitHub выявил два инцидента в инфраструктуре репозитория пакетов NPM, из них подробно говорится, что 2 ноября сторонние исследователи безопасности в рамках программы Bug Bounty обнаружили уязвимость в репозитории NPM. что позволяет публиковать новую версию любого пакета, даже если он не авторизован для выполнения таких обновлений.
Уязвимость возникла из-за неправильной проверки авторизации в коде микросервисов. тот обрабатывает запросы к NPM. Служба авторизации выполнила проверку разрешений для пакетов на основе данных, переданных в запросе, но другая служба, которая загружала обновление в репозиторий, решила опубликовать пакет на основе содержимого метаданных в загруженном пакете.
Таким образом, злоумышленник может запросить публикацию обновления для своего пакета, к которому у него есть доступ, но указать в самом пакете информацию о другом пакете, который в конечном итоге будет обновлен.
В течение последних нескольких месяцев команда npm инвестировала в улучшения инфраструктуры и безопасности, чтобы автоматизировать мониторинг и анализ недавно выпущенных версий пакетов для выявления вредоносных программ и другого вредоносного кода в режиме реального времени.
Существует две основные категории событий публикации вредоносных программ, которые происходят в экосистеме npm: вредоносные программы, которые публикуются из-за взлома учетной записи, и вредоносные программы, которые злоумышленники публикуют через свои собственные учетные записи. Несмотря на то, что получение высокоэффективных учетных записей является относительно редким явлением, по сравнению с прямыми вредоносными программами, размещенными злоумышленниками с использованием их собственных учетных записей, получение учетных записей может иметь далеко идущие последствия при нацеливании на популярных сопровождающих пакетов. Несмотря на то, что наше время обнаружения и реагирования на приобретение популярных пакетов в недавних инцидентах составляло всего 10 минут, мы продолжаем развивать наши возможности обнаружения вредоносных программ и стратегии уведомления в сторону более проактивной модели реагирования.
Проблема она была исправлена через 6 часов после сообщения об уязвимости, но уязвимость присутствовала в NPM дольше чем покрывают журналы телеметрии. GitHub заявляет, что не было никаких следов атак с использованием этой уязвимости. с сентября 2020, но нет гарантии, что проблема не использовалась ранее.
Второй инцидент произошел 26 октября. В ходе технической работы с базой данных сервиса replicant.npmjs.com, Выявлено, что в базе данных есть конфиденциальные данные, доступные для внешней консультации, раскрывая информацию об именах внутренних пакетов, которые были упомянуты в журнале изменений.
Информация об этих именах может использоваться для проведения атак зависимостей на внутренние проекты (В феврале такая атака позволила запустить код на серверах PayPal, Microsoft, Apple, Netflix, Uber и 30 других компаний.)
Кроме того, в связи с участившимися случаями конфискации репозиториев крупных проектов и продвижение вредоносного кода путем компрометации учетных записей разработчиков, GitHub решил ввести обязательную двухфакторную аутентификацию. Изменение вступит в силу в первом квартале 2022 года и коснется сопровождающих и администраторов пакетов, включенных в список самых популярных. Кроме того, сообщается о модернизации инфраструктуры, которая позволит внедрить автоматизированный мониторинг и анализ новых версий пакетов для раннего обнаружения вредоносных изменений.
Напомним, согласно исследованию, проведенному в 2020 году, только 9.27% менеджеров пакетов используют двухфакторную аутентификацию для защиты доступа, а в 13.37% случаев при регистрации новых учетных записей разработчики пытались повторно использовать скомпрометированные пароли, которые фигурируют в известных паролях. .
Во время проверки надежности используемых паролей доступ к 12% учетных записей в NPM (13% пакетов) был вызван использованием предсказуемых и тривиальных паролей, таких как «123456». Среди проблем были 4 учетных записи пользователей 20 самых популярных пакетов, 13 учетных записей, пакеты которых загружались более 50 миллионов раз в месяц, 40 - более 10 миллионов загрузок в месяц и 282 учетных записи более 1 миллиона загрузок в месяц. Учитывая загрузку модулей в цепочке зависимостей, компрометация ненадежных учетных записей может затронуть до 52% всех модулей в NPM в целом.
Наконец, если вам интересно узнать об этом больше вы можете проверить детали По следующей ссылке.
Будьте первым, чтобы комментировать