Атаки на цепочки поставок программного обеспечения остаются одним из наиболее изощрённых и опасных векторов угроз, нацеленных на разработчиков. Если в прошлом году сообщество потряс первый в истории червь для репозитория открытого кода Shai-hulud, то текущий год демонстрирует эволюцию тактик: злоумышленники всё чаще маскируют вредоносные действия под легитимные процессы, чтобы обмануть даже опытных специалистов. Исследовательская группа ReversingLabs обнаружила новую кампанию в репозитории npm, получившую название Ghost, которая использует принципиально новую технику сокрытия: пакеты генерируют в консоли фальшивые логи установки, имитирующие работу менеджера пакетов npm, чтобы скрыть фишинг пароля sudo и загрузку вредоносной полезной нагрузки.
Описание
Кампания была активна с начала февраля и первоначально включала семь пакетов, опубликованных под учётной записью mikilanjillo. Типичным примером является пакет "react-state-optimizer-core", который позиционирует себя как лёгкий инструмент для управления асинхронным состоянием в React-приложениях. Однако его истинная цель далека от заявленной функциональности. Сложность атаки заключается не в финальной полезной нагрузке, представляющей собой стандартный загрузчик, а в механизме обмана жертвы. После установки пакет запускает скрипт, который выводит в терминал правдоподобные, но полностью сфабрикованные сообщения о ходе установки зависимостей, включая названия несуществующих пакетов, случайные задержки и даже индикатор выполнения.
Именно на фоне этого правдоподобного шума и происходит ключевой этап атаки - фишинг. В определённый момент скрипт выводит сообщение об ошибке или необходимости "оптимизации" и запрашивает у пользователя пароль sudo. Поскольку весь процесс выглядит как стандартная установка через npm, у разработчика не возникает подозрений, и он вводит свои привилегированные учётные данные. Полученный пароль впоследствии используется для выполнения финальной стадии атаки, при этом в терминал продолжают выводиться фальшивые логи, создавая иллюзию штатной работы. Исследователи ReversingLabs обнаружили подозрительную активность в пакете "react-state-optimizer-core" с помощью автоматизированной системы обнаружения Spectra Assure, после чего подтвердили его вредоносную природу.
После кражи пароля загрузчик получает доступ к финальной стадии. URL-адрес для загрузки финальной полезной нагрузки и часть ключа для её расшифровки в большинстве обнаруженных пакетов извлекаются из публичного канала в Telegram. Интересное исключение - пакет "coinbase-desktop-sdk@1.5.19", который вместо Telegram использует пост на платформе teletype.in, связанный с технологией Web3, чтобы скрыть необходимые данные. Финальный вредонос представляет собой удалённого трояна (RAT, Remote Access Trojan), предназначенного для кражи данных криптокошельков и другой конфиденциальной информации, а также для выполнения команд с управляющего сервера злоумышленников (C2, Command and Control).
Вопрос о происхождении кампании остаётся открытым. Существует вероятность, что обнаруженные в феврале пакеты являются первой волной более широкой атаки. В пользу этого говорит публикация компании JFrog от 8 марта о новом вредоносном пакете "@openclaw-ai/openclawai", который использует схожие техники фишинга и подделки вывода в консоль, хотя и задействует другую инфраструктуру для доставки. Альтернативная версия предполагает, что исследователи ReversingLabs обнаружили раннюю "тестовую" версию этой кампании. На это указывает наличие отладочных сообщений в некоторых пакетах, например, в "coinbase-desktop-sdk@1.5.14", которые могли бы помочь разработчикам вредоноса в отладке, но при этом демаскируют атаку для жертвы.
Вне зависимости от происхождения, кампания Ghost демонстрирует тревожный тренд: злоумышленники уделяют всё больше внимания социальной инженерии и маскировке внутри самой среды разработки. Имитация привычных процессов установки пакетов значительно повышает шансы на успех атаки, так как снижает бдительность даже технически подкованных пользователей. Этот инцидент в очередной раз подчёркивает критическую важность принципа наименьших привилегий в рабочих средах, необходимости проверки репутации устанавливаемых зависимостей, даже из официальных репозиториев, и использования решений для безопасной разработки (DevSecOps), способных анализировать поведение пакетов после установки. Мониторинг открытых репозиториев на предмет подобных изощрённых кампаний становится обязательным элементом защиты цепочки поставок программного обеспечения.