Зловреден npm пакет с име „indexed-btree“ е забелязан да крие зловредното си поведение в кода на приложението, вместо да използва скриптове за жизнения цикъл, което показва, че киберпрестъпниците най-вероятно променят тактиката си в отговор на последните контроли за сигурност.

„Indexed-btree е зловреден npm пакет, имитиращ легитимния пакет sorted-btree, обикновена помощна програма за B-tree/индексиране“, съобщават от Checkmarx. „За разлика от честите атаки, които сме виждали в пространството на веригата за доставки, този пакет изобщо не разчита на preinstall / postinstall. Вместо това той се изпълнява изцяло от кода на приложението по време на работа (runtime).“

Пакетът и свързаното с него хранилище в GitHub вече не са достъпни за изтегляне от npm. Статистиката обаче показва, за първи път пакетът е бил качен в регистъра на 18 юни 2026 г. от npm потребител с име „charlessadler25“, натрупвайки милиони изтегляния за кратък период от време.

За да станат нещата още по-лоши, кампанията може да е генерирала незаконни печалби за авторите на заплахата, носейки им около €230,933.57 в криптовалута (т.е. 109 ETH).

Това развитие идва в момент, когато npm версия 12 въведе промяна в сигурността, за да предотврати автоматичното изпълнение на скриптове за жизнения цикъл като preinstall или postinstall, което е един от най-честите начини за изпълнение на зловреден софтуер чрез пакети, разпространявани през хранилището.

„Легитимно, те често се използват за компилиране на необходимия код, захранване с данни или настройка на основни конфигурации“, казват от Checkmarx. „За злонамерените субекти обаче това често се експлоатира за автоматично изпълнение на зловреден код без съгласието на потребителя по време на инсталирането на зловреден пакет.“

Последните констатации от компанията за сигурност на софтуерната верига за доставки показват, че атакуващите променят тактиките си в отговор на промяната, избягвайки куките за инсталиране (install hooks) в полза на директното внедряване на зловреден код в библиотеката.

В този случай зареждащият модул на зловредния софтуер е скрит в метода „BTree.prototype.set()“, който след това задейства „sharedLoad.min.js“ – зловреден код на JavaScript, съдържащ обфускиран първи етап от зловредния софтуер.

Зловредният софтуер е проектиран да прави цифров отпечатък на хоста, да изпраща детайлите към твърдо кодиран Slack канал и Telegram бот, да използва техниката EtherHiding за извличане на следващия етап криптирани блокове от интелигентен договор, внедрен в тестовата мрежа Sepolia, и накрая да ги съвместява, образувайки инжектирания код от втория етап.

Последната стъпка включва изтриване на зловредните артефакти и премахване на тригера от кода на пакета, за да се заличат следите.

От Checkmarx заявяват, че indexed-btree е един от многото npm пакети, свързани с същата операция, всички от които оттогава са премахнати от npm -

  • ordered-kv-index
  • btree-leaderboard
  • priority-slot-queue
  • btree-range-store
  • btree-core
  • btree-time-index
  • btree-lru-cache
  • neighbor-key-map
  • sliding-score-window
  • mutex-forge

За противодействие на заплахата на разработчиците се препоръчва да не се ограничават само до сканиране по време на инсталация и блокиране на скриптовете за жизнения цикъл, но също така да прилагат анализ на поведението по време на работа (runtime).

„Това, което прави тази кампания особено важна, е, че тя показва как атакуващите се адаптират почти веднага към по-силните защити на софтуерната верига за доставки“, казва Енсар Шешар, CISO в SOCRadar, в изявление, споделено с The Hacker News. „Npm подобри сигурността по време на инсталиране чрез ограничаване на скриптовете за жизнения цикъл на зависимостите, но тази кампания демонстрира, че атакуващите могат просто да преместят изпълнението на зловреден код в легитимно изглеждаща функционалност по време на работа.“

„По-широкият извод е, че контролите за сигурност променят поведението на атакуващите, вместо да елиминират основната заплаха. Блокирането на скриптове за жизнения цикъл е важно подобрение, но авторите на заплахи ще продължат да търсят алтернативни пътища за изпълнение. Поради това защитниците се нуждаят от многослойни контроли, способни да откриват злонамерено поведение преди инсталиране, по време на изпълнение и след внедряване.“

PolinRider се появява отново в Packagist

Разкритието идва в момент, когато от Socket заявяват, че са изтрили зловреден код във версията „dev-main“ на „visanduma/nova-two-factor“ – пакет за Packagist с над 700 000 общи изтегляния, като част от продължаваща злонамерена киберкампания, свързана със Северна Корея, наречена PolinRider.

Определяща черта на PolinRider е моделът на атакуващия да компрометира профили на разработчици, за да инжектира зловредно съдържание в хранилища със изходен код и да използва рутинни действия на разработчиците, като клониране на хранилище или отварянето му в интегрирана среда за разработка (IDE), като тригери за активиране на веригата на инфекция.

Това често включва пренаписване на Git историята, скриване на зловреден код в конфигурационни или шрифтови файлове, настройка на зловредни задачи за автоматично стартиране във VS Code и разчитане на устойчиви на премахване техники като EtherHiding и неговия фокусиран върху анонимността наследник NullReceiver за поетапно доставяне на зловреден код чрез блокчейн.

„Анализът на GitHub организацията Visanduma показва, че нейните хранилища са компрометирани от средата на юни 2026 г.“, казва изследователят по сигурността от Socket Карло Занки. „Зловредните промени бяха въведени чрез профила на разработчика LaHiRu.“

Една от забележителните промени, наблюдавани в последната итерация, е директното вмъкване на силно обфускиран JavaScript в „index.php“ и неговото изпълнение чрез PHP функцията „shell_exec()“. Този подход, освен че позволява на входна точка в PHP да задейства веригата на инфекция с JavaScript, подсказва, че киберпрестъпниците адаптират методите си на изпълнение въз основа на компрометирания проект, вместо да използват фиксиран път за доставка.

„Дейността потвърждава определящата характеристика на PolinRider: компрометирането на регистъра с пакети често е последица от по-широко проникване на базата на Git, а не основната цел на кампанията“, казва Socket. „Операторите използват обикновеното сътрудничество върху изходния код, за да достигнат до средите на разработчиците, да се разпространят в допълнителни хранилища и да поддържат достъп във времето.“

„Компрометираните хранилища на изходен код дават възможност на операторите да инфектират сътрудници, да получат достъп до частни проекти и да се разпространяват чрез нормалните работни процеси по разработка. Публикуването на пакети се превръща в допълнителен път за разпространение, когато компрометираното хранилище издаде нова версия.“