Среди прочего, вредоносные обновления были выпущены для пакетов debug, chalk, ansi-styles, color-convert, wrap-ansi, supports-color и ansi-regex, имеющих более 200 млн загрузок за последнюю неделю. Отдельно выделяются пакеты chalk и debug, которые имеются в прямых зависимостях у 129286 и 55289 NPM-пакетов. Пакеты были скомпрометированы из-за утечки параметров учётной записи Джоша Джунона (Josh Junon), который является сопровождающим debug-js, chalk и множества библиотек для консольных приложений.
В ходе фишинга сопровождающему от имени проекта NPM было отправлено email-уведомление о необходимости обновить параметры двухфакторной аутентификации. В письме было сказано, что пользователь не обновлял данные двухфакторной аутентификации более 12 месяцев и 10 сентября для предотвращения неавторизированного доступа все учётные данные с необновлёнными параметрами 2FA будут заблокированы.
Сообщения отправлялись с адреса "support@npmjs.help" и вели на сайт npmjs.help, воспроизводящий сайт npmjs.com. Судя по всему, для введения пользователя в заблуждение использовались те же методы, что и для прошлых атак на PyPI, NPM и addons.mozilla.org, в которых для обхода защиты учётной записи при помощи двухфакторной аутентификации и создания ощущения работы с реальным каталогом NPM применялось прозрачное проксирование трафика с фишингового сайта на реальный сайт. Организовав работу npmjs.help как прокси для доступа к npmjs.com, атакующие контролировали весь трафик, включая активность на страницах ввода пароля входа и запроса второго фактора аутентификации.
В выпущенные атакующими обновления пакетов был подставлен вредоносный код, выполняемый на системах пользователей, работающих с сайтами или приложениями, использующими скомпрометированные версии пакетов. Вредоносная вставка для браузеров осуществляла перехват трафика и активности Web API, прикрепляя свои обработчики к функциям fetch и XMLHttpRequest, а также вмешивалась в работу типовых интерфейсов криптокошельков для скрытой подмены реквизитов получателя при переводе. Подмена осуществлялась на уровне модификации значений в запросах и ответах, незаметно для пользователя (в интерфейсе пользователя показывались корректные реквизиты). Поддерживались форматы транзакций Ethereum, Bitcoin, Solana, Tron, Litecoin и Bitcoin Cash.
В некоторых анонсах атаки на рассматриваемые NPM-пакеты также упоминается вредоносный код, выполняющий сбор и отправку ключей шифрования, паролей и токенов во время установки или запуска пакета. Детали по данной форме вредоносной вставки пока не приводятся.
Cкомпрометированные пакеты:
| Пакет | Пиковое число загрузок в неделю | Число зависимостей | Версия с вредоносным кодом | ||||
| ansi-styles | 524 млн | 3695 | 6.2.2 | ||||
| debug | 465 млн | 55289 | 4.4.2 | ||||
| supports-color | 450 млн | 4298 | 10.2.1 | ||||
| chalk | 436 млн | 129286 | 5.6.1 | ||||
| strip-ansi | 326 млн | 9668 | 7.1.1 | ||||
| color-convert | 313 млн | 3678 | 3.1.1 | ||||
| color-name | 312 млн | 3214 | 2.0.1 | ||||
| ansi-regex | 302 млн | 3238 | 6.2.1 | ||||
| wrap-ansi | 235 млн | 6275 | 9.0.1 | ||||
| is-arrayish | 90 млн | 1528 | 0.3.3 | ||||
| slice-ansi | 81.8 млн | 903 | 7.1.1 | ||||
| error-ex | 64.7 млн | 1544 | 1.3.3 | ||||
| color | 35 млн | 4343 | 5.0.1 | ||||
| supports-hyperlinks | 31.5 млн | 792 | 4.1.1 | ||||
| color-string | 31 млн | 411 | 2.1.1 | ||||
| simple-swizzle | 29.5 млн | 121 | 0.2.3 | ||||
| has-ansi | 19.7 млн | 422 | 6.0.1 | ||||
| chalk-template | 4.6 млн | 139 | 1.1.1 | ||||
| backslash | 298 тысяч | 65 | 0.2.1 |
Дополнение: Зафиксирован захват контроля и подстановка вредоносного кода для ещё 5 модулей. Также приведена предварительная оценка числа загрузок версий с вредоносным ПО, по данным Jfrog пакеты с вредоносной вставкой были загружены более 2.5 млн раз.
| Пакет | Пиковое число загрузок в неделю | Число зависимостей | Версия с вредоносным кодом | ||||
| duckdb | 242 тысячи | 61 | 1.3.3 | ||||
| @duckdb/duckdb-wasm | 170 тысяч | 43 | 1.3.3 | ||||
| @duckdb/node-api | 81 тысяча | 33 | 6.2.2 | ||||
| @duckdb/node-bindings | 82 тысячи | 1 | 1.29.2 | ||||
| @coveops/abi | 551 | 0 | 2.0.1 |
Источник: https://www.opennet.ru/opennews/art.shtml?num=63845
(opennet.ru, основная лента)
