The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Фишинг позволил получить контроль над несколькими популярными NPM-пакетами

21.07.2025 08:19

Зафиксирована фишинг-атака на сопровождающих JavaScript-библиотеки, в ходе которой от имени сервиса NPM было разослано сообщение, уведомляющее о необходимости подтвердить свой email. Проведённая атака позволила злоумышленникам получить NPM-токены сопровождающего одного из крупных JavaScript-проектов и выпустить обновления с вредоносным кодом для пяти NPM-пакетов, в сумме насчитывающих около 100 млн загрузок в неделю.

Отправленное сопровождающим сообщение было стилизовано под типовые уведомления NPM, отправляемые с адреса "[email protected]", но в качестве ссылки для перехода был указан домен "npnjs.com" вместо "npmjs.com" (третья буква "n" вместо "m"). Атакующие воспользовались психологическим эффектом, из-за которого мозг, предвосхищая ожидаемый результат, не замечает незначительные искажения, такие как замена букв на похожие или изменение порядка следования букв в слове. При переходе по ссылке открывалась полная копия сайта npmjs.com (вероятно, был настроен прокси, перехватывающий токен доступа).

В ходе атаки были сформированы новые версии пакетов:

В сформированные выпуски был добавлен вредоносный код для атаки на пользователей, использующих платформу Windows. Внесённые изменения загружали библиотеку node-gyp.dll, содержащую функциональность для удалённого выполнения команд в системе.

Сопровождающий заметил, что стал жертвой фишинга примерно через час после поступления первой жалобы о публикации подозрительных релизов. Он сразу отозвал токен доступа, поменял пароли и пометил проблемные версии устаревшими для предотвращения загрузки автоматизированными сборочными системами и отправил запрос на удаление проблемных версий из репозитория в службу поддержки NPM.

Не уточняется сколько пользователей успело загрузить вредоносные версии (например, вредоносная версия пакета eslint-plugin-prettier оставалась в репозитории около двух дней). За прошлую неделю пакет eslint-config-prettier насчитывал 30 млн загрузок и использовался в качестве зависимости у 11762 тысячи пакетов, пакет eslint-plugin-prettier - 21 млн загрузок (8468 зависимых пакетов), synckit - 18 млн, @pkgr/core - 16 млн и napi-postinstall - 10 млн.

Дополнение: Выявившие фишинг-атаку исследователи несколько дней назад также обратили внимание на 28 NPM-пакетов, авторами которых было включено изменение категории Protestware. Изменение приводило к воспроизведению украинского гимна и отключению обработки событий от мыши на сайтах в доменных зонах "ru", "su", "by" и "рф", если пользователь ранее уже открывал сайт более трёх дней назад и в его браузере была включена поддержка русского языка. Изначально изменение было реализовано около трёх лет назад в пакете Sweetalert2, насчитывающем 700 тысяч загрузок в неделю и используемого в 2403 других пакетах как зависимость. Наличие протестной активности было отдельно упомянуто на странице проекта. Через какое-то время изменение стало заимствоваться авторами других пакетов, как правило насчитывающие несколько сотен загрузок в неделю.

  1. Главная ссылка к новости (https://socket.dev/blog/npm-ph...)
  2. OpenNews: Злоумышленники смогли внедрить бэкдор в NPM-пакет от разработчиков криптовалюты XRP
  3. OpenNews: Утечка пользовательской базы списка рассылки автора сервиса HaveIBeenPwned
  4. OpenNews: Из-за опечатки в настройках атакующие могли подменить DNS-сервер MasterCard
  5. OpenNews: В NPM-пакет node-ipc внесено вредоносное изменение, удаляющее файлы на системах в России и Беларуси
  6. OpenNews: Разработчик внёс деструктивные изменения в NPM-пакеты colors и faker, применяемые в 20 тысячах проектов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63610-npm
Ключевые слова: npm, phishing
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:22, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    Ну а чего вы ждали от людей, считающих нормой подключать библиотеку для проверки четности числа?
     
     
  • 2.4, Аноним (4), 09:28, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ты утрируешь немного, но да тот же dayjs получше будет, чем велосипед от васяна для дат.
     
     
  • 3.43, Аноним (43), 12:26, 21/07/2025 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
  • 3.69, morphe (?), 20:38, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Все нормальные браузеры уже умеют Temporal API:
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objec
     
  • 2.5, Аноним (5), 09:29, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –8 +/
    1. Никто не считает нормой: is-odd имеет 700,000 установок в неделю, что совсем мало по меркам популярных (часть нормы) пакетов -- десятки миллионов.
    2. Библиотеки в npm более узкоспецифичны, и релизятся значительно чаще сишных аналогов. Там, где у си единый комбайн GTK с плеядой функционала, в npm отдельно поставляются: реакт только для возможности создавать компоненты, библиотека для управления дизайн-токенами, библиотека для стилизации, библиотека для отрисовки прикольного одного компонента. Это неплохой подход -- уж точно позволяет обновлять их независимо, а не ждать месяцами, пока комбайн GTK обновится.
     
     
  • 3.9, Аноним (9), 09:55, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сам-то понял, что написал?
     
     
  • 4.15, Аноним (5), 10:40, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Что из написанного ты не понял?
     
     
  • 5.55, 1 (??), 15:18, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вам не кажется, что npm и GTK попендикулярны ?
     
  • 5.68, 12yoexpert (ok), 19:38, 21/07/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.20, Tron is Whistling (?), 10:55, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Заодно позволяет аккуратно впилить бэкдор так, что все эти тысячи хомячков, делающие по тысяче загрузок по штуке на сборку после каждой правки - ничего вообще годами не заметят.
     
     
  • 4.22, Аноним (4), 10:57, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А ситуация в пыховом компосте прямо кардинально противоположная?
     
     
  • 5.34, Аноним (1), 11:22, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Покажи новость про фишинговую атаку на пыховый композер, обсудим.
     
  • 4.24, Аноним (5), 10:58, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты же про XZ Utils, верно? Везде, где ты скачиваешь чужой код, есть риски. Но хомячки и далее будут скачивать сгенеренный кем-то тарбол вместо чекаута гита.
     
     
  • 5.27, Tron is Whistling (?), 11:01, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Видишь в чём прикол - в XZ Utils таки обнаружили.
    А здесь - вложил версию 0.1.2.3.4567890 с бэкдором, подождал ДЕСЯТЬМУЛЬОНОВЗАГРУЗОК, вложил 0.1.2.3.4567891 - 99.99999999999% из этих ДЕСЯТЬМУЛЬОНОВЗАГРУЗОК даже смотреть не будет, чего там изменилось.
     
     
  • 6.29, Аноним (5), 11:05, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > в XZ Utils таки обнаружили

    Ага, а сабжевая новость про что? Про то, что фишинг не обнаружили? Давай почитаем: "Зафиксирована фишинг-атака..." Значит обнаружили все-таки?

    > даже смотреть не будет, чего там изменилось

    Посмотри, сколько пакетов установлено у тебя в системе. В любом может быть бэкдор, потому что твой дистр качает сгенеренные тарболы вместо чекаута гита.

     
     
  • 7.47, Tron is Whistling (?), 12:32, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вот как раз чекаут гита лучше и не трогать. Тарбаллы так-то подписаны, и качает он их тьфу-тьфу с мегамонстра (орацл), который ни разу не публичная репо-помойка.
     
  • 7.67, Аноним (67), 18:35, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И, конечно, все чеканутые коммиты подписаны? Нет? А тарболлы - да.
    А если ты исходники после распаковки тарболла не проверил, то и после джит-пулла, очевидно, не проверишь.
     

  • 1.2, Аноним (4), 09:23, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Интересно, на опеннете постоянно появляются новости про фишинг в npm, а почему про пыховский компост нет новостей: мол, там нет уязвимостей?
     
     
  • 2.10, жявамэн (ok), 09:56, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    у нормальных языков все нормально с администрированием репозиторием
     
     
  • 3.17, Аноним (4), 10:52, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    вы хотите сказать, что пых - нормальный язык? может и так, но вот библиотеки на пыхе в компосте пишутся не разработчиками пыха, а васянами со всего света, вот так то! и на пыхе можно по-разному программировать.
     
  • 2.11, penetrator (?), 09:59, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –6 +/
    так пыха мертвая, доживает свои последние дни в виде крупных проектов прошлых лет

    никто не тянет ее на сайт, авторов нет

     
     
  • 3.18, Аноним (4), 10:53, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    дык, вроде в e-commerce пыха всё ещё активно юзается и в разных сайтиках на laravel, разве нет? не знаю, поэтому спрашиваю.
     
  • 3.19, Аноним (-), 10:54, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    К сожалению все ещё самый популярный язык в вебе. Вся их проблема в том что они сильно усложнили в одной из версий, когда появилась груша, автозагрузчики файлов и много пользователей не разобрались, посчитали что все стало сильно сложно, хотя это правда.
     
  • 3.28, Аноним (28), 11:05, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > так пыха мертвая, доживает свои последние дни

    Зачем так сразу? Но нет ничего невозможного. Учитесь у старших ТОВАРИЩЕЙ - готовьте народ постепенно (окно Овертона).

     

  • 1.6, Tron is Whistling (?), 09:42, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Отличная новость. Лишний раз подтверждает очевидное - норму жизни публичных помоек кода.
     
     
  • 2.12, Аноним (12), 10:04, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    По сути сделай такой же сайт - скажут, что зеркало. Имею ввиду публично никто ничего не поймет. Т.к. сейчас блокировки и все остальное.. под шумок - зеркало и все.

    Фишинг не лечится обычным путем, т.к. человеческий фактор сразу сыграет в пользу мошенников.

    Все же фильтры необходимы. Локальные.

     
     
  • 3.13, Tron is Whistling (?), 10:10, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Мозги необходимы... локальные...
     
     
  • 4.16, Аноним (12), 10:47, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Человеческий фактор.
     
  • 2.31, Аноним (-), 11:09, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да у меня дорогой ребенок недавно вирусняк на Андроид с плей-стор Гугла поставил. О чем речь?
    А что вы предлагаете вместо? Вернуться к дискам? Так проблема то была в пиратстве.
    Вы знаете я не осуждаю, сам был когда-то мал и беден, и скачивал весьма многие программы и видео (в основном для образования), но если у вашей семьи есть деньги или вы уже взрослый и зарабатываете - кто вам мешает купить, да честно поступить? Вы знаете я даже купил старые книги, которые уже давно прочёл когда денег не было просто чтоб отблагодарить автора (надеюсь это помогло).
     
     
  • 3.46, Tron is Whistling (?), 12:31, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вирусняк на андроид? Ну так ещё поставьте туда свои банк-клиенты, будет действительно дорогой ребёнок.

    А в целом ваш пост - про бузину и дядьку.

     
  • 2.54, Аноним (54), 15:17, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так фишинг может везде быть запрятан:
    21-й: https://cnews.ru/link/n533617
    23-й: https://www.forbes.ru/tekhnologii/484840-group-ib-rasskazala-o-napadenii-kitaj
    24-й: https://cnews.ru/link/n609984
     

  • 1.8, Аноним (8), 09:53, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Такие атаки должны выявляться браузером: переход на ранее не посещенный адрес, который отличается одной или похожими буквами от адреса в истории посещения.
     
     
  • 2.14, dannyD (?), 10:34, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну да, давай встроим в бровзер ИИ )))
     
     
  • 3.23, Tron is Whistling (?), 10:57, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > ну да, давай встроим в бровзер ИИ )))

    ИИ уже впору пользующимися всеми этими NPM встраивать...

     
  • 3.25, Аноним (8), 10:59, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ИИ там нам нах не нужон! Нужна довольно примитивная и легковесная эвристика.
     
     
  • 4.45, Аноним (45), 12:31, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Любую твою вристику можно обмануть узнав алгоритм. У ИИ алгоритм скрыт.
     
     
  • 5.59, Аноним (8), 16:00, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Надо чтобы такие убогие атаки, как подмена одной буквы и т.п. не срабатывали. Пусть даже все правила эвристики будут известны.
     
  • 2.32, Аноним (32), 11:12, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Уже выявляются. Посмотри настройки какого-нибудь Эджа
     
  • 2.37, Аноним (45), 11:33, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Браузер никому ничего не должен он уверенный в себе субъект.
     
     
  • 3.48, Аноним (28), 12:42, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если человек не пишет код сам, а собирает его по файловым помойкам, ему уже ничто не поможет - ни браузер, ни ИИ, ни браузер с ИИ, не IDE с ИИ или без, ни антивирус. Другое дело - работодателя ситуация устраивает.
     
     
  • 4.56, 1 (??), 15:21, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скоро ИИ будет сам собирать код по файловым помойкам.

     
     
  • 5.61, Аноним (61), 16:17, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не это ли было целью ИИ - проделать дверь изнутри?
     
  • 5.63, Аноним (63), 16:41, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так уже. Разве гитхаб, на которой столуется копилот - не мусорный бак?
     

  • 1.21, Ананимаз (?), 10:57, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    надеюсь лефтпад не пострадал. Держу кулачки.
     
  • 1.38, Аноним (38), 11:41, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Почитайте тикет по ссылке, там целая драма. В ответ на сообщение о нездоровых изменениях и публикации пакетов чел пишет "Похоже что у кого-то утёк токен!". А ему отвечают "Опубликовал эти пакеты ты, так что это наверное твой токен утёк". И он наконец-то раздупляется и сообщает, что стал жертвой фишинга.
     
     
  • 2.42, Аноним (28), 12:11, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это нормальный прием в определенных кругах - сочинять всё новые доводы, пока какой-нибудь из них не убедит собеседника (собеседников). Одни делают вид, что говорят правду, другие делают вид, что им верят.
     

  • 1.40, Аноним (40), 11:54, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Зачем нам клиентский JS, когда есть Траст?
     
  • 1.51, Аноним (51), 13:45, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Поэтому логины и пароли нужно хранить в браузере, который не будет автоматически их подставлять в форму, если домен подменили. Когда же они научатся?
     
     
  • 2.52, Аноним (52), 14:29, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Половина сайтов написаны обезьянами и в них пароль не подставляется и без подмены домена, к этому все привыкли, поэтому просто будут вводить пароль на левом сайте.
     
  • 2.53, Аноним (4), 14:45, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В localStorage, которое подвержено XSS или где?
     

  • 1.57, Аноним (57), 15:32, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Нужна безальтернативная двухфакторная аутентификация по хардварным ключам и криптографические подписи релизов. В идеале, запрет публикации любого  кода, в котором есть непописанные коммиты. Всё остальное полумеры, которые не будут работать.
     
  • 1.58, Аноним (58), 15:44, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    M и N на клавиатуре рядом находится. Это баг!
     
     
  • 2.62, Аноним (8), 16:29, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да понятно, что отправитель письма просто опечатался. К нему претензий быть не может ).
    Виноват невнимательный юзер.
     

  • 1.65, Аноним (65), 17:41, 21/07/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно девки пляшут, сервис почти что критической инфраструктуры не имеет даже SPF/DMARC записей в ДНС, что позволяет спокойно слать фишинговые письма (рукалицо)
     
     
  • 2.66, Аноним (67), 18:24, 21/07/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А вы как хотели? Тыртырпрайз. Сурьёзный бизнес. Сурьёзные дяди проглядели что их рабы, вместо гребли на галерах, были слишком заняты поливанием помоями сообщества в комментариях на Опеннете. Сократят бюджет подхалимам, увеличат - эйчеркам, schеки подсдуются, хвocты подберутся, и всё наладится. (Нет.)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру