Нова заплаха за веригата за доставки засегна софтуерните екипи, след като атакуващи внедриха злонамерен софтуер в доверени библиотеки с отворен код.
На 28 юли 2026 г. в регистъра npm се появиха злонамерени бета версии на два пакета на Joyfill. Библиотеките @joyfill/components и @joyfill/layouts се използват за създаване на формуляри и оформления в множество уеб приложения.
Всеки, който е импортирал тези бета версии, може да активира скрития код без нужда от класически инсталационен скрипт. Злонамереният код отваря канал за отдалечен контрол и впоследствие се опитва да открадне тайни данни на разработчици от работната станция.
Съвети като изпълнение на npm install с опция за игнориране на скриптове не спират тази заплаха, тъй като кодът се намира в самите пакети.
Анализаторите от StepSecurity идентифицираха кампанията, след като автоматизирани сканирания маркираха една от версиите на layouts като критична. В доклад, споделен с Cyber Security News (CSN), StepSecurity посочва, че един и същ обфускиран имплант се появява и в двата пакета и то само в публикуваните архиви (tarballs), но не и в изходния код на проекта. Компанията потвърди констатацията чрез изпълнение в изолирана среда и чрез сравняване на злонамерените версии с по-ранни безопасни версии.
Въздействието надхвърля границите на единичен проект. След като се активира, злонамереният софтуер може да се внедри в инструменти, които разработчиците използват ежедневно, включително редактори на код и глобалния интерфейс на командния ред на npm. Това поведение, подобно на компютърен червей, означава, че една заразена машина може непрекъснато да презарежда заплахата и да я предаде в нови пакети. Екипите, които са изтеглили някоя от предварителните версии на 2773, трябва да третират тези машини като компрометирани, докато не бъдат почистени.
Този случай се вписва в по-широк модел на злоупотреба с отворен код, при който атакуващите предпочитат компрометиране на реални проекти вместо използване на фалшиви имена.
Веригата на атаката има пет етапа, които започват в момента, в който дадено приложение импортира пакета:
- Скрит зареждащ модул първо задава маркер за кампанията и излага функции на Node под кратки глобални имена.
- След това той чете публични данни от блокчейн, за да разбере къде се намира сървърът за управление в реално време, така че реалният адрес да не е твърдо кодиран в пакета.
- След това търсене злонамереният код изпълнява допълнителен код в паметта и се свързва чрез Socket.IO.
- Операторите могат да изискват подробности за хоста, да крадат съдържанието на клипборда, да преместват файлове и да изпълняват скриптове на компрометираната система.
- Агентът също така инжектира копия от себе си в модули на VS Code, Cursor, Discord, GitHub Desktop и командния ред на npm (npm CLI), така че заплахата да се активира отново след рестартиране.
Това саморазпространение е причината имплантът да се държи като червей на практика. Инсталирането на корекции за сигурност или промяната на глобалния npm CLI е изключително рисковано, тъй като всяка следваща npm команда може да стартира отново зареждащия модул.
По-късно помощен инструмент на Python събира данни от браузъра, разширения за портфейли, мениджъри на пароли, Git токени и ключодържатели за качване.
Кражба на идентификационни данни и стъпки за възстановяване:
Истинската цел е лаптопът на разработчика, а не краткотрайна среда за компилиране. Откраднатите тайни данни от браузъра, токени за контрол на версиите и идентификационни данни за npm могат да компрометират частни хранилища, облачни акаунти и права за публикуване на пакети.
Ако някоя бета версия 2773 на тези пакети Joyfill е попаднала в заключващ файл (lockfile), премахнете тези версии и фиксирайте към известни добри версии, публикувани преди 28 юли 2026 г. Изтрийте node_modules и преинсталирайте от чист заключващ файл, за да премахнете инжектирания код. На машини, които са импортирали кода, проверете файловете на инструментите за разработка за маркери за инжектиране и преинсталирайте тези приложения, ако откриете такива.
Подменете всички тайни данни и пароли, съхранявани на засегнатите системи, включително пароли в браузъра, Git токени, npm токени и ключове за портфейли. Прегледайте изходящите дневници за връзки към контролните хостове, посочени от изследователите.