Виявлено невідомий малваре в NPM після двох років.
Дослідники з безпеки компанії Socket виявили в реєстрі NPM вісім шкідливих пакетів, які тихо накопичили понад 6200 завантажень з червня 2023 року до серпня 2024 року. Ці пакети, замасковані під назви популярних бібліотек React, Vue та Vite, використовували таймери для активації шкідливих дій, спрямованих на пошкодження або видалення даних в середовищах розробки Windows та Linux.
Огляд атаки
Кожен з восьми пакетів, що використовують техніку “typosquatting”, реалізував одну або кілька руйнівних тактик:
- Цілеспрямоване видалення файлів — видалення
node_modules/vue/dist
або інших артефактів фреймворку за допомогою команд оболонки, що не залежать від ОС. - Пошкодження прототипів — ін’єкція випадкових байтів в
Object.prototype
, що призводить до збоїв у логіці основного застосунку. - Саботаж браузерного сховища — пошкодження localStorage, sessionStorage та IndexedDB, що викликає періодичні збої в аутентифікації та втрату стану користувача.
- Примусове завершення роботи — використання
process.exit(1)
разом із системними сигналами для раптового перезавантаження хоста, що порушує CI/CD процеси.
Технічний аналіз
Шкідливе ПЗ використовує заздалегідь визначені дати активації. Ось приклад коду:
if (Date.now() >= new Date('2023-07-15T00:00:00Z').getTime()) {
// виконати руйнівні дії
}
Щоб уникнути статичного аналізу, ключові функції кодуються в base64 і розпаковуються під час виконання за допомогою Buffer.from(...)
та eval()
. Динамічне вирішення шляхів між платформами реалізується так:
const sep = process.platform === 'win32' ? '\' : '/';
const target = [__dirname, 'node_modules', 'vue', 'dist'].join(sep);
fs.rmSync(target, { recursive: true });
Вплив у реальному світі
Одна фінансово-технологічна компанія, яка встановила vue-plugin-bomb
, зазнала катастрофічних збоїв на етапі тестування за кілька годин до важливого релізу. Команди реагування витратили понад вісім годин на відновлення з резервних копій, що підкреслює, як такі приховані загрози можуть зупинити цикли розробки та підірвати довіру розробників.
Вплив на ланцюг постачання
Ця кампанія підкреслює зростаючу загрозу атак на ланцюг постачання в екосистемах з відкритим вихідним кодом. У 2024 році випадки шкідливих атак на NPM зросли більш ніж на 30%, що змусило npm, Inc. та GitHub впровадити обов’язкову двофакторну аутентифікацію, автоматизоване сканування tarball та вдосконалені політики простору імен.
“Поєднання тайм-залежних шкідливих дій і typosquatting створює приховані атаки, які уникають поверхневого аналізу коду,” застерігає доктор Єва Чен, керівник безпеки OpenSSF. “Впроваджуйте відтворювальні збірки та криптографічне підписування коду для раннього виявлення аномалій.”
Стратегії пом’якшення ризиків
- Впроваджуйте обов’язкову 2FA для всіх утримувачів npm та пакетів з високим ризиком.
- Інтегруйте SAST/SCA інструменти, такі як Snyk, GitHub Dependabot або npm audit у CI/CD процеси.
- Перевіряйте контрольні суми tarball та фіксуйте прямі та транзитні залежності.
- Використовуйте приватні реєстрації або офлайн дзеркала (наприклад, Verdaccio) для перевірки зовнішніх пакетів перед використанням.
- Використовуйте прапори примусової дії lockfile (наприклад,
--immutable
у Yarn) для запобігання несанкціонованим оновленням.
Найкращі практики для розробників
Регулярно запускайте npm audit
або yarn audit
, уникайте широких діапазонів semver (^
або ~
) та слідкуйте за незвичними сплесками завантажень пакетів або колізіями назв. Навчайте команди розпізнавати патерни typosquatting та аномальні скрипти після установки.
Перспективи на майбутнє
У відповідь на зростаючі загрози ланцюга постачання, NPM v8 планує включити шифрування для кожного пакета та вбудовану метадані про походження. Тим часом Технічний комітет Node.js оцінює нові механізми перевірки цілісності під час резолюції модулів, щоб заблокувати несанкціоноване виконання коду.
Висновок
Виявлення цих руйнівних пакетів NPM є яскравим нагадуванням про те, що екосистеми з відкритим вихідним кодом вимагають суворої безпеки. Поєднуючи технічні заходи, безперервний моніторинг і навчання розробників, організації можуть значно знизити ризик прихованого саботажу ланцюга постачання.