NPM-пакет tinycolor, представляющий собой широко используемую библиотеку для управления цветом, был скомпрометирован в ходе атаки. Она затронула более 40 пакетов библиотеки, а после самораспространяющийся червь заразил ещё более 300.
Это серьёзный инцидент безопасности, учитывая, что исходный NPM-пакет насчитывает 2 млн еженедельных загрузок.
Как выяснили исследователи компании Socket, злоумышленники смогли распространить вредоносное ПО с помощью функции NpmModule.updatePackage, внедрённой в скомпрометированные библиотеки. Она автоматизировала процесс заражения, загружая tar-архив пакета новой цели. Затем червь изменял файл package.json, внедрял вредоносный скрипт bundle.js, переупаковывал архив и повторно публиковал его в реестре npm, используя украденный токен. Червь ищет переменные окружения, такие как NPM_TOKEN, что позволяет ему находить учётные данные для дальнейшего распространения на пакеты, обслуживаемые скомпрометированной учётной записью.
По данным Socket, учётная запись npm CrowdStrike также была скомпрометирована, и несколько её пакетов были заражены вредоносным ПО. После этого компания, специализирующаяся на безопасности, удалила их и сменила учётные данные.
Кампания получила название Shai-Hulud из-за файлов рабочих процессов shai-hulud.yaml, обнаруженных во вредоносе. Атака довольно сложна и использует TruffleHog, легитимный инструмент для скрытого сканирования, чтобы искать и проверять учётные данные перед их передачей в веб-перехватчик.
Вот лишь некоторые из затронутых пакетов:
@ctrl/tinycolor;
ngx-toastr;
@crowdstrike/glide-core;
angulartics2;
eslint-config-crowdstrike;
@nativescript-community/ui-collectionview.
Затронутым разработчикам рекомендуют полностью удалить вредоносные пакеты из своих проектов с помощью команды npm uninstall. Они также могут прикрепить зависимости к заведомо исправной версии через команду npm install @ —save-exact.
Поскольку этот червь активно ищет и извлекает секреты, рекомендуется также регулярно обновлять все учётные данные, доступные в системе — токены NPM, токены личного доступа GitHub, секреты Actions, ключи SSH и любые учётные данные для облачных сервисов AWS, Google Cloud или Azure. Наконец, следует циклически повторять ключи API, строки подключения к базе данных и любые секреты, хранящиеся в таких сервисах, как AWS Secrets Manager.
Источник: habr.com