Изследователи по киберсигурност откриха зловреден пакет в хранилището Python Package Index (PyPI), който въвежда опасно поведение чрез зависимост, позволяваща установяване на постоянство и изпълнение на код.
Пакетът, наречен termncolor, реализира злонамерената си функционалност чрез зависим пакет, наречен colorinal, посредством многостепенна операция на зловреден софтуер, съобщават от Zscaler ThreatLabz. Докато termncolor е бил изтеглен 355 пъти, colorinal е привлякъл 529 изтегляния. И двата пакета вече са премахнати от PyPI.
„Тази атака може да използва DLL side-loading, за да улесни дешифрирането, да установи постоянство и да проведе командно-контролна (C2) комуникация, завършвайки с дистанционно изпълнение на код“, обясняват изследователите Маниша Рамчаран Праджапати и Сатям Сингх.
След инсталиране и изпълнение, termncolor е проектиран да импортира colorinal, който от своя страна зарежда подправен DLL, отговорен за дешифрирането и стартирането на следващия етап от зловредния товар.
По-конкретно, полезният товар разгръща легитимния бинарен файл vcpktsvr.exe и DLL на име libcef.dll, стартиран чрез DLL side-loading. Този DLL е способен да събира системна информация и да комуникира със C2 сървър чрез Zulip, приложение за чат с отворен код, за да прикрие дейността.
„Постоянството се постига чрез създаване на запис в регистъра под Windows Run key, за да се гарантира автоматично изпълнение на зловредния софтуер при стартиране на системата“, посочват от Zscaler.
Зловредният софтуер може да заразява и Linux системи, като библиотеките на Python пускат споделен обектен файл terminate.so, който отключва същата функционалност.
Активност на атакуващите
Анализът на дейността в Zulip разкрива трима активни потребители в създадената организация, с общо 90 692 съобщения. Смята се, че авторът на малуера е активен от 10 юли 2025 г.
„Пакетите termncolor и colorinal подчертават значението на наблюдението на екосистемите с отворен код за потенциални атаки срещу веригата за доставки“, заявиха от компанията.
Паралелни атаки чрез npm
Разкритието идва на фона на доклад на SlowMist, според който нападатели насочват вниманието си към разработчици, представяйки се за работодатели, които предлагат тестове за работа. Така измамниците ги подмамват да клонират GitHub хранилище с компрометиран npm пакет. Задачата на пакета е да краде данни от iCloud Keychain, уеб браузъри и криптовалутни портфейли и да ги извежда към външен сървър.
Зловредните npm пакети са проектирани да изтеглят и изпълняват Python скриптове, да събират системна информация, да сканират файловата система за чувствителни данни, да крадат идентификационни данни, да записват натискания на клавиши, да правят скрийншотове и да следят съдържанието на клипборда.
Сред идентифицираните и вече премахнати пакети са:
- redux-ace (163 изтегляния)
- rtk-logger (394 изтегляния)
През последните месеци подобни npm пакети бяха забелязани да таргетират с цел кражба на данни и криптомайнинг чрез зависими пакети, използвайки легитимни услуги като Dropbox за извеждане на информацията.
Изследователите на Datadog Кристоф Тафани-Дерийпър и Мат Мюър отбелязват, че такива пакети често се разпространяват като зловреден PoC код за уязвимости или като фалшив „kernel patch“, уж подобряващ производителността. Дейността е свързана с група, проследявана като MUT-1244.
Автоматизирани обновления като риск
Случаят идва и след доклад на ReversingLabs, който разкри рисковете от автоматизираните обновления на зависимости – особено когато компрометиран проект се използва от хиляди други, усилвайки риска за софтуерната верига за доставки.
Пример е компрометирането на npm пакета eslint-config-prettier чрез фишинг атака, която е позволила на нападателите да качват заразени версии директно в npm registry без никакви промени в GitHub репозитория му.
Компанията отчита, че над 14 000 пакета използват eslint-config-prettier като директна зависимост, вместо като devDependency. Това е довело до автоматично сливане на обновления от Dependabot без допълнителна проверка.
„Тъй като този пакет е конфигурация за инструмент за форматиране на код, е логично да бъде деклариран като devDependency, а не като стандартна зависимост. В противен случай той може да бъде инсталиран автоматично при изпълнение на npm install, както редовните зависимости“, обяснява изследователят Карло Занки.
„Автоматизираните инструменти за управление на версии като Dependabot са създадени да намаляват риска от уязвими зависимости, но иронично – могат да въведат още по-големи проблеми при злонамерен компромис.“









