Злонамерена кампания в RubyGems превърна на пръв поглед полезни пакети за разработчици в инструменти за скрито копаене на криптовалута.

Компрометираните пакети могат да консумират изчислителната мощност на машината, да забавят развойната дейност и тихомълком да генерират Monero за атакуващите.

Кампанията също така надхвърля типичната инфекция, базирана на пакети. Един набор от злонамерени библиотеки (gems) може да проверява компрометираната машина на разработчика за SSH идентификационни данни и известни системи, създавайки маршрут за преместване на инфекцията към други сървъри и работни станции.

Изследователи от Unit 42 идентифицираха две свързани групи злонамерени качвания в RubyGems, които използват подобни модели на именуване и са насочени към разработчици, търсещи общи библиотеки.

Тази дейност показва как атакуващите могат да експлоатират доверието, което разработчиците гласуват на публичните хранилища за пакети.

Общо първата операция е публикувала 113 троянски библиотеки, които са били изтеглени 14 253 пъти, докато втората е качила 23 злонамерени пакета.

Свързан акаунт е качил още 309 библиотеки с над 139 000 изтегляния, въпреки че по време на анализа в тези пакети не е открит вреден код.

Unit 42 заяви в доклад, споделен с Cyber Security News (CSN), че пакетите копират легитимни Ruby библиотеки и променят техните входни файлове, за да стартират кода за копаене.

Заплахата е особено тревожна, тъй като нормалното инсталиране на зависимост може да се превърне в първа стъпка в по-широко компрометиране на инфраструктурата.

Първият извършител е използвал автоматизирано изглеждащи имена на пакети, изградени от прости думи като „ultra“, „smart“, „tool“ и „kit“.

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

Всеки пакет носи един и същ злонамерен код за копаене, но изчаква пет часа преди да стартира. Това забавяне е предназначено да избегне бързи проверки в автоматизирани изолирани среди (пясъчници), където подозрителният софтуер често се наблюдава само за кратък период след инсталирането.

Зловредният софтуер също така проверява дали работи в рамките на често срещани виртуални машини, контейнери или среди за отстраняване на грешки.

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

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

Втора група използва по-опростен подход. Нейните библиотеки включват скрит Ruby файл, който изтегля програмата за копаене, когато пакетът се зареди, след което я стартира директно без същите функции за устойчивост или защита срещу анализ.

Някои от пакетите на втората група са с правописни грешки (typosquats), което означава, че имената им са умишлено направени да изглеждат като доверени библиотеки с незначителни промени в изписването.

Разработчиците трябва да останат бдителни за този риск, тъй като по-ранни атаки със злонамерени пакети в RubyGems също показаха как имената на зависимостите могат да се използват за подвеждане на потребителите.

По-напредналият злонамерен код не спира до копаенето. Той търси частни SSH ключове и записи за известни хостове (known_hosts), след което се опитва да се свърже със системи, които вече са доверени за компрометираната машина.

Това може да позволи на една заразена крайна точка за разработка да се превърне в трамплин към сървъри за компилация, облачни среди или други вътрешни системи.

Той също така се опитва да се разпространи чрез локални активи за разработка. Зловредният софтуер може да променя пакетни файлове на Node.js, скриптове за настройка на Python, спецификации на Ruby библиотеки, Dockerfiles, Git куки (hooks) и разширения на Visual Studio Code, разширявайки обхвата си в различни езици и инструменти.

Това поведение между различни езици прави почистването по-трудно. Даден екип може да премахне оригиналната Ruby зависимост, но все пак да пропусне променен проектен файл, компрометиран контейнер или злонамерена Git кука, която да зарази отново системите по-късно.

Кампанията подчертава защо прегледите на пакети трябва да включват история на издателя, модели на изтегляне, изходен код и точни имена на зависимости.

Организациите трябва да одитират последните инсталации на RubyGems, да разследват необичайното използване на процесора, да прегледат регистрационните файлове за SSH достъп, да подменят потенциално компрометирани ключове и да следят за неочаквани връзки към инфраструктура за копаене.

Екипите по сигурността трябва също така да блокират индикаторите за компрометиране (IoCs) там, където е уместно, и да претърсват крайните точки за посочените артефакти.

Мониторингът на изходящия трафик е важен, по-специално защото дейността по криптоджакинг може да се смеси с нормалните работни натоварвания на разработчиците, докато системите не започнат да се забавят.