В августе 2026 года в публичном репозитории npm появился пакет tw-pkgprobe-7731. Он представлялся официальным инструментом программы поиска уязвимостей, которую Twilio поддерживает для внешних исследователей. Разработчики, встраивающие сервисы связи Twilio в свои приложения, могли скачать его и лишиться ключей доступа к аккаунту. Из репозитория пакет убрали через час после публикации.
Описание
Повод для беспокойства даёт общая статистика. За весь 2024 год в npm выявили около 5308 уникальных вредоносных пакетов, не считая спама. С января по август 2026 года их число достигло 5723, то есть превысило результат предыдущих двенадцати месяцев всего за восемь месяцев. Рост продолжился. Одновременно участились случаи компрометации популярных библиотек, которым разработчики доверяют годами. С сентября 2025 года, когда появилась Shai-Hulud, возникло несколько её вариантов. Волна заражений в мае 2026 года доставляла ту же полезную нагрузку, что и первые версии. Атакующие захватывают учётные записи сопровождающих открытые проекты, применяют целевой фишинг и другие приёмы социальной инженерии. В заражённых библиотеках находили программы для кражи данных, средства удалённого доступа и самораспространяющихся червей.
Ответом на это стала предварительная проверка пакетов перед публикацией, о которой объявил npm. Система ищет признаки опасного поведения: несанкционированный запуск сценариев установки, необъяснимые изменения в архивах, попытки собрать учётные данные. Мера заметно усложняет жизнь тем, кто атакует цепочку поставок. Поток вредоносных пакетов при этом не иссяк - в мае 2026 года в репозитории снова нашлись сборки с той же нагрузкой, что и в свежих волнах Shai-Hulud.
Исследование ReversingLabs показало, что tw-pkgprobe-7731 не имеет отношения к Twilio. Автор опубликовал одиннадцать версий подряд 14 августа. Обычно новая версия развивает предыдущую, здесь логика оказалась иной. Первая сборка выдавала себя за "авторизованное исследовательское зондирование в рамках программы HackerOne" и уверяла, что работает только внутри изолированной среды Twilio и не выполняет разрушительных действий.
Дальше поведение менялось. Пакет проверял, принадлежит ли текущее окружение разработчику Twilio, и сразу завершал работу, если это не так. В остальных случаях он собирал сведения о системе: точки монтирования, временные каталоги, параметры конфигурации, имя хоста. Всё это вместе с настройками окружения уходило на внешний адрес через вебхук. Версии с 1.0.1 по 1.0.3 искали каталоги, связанные с конкретными идентификаторами аккаунтов Twilio, и при совпадении внедряли в проект посторонний пакет. Появилась и прямая кража: в версии 1.0.4 идентификатор аккаунта и секретный токен доступа отправлялись наружу. Последние три сборки вернулись к безобидному профилю первых выпусков. Две заключительные пытались исследовать служебные узлы Twilio и запрашивали метаданные облачной инфраструктуры, хотя добычу никуда не передавали.
Правила программы Twilio не оставляют сомнений в намерениях автора. Исследователи обязаны писать с корпоративного адреса в домене HackerOne и давать тестовым пакетам имена по строгой схеме. Публиковать чужие данные запрещено при любых обстоятельствах. Название tw-pkgprobe-7731 схеме не соответствует, а учётная запись для публикации с программой не связана. Специалисты ReversingLabs сообщили о находке в npm, и пакеты сняли с публикации в течение часа.
Квалификация автора оказалась невысокой. Код не запутан, имя не подделано под известную библиотеку, аккаунт не выглядит правдоподобно. Для сравнения: годом ранее обнаружили два пакета из крупной кампании, где дополнительный код загружался через блокчейн-контракты, а репозитории на GitHub выглядели солидно за счёт накрученных звёзд и подписчиков. В марте 2026 года другой автор показывал поддельные журналы установки и выманивал пароль администратора, чтобы затем запустить программу удалённого доступа. Схема с Twilio проще и грубее, но цели у неё те же.
Что вообще стоит за учётными данными, ради которых всё затевалось. Twilio с 2008 года продаёт программируемые средства связи: разработчики подключают через её программный интерфейс звонки, текстовые сообщения, письма и многофакторную аутентификацию. Два ключа - идентификатор аккаунта и секретный токен - дают доступ к биллингу и отправке сообщений. Twilio прямо предупреждает в документации, что хранить их нужно в тайне, поскольку обладатель пары может обращаться к интерфейсу от имени владельца.
Риски для бизнеса конкретны. Потеря ключей позволяет рассылать спам от имени компании, перехватывать одноразовые пароли, приходившие клиентам, и наращивать счета за использование интерфейса. Утечка данных оборачивается репутационными и юридическими последствиями. Разработчикам стоит выдавать ключам минимальные права, менять их по графику, включить двухфакторную аутентификацию в реестре пакетов и проверять зависимости до сборки. Бесплатный сервис Spectra Assure Community от ReversingLabs помогает искать открытые пакеты по базе и проверять их на скрытые угрозы и уязвимости. История с tw-pkgprobe-7731 напоминает о простом правиле: имя в реестре пакетов ничего не гарантирует, а проверять чужие сборки дешевле, чем разбираться с последствиями их запуска.
Индикаторы компрометации
Package
- tw-pkgprobe-7731 1.0.0
- tw-pkgprobe-7731 1.0.1
- tw-pkgprobe-7731 1.0.2
- tw-pkgprobe-7731 1.0.3
- tw-pkgprobe-7731 1.0.4
- tw-pkgprobe-7731 1.0.5
- tw-pkgprobe-7731 1.0.6
- tw-pkgprobe-7731 1.0.7
- tw-pkgprobe-7731 1.0.8
- tw-pkgprobe-7731 1.1.0
- tw-pkgprobe-7731 1.1.1
SHA256
- 16574bd0538e6ae0ad4b7c73cd85c1232478f57d
- 19c886b57a0c86e1efc82f4c4f2691f3ddc9f92c
- 35b21553837b74e1fc5ac43efd839cdc28109fdf
- 3fb29cf1ef3ce6b187e724c8e7dc4b6a5dfefa50
- 7108c1079ac0de030902b049770e8cb822e82055
- 985c294988e80f17414fb371b690080ee57387ea
- c87db83ee84ae03b97b3cb11b07ad75a6c2a39ae
- d11da34ecdc3ff768fbe79a0aaf12f2340c2dd90
- ea40177789e7a1b972c27c61dffff195dd85c544
- fbc422912fa5af59ba278b30d8c1707e0fd1711b
- fe4b42d7cf37ef2137fe5259626d51cb9922309e