Крупная команда разработчиков в одном стартапе утром получила тревожный сигнал от облачного провайдера: кто-то начал проверять их ключи и токены из новой учетной записи. Источник оказался неожиданным — один из свежих пакетов в цепочке поставок, который установили для настройки среды и не заметили ничего подозрительного. Через такие пакеты злоумышленники добираются до секретов, а потом закрепляются в системе.
Какую проблему решаем
TrapDoor — это координированная атака через экосистемы npm, PyPI и Crates.io. Исследователи говорят о более чем 34 вредоносных пакетах и 384 версиях, которые публиковали волнами с нескольких аккаунтов.
Смысл атаки прост и неприятен: разработчик тянет в проект якобы полезную библиотеку, а вместе с ней получает кражу ключей, токенов, SSH-данных, данных браузера и переменных окружения. Для атакующих это прямой путь к облаку, репозиториям и внутренним сервисам.
Подобные кампании мы уже видели в атаках на цепочку поставок, и логика у них одна — ударить не по одной машине, а по рабочему процессу. Подробнее об этом можно посмотреть в разборе атаки через package.json и Linux-вредонос и в материале про ошибки в защите, которые почти гарантируют взлом.
Что подготовить
Если вы работаете с кодом, проверьте базовый набор защиты заранее:
- список разрешённых пакетов и источников;
- 2FA для учётных записей в репозиториях и у облачных провайдеров;
- отдельные токены для CI/CD и локальной разработки;
- запрет на хранение секретов в коде и
.envбез шифрования; - регулярную проверку зависимостей и lock-файлов;
- журнал изменений в сборке и публикации пакетов.
Для команд, которые используют автоматизацию, важна ещё одна вещь — контроль за тем, что именно запускается при установке. В атаке TrapDoor вредоносные действия шли через postinstall-хуки в npm, build.rs в Rust и автозапуск при импорте в Python.
Пошаговые действия
Один. Проверьте, откуда приходит зависимость
Смотрите не только на название пакета, но и на автора, историю версий и дату публикации. У TrapDoor названия специально выглядели как утилиты для crypto, DeFi, AI и настройки окружения.
Два. Ограничьте автозапуск при установке
В проектах с npm, Python и Rust стоит отдельно проверять хуки и скрипты сборки. Если пакет пытается что-то скачать, выполнить через shell или вызвать внешний интерпретатор, это повод остановиться и разобраться.
Три. Не держите секреты рядом с проектом
Ключи AWS, GitHub-токены, SSH-ключи и переменные окружения должны лежать в защищённом хранилище, а не в домашней папке разработчика. TrapDoor как раз искал локальные секреты и пробовал валидировать украденные токены через API.
Четыре. Разделяйте рабочие роли
У одного разработчика не должно быть одновременно прав на публикацию пакетов, доступ к продакшену и широкий доступ к облаку. Чем меньше прав у одного аккаунта, тем меньше ущерб от компрометации.
Пять. Следите за нетипичным закреплением
Атакующие ставили cron, systemd, Git hooks, shell hooks и использовали SSH для перемещения по сети. Любая внезапная запись в автозапуск, неожиданный hook или новая служба — это повод для проверки.
Если вам нужно дополнительно защитить рабочее устройство перед выездом из офиса или в поездке, посмотрите на практичный инструмент для приватного подключения как на один из элементов личного набора безопасности. Он не заменяет контроль зависимостей, но помогает снизить лишнюю видимость сетевой активности.
Как проверить себя
Быстрая самопроверка занимает меньше часа. Откройте список недавних установок и сборок, сравните lock-файлы с эталоном, проверьте, нет ли новых скриптов postinstall, build.rs, Git hooks и неожиданных cron-заданий.
Затем просмотрите журналы доступа к облаку и репозиториям: нет ли входов с новых устройств, запросов к токенам, странных публикаций или попыток смены ключей. Если пакет уже ставили, но поведение стало необычным, лучше считать его скомпрометированным до завершения проверки.
Что делать, если не получилось
Если вы нашли подозрительный пакет или следы его запуска, сразу снимите систему с сети, отзовите токены, смените пароли и ключи, а затем пересоберите окружение из чистого образа. Не пытайтесь «дочистить» рабочую машину вручную, если речь идёт о секретах и доступе к продакшену.
После этого проверьте соседние учётные записи, репозитории и облачные проекты. TrapDoor показывает, что атакующий редко останавливается на одной машине: если он добрался до секретов разработчика, следующий шаг — проникновение глубже в инфраструктуру.
Чек-лист на сегодня
- Проверить, какие пакеты вы ставили за последние дни и откуда они пришли.
- Посмотреть, есть ли в проектах неожиданные postinstall-скрипты,
build.rs, hooks и автозапуск. - Убрать секреты из локальных файлов и домашней папки разработчика.
- Сменить токены, если они могли попасть в чужие руки.
- Включить 2FA для репозиториев, облака и систем публикации пакетов.
- Ограничить права у аккаунтов, которые ставят, собирают и публикуют код.
- Проверить журналы на новые входы, публикации и попытки закрепления.
- Откатить сомнительные зависимости и пересобрать окружение из чистого источника.
Комментарии (0)
Будьте уважительны. Спам и ссылки на сторонние сервисы скрываются модерацией.
Пока комментариев нет. Вы можете быть первым.