В залежності від npm-пакету з установником PureScript
Проблему виявив один із нових мейтейнерів пакету, якому права на супровід були передані після багатьох розбіжностей та неприємних обговорень із початковим автором npm-пакету purescript. Нові мейнтейнери відповідають за компілятор PureScript і наполягали, що NPM-пакет з його установщиком повинен обслуговуватись тими ж супроводжуючими, а не сторонньою особою. Автор npm-пакету з установником PureScript довго не погоджувався, але потім поступився і передав доступ до репозиторію. При цьому деякі залежності залишилися під його керуванням.
Минулого тижня було випущено реліз компілятора PureScript 0.13.2 та
новими супроводжуючими було підготовлено відповідне оновлення npm-пакету з установником, в залежності від якого було виявлено шкідливий код. Зміщений з поста супроводжуючого автор npm-пакету з установником PureScript заявив, що його обліковий запис був скомпрометований невідомими атакуючими. Тим не менш, у поточному вигляді дії шкідливого коду обмежувалися лише саботажем установки пакета, який став першою версією нових супроводжуючих. Шкідливі дії зводилися до зациклювання з виведенням помилки при спробі встановити пакет командою "npm i -g purescript" без виконання явної шкідливої активності.
Було виявлено дві атаки. Через кілька годин після офіційного виходу нової версії npm-пакета purescript кимось була сформована нова версія залежності load-from-cwd-or-npm 3.0.2, зміни в якій призвели до того, що виклик loadFromCwdOrNpm() замість списку необхідних для встановлення бінарних файлів повертав потік
Через 4 дні, після того, як розробники розібралися в джерелі збоїв і готувалися випустити оновлення для виключення load-from-cwd-or-npm із залежностей, зловмисниками було випущено ще одне оновлення load-from-cwd-or-npm 3.0.4, в якому шкідливий код було прибрано. Проте майже відразу було випущено оновлення іншої залежності rate-map 1.0.3, в якій було додано виправлення, яке блокує callback-дзвінок для завантаження. Тобто. в обох випадках зміни в нових версіях load-from-cwd-or-npm та rate-map мали характер явної диверсії. Більше того, в шкідливому коді була перевірка, яка активувала збійні дії тільки при встановленні випуску від нових супроводжуючих і не виявлялася при встановленні старих версій.
Розробники вирішили проблему випуском поновлення, в якому проблемні залежності були видалені. Для того, щоб виключити осідання скомпрометованого коду на системах користувачів після спроби встановлення проблемної версії PureScript, рекомендується видалити вміст каталогів node_modules і файлів package-lock.json, після чого виставити в якості нижнього ліміту версію purescript 0.13.2.
Джерело: opennet.ru