Фальшивый NPM-пакет был загружен сотнями разработчиков
05/11/24
Специалисты Socket обнаружили в каталоге NPM новую угрозу, использующую метод написания названий популярных пакетов с незначительными опечатками для установки вредоносного ПО с целью кражи конфиденциальных данных разработчиков.
В данном случае злоумышленник создал пользователя «sindresrohus», изменив порядок букв в имени известного разработчика открытого ПО Синдре Сорхуса (sindresorhus), и разместил под этим аккаунтом вредоносный пакет «chalk-node».
Пакет является поддельной версией широко используемой библиотеки «chalk», предназначенной для стилизации текста в терминале, и содержит вредоносный код, поясняет Securitylab. Пакет «chalk-node» содержит обфусцированный файл «index.esm.js», который позволяет читать файлы с компьютера жертвы и отправлять их на внешние серверы через сервис Sentry. Вредоносный код замещает стандартный «console.log» на модифицированную версию, которая при вызове может извлекать конфиденциальные данные с устройства разработчика.
По данным Socket, злоумышленник разместил пакет на npm, полностью скопировав описание и структуру документации настоящего пакета «chalk», чтобы завоевать доверие пользователей. Вредоносный код использует функции fs-модуля Node.js (readFileSync и readdirSync), чтобы искать и читать конфиденциальные файлы на компьютере, включая данные аутентификации и конфигурации.
Кроме того, пакет уже был загружен более 600 раз, что, несмотря на незначительное количество загрузок (по сравнению с 334 миллионами еженедельных загрузок оригинального «chalk»), указывает на серьёзную угрозу распространения вредоносного ПО среди менее опытных разработчиков.
Socket также предложила разработчикам npm удалить вредоносный пакет, но он все еще доступен на платформе. Специалисты настоятельно рекомендуют разработчикам перепроверять пакеты перед установкой и использовать инструменты безопасности для защиты проектов от атак, связанных с цепочками поставок. Установка CLI-инструмента также обеспечивает дополнительный уровень безопасности для рабочих процессов разработки, минимизируя риски, связанные с установкой вредоносных npm-зависимостей.