За последние недели ряд опенсорс-разработчиков пострадали от фишинговых атак. В результате в пакеты, некоторые из которых насчитывают 30 млн загрузок в неделю, проникала малварь.

Toptal

В конце прошлой недели специалисты ИБ-компании Socket, сообщили о компрометации 10 пакетов npm, принадлежащей компании Toptal, которая представляет собой биржу для фрилансеров и помогает компаниям находить разработчиков, дизайнеров и финансовых экспертов. Кроме того, компания поддерживает собственные внутренние инструменты разработки и дизайн-системы, в частности Picasso, которые доступны через GitHub и NPM.

По данным исследователей, 20 июля 2025 года злоумышленники взломали GitHub Toptal и почти сразу сделали публичными все 73 репозитория компании, раскрыв все приватные проекты и исходные коды.

После этого атакующие модифицировали исходный код Picasso на GitHub, включив в него вредоносное ПО, и опубликовали 10 вредоносных пакетов в npm, маскируя их под легитимные обновления.

Злоумышленники внедрили в код пакетов малварь для кражи данных, которая собирала токены аутентификации GitHub, а затем удаляла данные из систем жертв. Так, хакеры внедрили вредоносный код в файлы package.json, чтобы добавить две функции: кражу данных (скрипт preinstall) и очистку хостов (скрипт postinstall).

При этом до обнаружения атаки зараженные пакеты успели загрузить около 5000 раз.

Вредоносным модификациям подверглись следующие пакеты:

  • @toptal/picasso-tailwind (3.1.0)
  • @toptal/picasso-charts (59.1.4)
  • @toptal/picasso-shared (15.1.0)
  • @toptal/picasso-provider (5.1.1)
  • @toptal/picasso-select (4.2.2)
  • @toptal/picasso-quote (2.1.7)
  • @toptal/picasso-forms (73.3.2)
  • @xene/core (0.4.1)
  • @toptal/picasso-utils (3.2.0)
  • @toptal/picasso-typography (4.1.4)

Toptal прекратила поддержку вредоносных пакетов 23 июля и вернула «чистые» версии. Однако компания не сделала никаких официальных явлений и не попыталась предупредить о рисках пользователей, загрузивших вредоносные версии пакетов.

Исследователи отмечают, что пока неясно, как именно осуществлялась эта атака, и как были связаны компрометация и изменения в репозитории GitHub и публикация пакетов в npm.

Другие взломы последних недель

Атака на Toptal  стала уже третьим за последние полторы недели инцидентом, связанным с атаками на опенсорсные цепочки поставок.

Так, еще 19 июля стало известно о взломе ряда популярных библиотек JavaScript, разработчики которых пострадали от целевого фишинга и кражи учетных данных.

В ходе одной атаки был скомпрометирован npm-пакет eslint-config-prettier, который насчитывает  более 30 млн загрузок в неделю. Его мейнтейнер JounQin подтвердил, что стал жертвой фишинговой атаки, получив письмо с адреса support@npmjs.com. Ссылка в этом послании вела на мошеннический npnjs[.]com, чего разработчик не заметил.

Другие пакеты (eslint-plugin-prettiersynckit@pkgr/core и napi-postinstall)  этого мейнтейнера тоже подверглись взлому.

В итоге компрометация затронула:

  • eslint-config-prettier (8.10.1, 9.1.1, 10.1.6, 10.1.7)
  • eslint-plugin-prettier (4.2.2,  4.2.3)
  • synckit (0.11.9)
  • @pkgr/core (0.2.8)
  • napi-postinstall (0.3.1)
  • got-fetch (5.1.11, 5.1.12)

В этом случае атакующие использовали украденные учетные данные для публикации нескольких версий пакетов с вредоносным кодом, ориентированным на заражение машин под управлением Windows.

Во вредоносных версиях пакетов скрипт install.js был настроен на запуск сразу после установки. Он содержал подозрительную функцию logDiskSpace(), которая, вопреки своему названию, пыталась выполнить node-gyp.dll, входящую в состав пакета, через системный процесс rundll32. В результате в системы жертв проникал стилер Scavanger.

Судя по сканированию на VirusTotal, эта DLL распознается как троян.

«Сопровождающий подтвердил, что его токен npm был скомпрометирован через фишинговое письмо, якобы пришедшее с npnjs[.]com. Злоумышленники использовали украденные учетные данные для публикации вредоносных версий нескольких пакетов, при этом не затрагивая репозитории на GitHub, что затруднило обнаружение атаки», — рассказывали аналитики Socket.

Так как Prettier и ESLint используются в тысячах проектов, исследователи предупреждали, что последствия этой компрометации могут быть разрушительными, поскольку внедренную в пакеты малварь весьма трудно удалить.

Вскоре после этой атаки разработчик Джордан Харбанд (Jordan Harband) предупредил, что популярный пакет is, который скачивают более 2,8 млн раз в неделю, тоже скомпрометирован. Версии 3.3.1-5.0.0 содержали малварь и были удалены примерно через шесть часов после публикации в npm.

Пакет is представляет собой легкую библиотеку JavaScript, которая предлагает широкий спектр функций для проверки типов и валидации значений. Библиотеку активно используют как низкоуровневую зависимость в инструментах разработки, тестовых библиотеках, сборочных системах, а также в бэкэнд- и CLI-проектах.

В данном случае взлом тоже стал результатом успешной фишинговой атаки с использованием упоминавшегося выше домена npnjs[.]com. У сопровождающего точно так же похитили учетные данные, а затем опубликовали модифицированные и вредоносные версии пакета.

В код is внедрили кроссплатформенный JavaScript-загрузчик малвари, который открывал в пострадавших системах бэкдор на базе WebSocket, делая возможным удаленное выполнение произвольного кода.

«После активации вредонос обращается к модулю os в Node.js, чтобы собрать имя хоста, сведения об операционной системе и процессоре, а также извлекает все переменные окружения из process.env, — объясняли специалисты Socket. — Затем он динамически импортирует библиотеку ws, чтобы передать эти данные через WebSocket-соединение. Каждое сообщение, полученное через сокет, интерпретируется как исполняемый JavaScript-код, что фактически предоставляет атакующему мгновенный интерактивный удаленный шелл».

Теперь разработчикам, работающим с любыми упомянутыми выше пострадавшими пакетами, рекомендуется убедиться, что ни одна из вредоносных версий не установлена и не используется в их продуктах.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии