Обход защит NPM Shai-Hulud через зависимости Git: уязвимости цепочки поставок
Исследователи выявили критические уязвимости в защите цепочки поставок NPM, позволяющие злоумышленникам обходить меры безопасности Shai-Hulud с помощью зависимостей Git. Узнайте о рисках и способах защиты.
Обход защит NPM Shai-Hulud через зависимости Git
Исследователи в области кибербезопасности обнаружили критические уязвимости в системе защиты цепочки поставок NPM, внедренной после резонансных атак Shai-Hulud. Злоумышленники могут обходить меры безопасности, эксплуатируя зависимости Git. Результаты исследования подчеркивают сохраняющиеся риски в экосистеме управления зависимостями JavaScript.
Основные выводы
В 2021 году NPM внедрила усиленные меры безопасности после атак на цепочку поставок Shai-Hulud, в ходе которых вредоносные пакеты компрометировали приложения, использующие их. Однако исследователи продемонстрировали, что злоумышленники могут обходить эти защиты, используя зависимости на основе Git — пакеты, размещенные непосредственно в репозиториях Git, а не в реестре NPM.
В отличие от традиционных пакетов NPM, зависимости Git не проходят те же проверки безопасности, верификацию подписей или валидацию метаданных. Это создает слепую зону, позволяющую злоумышленникам:
- Внедрять вредоносный код в зависимости без обнаружения.
- Эксплуатировать доверительные отношения в проектах с открытым исходным кодом.
- Обходить автоматизированные проверки безопасности NPM, включая подписание пакетов и проверку происхождения (provenance).
Технические детали
После атак Shai-Hulud NPM внедрила следующие меры защиты:
- Подписание пакетов для проверки подлинности издателя.
- Проверку происхождения (provenance) для валидации источников пакетов.
- Автоматизированное сканирование на вредоносное ПО для пакетов, размещенных в реестре.
Однако зависимости Git, указанные через URL в файле package.json (например, git+https://github.com/user/repo.git), не проходят через эти защитные механизмы. Злоумышленники могут:
- Размещать вредоносные пакеты в публичных или частных репозиториях Git.
- Обманывать разработчиков, используя методы тайпсквоттинга (typosquatting) или социальной инженерии.
- Выполнять произвольный код во время установки, компрометируя среды сборки.
Анализ влияния
Уязвимость подвергает организации следующим рискам:
- Атакам на цепочку поставок, нацеленным на CI/CD-конвейеры.
- Утечке данных или установке бэкдоров через скомпрометированные зависимости.
- Репутационному ущербу для проектов, неосознанно распространяющих вредоносный код.
Зависимости Git широко используются в корпоративных и open-source проектах, что усиливает риски. Известные библиотеки или инструменты с транзитивными зависимостями от пакетов, размещенных в Git, могут непреднамеренно распространять угрозы.
Рекомендации
Командам безопасности и разработчикам следует:
- Проводить аудит файлов
package.jsonна наличие зависимостей Git и заменять их на альтернативы из реестра, где это возможно. - Внедрять инструменты сканирования зависимостей (например, GitHub Dependabot, Snyk) для обнаружения вредоносных ссылок на Git.
- Ужесточать политики код-ревью для зависимостей на основе Git, включая ручную валидацию источников репозиториев.
- Использовать флаг NPM
--omit=devпри установке, чтобы исключить зависимости для разработки, которые могут скрывать риски. - Мониторить аномальное поведение в системах сборки, например, неожиданные сетевые запросы или изменения файлов.
Следующие шаги
NPM пока не выпустила патч или меры по смягчению этой уязвимости. Организациям рекомендуется применять стратегии глубокой защиты (defense-in-depth), включая:
- Изолированные среды сборки, чтобы ограничить влияние скомпрометированных зависимостей.
- Генерацию SBOM (Software Bill of Materials) для отслеживания источников зависимостей.
- Принципы нулевого доверия (Zero Trust) для управления зависимостями, рассматривая весь внешний код как потенциально небезопасный по умолчанию.
Это открытие подчеркивает необходимость постоянной бдительности в обеспечении безопасности цепочек поставок с открытым исходным кодом, особенно в условиях, когда злоумышленники меняют тактики, эксплуатируя упущенные векторы атак.