Článek přečtěte do 4 min.

V moderním světě je těžké podceňovat dopad, který má open source kód na vývoj softwaru. V průběhu let se globální komunitě podařilo publikovat ohromné ​​množství projektů s volně přístupným kódem, který může prohlížet a vylepšovat kdokoli na planetě. Kód publikovaný na internetu velmi často slouží jako zdroj inspirace pro vývojáře softwaru – kdykoli potřebují implementovat funkci projektu, často zkontrolují, zda je kód, který potřebují, již dostupný online. Vyhnou se tak znovuvynalézání kola a šetří tak svůj drahocenný čas.

S publikováním stále více open source projektů začali jak státem podporovaní aktéři, tak kyberzločinci používat volně dostupný kód jako návnadu k infikování svých cílů. Tento trend samozřejmě nevykazuje žádné známky zpomalení, o čemž svědčí aktuálně aktivní kampaň zaměřená na uživatele GitHubu, kterou jsme nazvali GitVenom.

Slibem naplněné, ale falešné projekty

V průběhu kampaně GitVenom vytvořili aktéři hrozeb stojící za ní na GitHubu stovky úložišť, která obsahují falešné projekty se škodlivým kódem – například automatizační nástroj pro interakci s instagramovými účty, telegramový bot umožňující správu bitcoinových peněženek a hackerský nástroj pro videohru Valorant .

Je zřejmé, že při navrhování těchto falešných projektů šli aktéři hodně daleko, aby se úložiště zdálo legitimní pro potenciální cíle. Například škodlivé repozitáře, které objevili, obsahovaly dobře navržené soubory README.md, které byly pravděpodobně vytvořeny pomocí nástrojů AI. Pozorovali, že tyto soubory obsahují informace o projektech a také pokyny, jak zkompilovat jejich kód.

Úryvky stránek README.md s popisy falešných projektů

Úryvky stránek README.md s popisy falešných projektů

Kromě toho útočníci přidali do svých úložišť několik značek a uměle zvýšili počet provedených commitů. Za tímto účelem umístili do těchto úložišť soubor s časovým razítkem, který byl aktualizován každých několik minut:

Příklad struktury škodlivého úložiště

Příklad struktury škodlivého úložiště

Škodlivý kód implantovaný mnoha způsoby

Při analýze repozitářů vytvořených v průběhu kampaně GitVenom si všimli, že falešné projekty, které našli, byly napsány v několika programovacích jazycích – konkrétně v Pythonu, JavaScriptu, C, C++ a C#. Jak lze očekávat, tyto projekty neimplementovaly funkce popsané v souboru README.md a jejich kód většinou prováděl nesmyslné akce. Každý z projektů byl přitom infikován škodlivým kódem, přičemž jeho umístění záviselo na použitém programovacím jazyce.

Útočníci například umístili škodlivý kód do projektů založených na Pythonu vložením dlouhého řádku do jednoho ze souborů projektu. Tento řádek se skládal z asi 2 000 znaků tabulátoru, za nimiž následoval následující kód, zodpovědný za dešifrování a spuštění skriptu Python:

V případě projektů kódovaných v JavaScriptu v nich útočníci vytvořili škodlivou funkci, která byla následně vyvolána z hlavního souboru projektu. Níže je uveden příklad takové funkce:

Příklad škodlivé funkce umístěné v projektech založených na JavaScriptu. Dekóduje skript z Base64 a provede jej.

Příklad škodlivé funkce umístěné v projektech založených na JavaScriptu. Dekóduje skript z Base64 a provede jej.

Pokud jde o úložiště obsahující kód C, C++ a C#, útočníci se rozhodli skrýt škodlivý dávkový skript uvnitř souborů projektu Visual Studio a nakonfigurovat jej tak, aby se spouštěl v době sestavení projektu:

Úryvek ze škodlivého souboru projektu sady Visual Studio. Obsahuje atribut PreBuildEvent, který dává pokyn ke spuštění datové části v době sestavení projektu.

Úryvek ze škodlivého souboru projektu sady Visual Studio. Obsahuje atribut PreBuildEvent, který dává pokyn ke spuštění datové části v době sestavení projektu.

Nasazeno další užitečné zatížení

Přestože byly škodlivé datové části uložené v různých programovacích jazycích zakódovány v různých programovacích jazycích, měly stejný cíl – stáhnout další škodlivé komponenty z úložiště GitHub kontrolovaného útočníky (URL v době výzkumu: hxxps //github[.]com/Dipo17/battle ) a spustit je. Tyto komponenty byly následující:

  • Zloděj Node.js, který shromažďuje informace, jako jsou uložené přihlašovací údaje, data kryptoměnové peněženky a historii procházení, zabalí je do archivu .7z a nahraje je útočníkům prostřednictvím telegramu.

Struktura archivu, který zloděj posílá útočníkům

Struktura archivu, který zloděj posílá útočníkům

  • Open-source implantát AsyncRAT (adresa serveru C2: 138.68.81[.]155);
  • Open-source Quasar backdoor (adresa serveru C2: stejná jako výše)
  • Únosce schránky, který v obsahu schránky vyhledává adresy kryptoměnových peněženek a nahrazuje je těmi, které ovládá útočník. Zejména bitcoinová peněženka kontrolovaná útočníkem (ID bc1qtxlz2m6r … yspzt) obdržela v listopadu 2024 jednorázovou částku asi 5 BTC (přibližně 485 000 USD v době výzkumu).

Dopad kampaně

Při zkoumání škodlivých úložišť souvisejících s kampaní GitVenom jsme našli několik falešných projektů zveřejněných před dvěma lety. Vzhledem k tomu, že útočníci lákali oběti těmito projekty již několik let, je přenašeč infekce pravděpodobně docela účinný. Ve skutečnosti, na základě telemetrie, byly pokusy o infekci související s GitVenom pozorovány po celém světě, přičemž nejvyšší počet z nich byl v Rusku, Brazílii a Turecku. Očekáváme, že tyto pokusy budou pokračovat i v budoucnu, možná s malými změnami v TTP.

Slepě spuštěný kód z GitHubu může být škodlivý

Vzhledem k tomu, že platformy pro sdílení kódu, jako je GitHub, používají miliony vývojářů po celém světě, aktéři hrozeb budou určitě i nadále používat falešný software jako návnadu na infekci. Z tohoto důvodu je důležité zacházet se zpracováním kódu třetích stran velmi opatrně. Před pokusem o spuštění takového kódu nebo jeho integraci do existujícího projektu je prvořadé důkladně zkontrolovat, jaké akce provádí. Tímto způsobem bude velmi snadné odhalit falešné projekty a zabránit zneužití škodlivého kódu v nich umístěného ke kompromitaci vývojového prostředí.

Referenční hodnoty hash pro infikované archivy úložišť

63739e000601afde38570bfb9c8ba589 (06d0d13a4ce73775cf94a4a4f2314490de1d5b9af12db8ba9b01cd14222a2756)

3684907e595cd04bf30b27d21580a7c6 (bd44a831ecf463756e106668ac877c6b66a2c0b954d13d6f311800e75e9c6678)

Zajímá vás problematika bezpečnosti v IT? Pro více informací nás neváhejte kontaktovat.

Zdroj: Kaspersky