и посмотреть медиа
Developer's Daily Life: Lead JS Blog
и посмотреть медиа
Blog of a leading JS developer about everyday work.
Blog of a leading JS developer about everyday work.
Personal blog of Lead JS Developer. Publications about IT daily life, useful practices, tools and experience. Insights for frontend and fullstack developers who want to develop in the JavaScript ecosystem.
#заметка дня В npm нашли ChainDrop — червя, который успел выпустить 2212 заражённых версий в 444 пакетах. Стартовой точкой стал [email protected]. После установки пакет искал npm-токены и, если находил, публиковал заражённые версии других пакетов, к которым у владельца токена был доступ. Так заражение пошло дальше по экосистеме и затронуло, среди прочих, flat-cache, file-entry-cache и cache-manager. Код запускался через preinstall. Пакет скачивал Bun с GitHub и выполнял обфусцированный скрипт, который собирал токены GitHub, npm, PyPI, AWS, GCP, Azure, Docker, Kubernetes, Vault и других сервисов. В GitHub Actions он ещё и пытался достать секреты из памяти runner-процесса. Заодно менялись конфиги Claude Code и VS Code. Поэтому заражённый репозиторий мог сработать не только при npm install, но и просто при открытии проекта или запуске агента. С keyv есть отдельный нюанс. Вредоносная версия была опубликована через официальный GitHub Actions workflow, с npm Trusted Publishing и валидной SLSA provenance. То есть provenance не была подделана. Она честно подтверждала, что пакет собран официальным workflow из конкретного коммита. Просто сам коммит уже содержал вредоносный код, потому что аккаунт мейнтейнера был скомпрометирован. Поэтому наличие attestation здесь ничего не гарантировало. Она подтверждает происхождение сборки, но не авторизованность изменений в репозитории. Если одна из заражённых версий попала в CI или локальное окружение, откатить пакет недостаточно. Токены и секреты, доступные этому окружению, придётся перевыпустить. StepSecurity #npm #attack
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!