top of page

Technické poradenství: XZ Upstream Supply Chain Attack




Dne 29. března 2024 byl v populární knihovně pro kompresi dat XZ Utils (známé také jako LZMA Utils, postižené verze 5.6. a 5.6.1) objeven backdoor, který umožňuje neoprávněný vzdálený přístup. Této zranitelnosti byla přiřazena chyba CVE-2024-3094 s nejvyšším možným skóre CVSS 10,0. XZ Utils je open-source softwarový balík, který se běžně používá v systémech Linux ke kompresi dat, podobně jako program zip v systému Windows. Jedná se o široce rozšířený nástroj, který je často integrován do systémů pro sestavování softwaru, a umožňuje efektivně komprimovat soubory programů během procesu jejich vytváření. Tím se nejen šetří úložný prostor, ale může se také zlepšit efektivita distribuce.


Vývojář softwaru ve společnosti Microsoft, Andres Freund, narazil na zadní vrátka při provádění testů mikrovýkonu. Všiml si, že procesy SSH trvají asi o půl sekundy déle než obvykle. Byl zvědavý, a tak se pustil do dalšího zkoumání, aby zjistil příčinu. K tomuto šťastnému objevu došlo dostatečně brzy na to, aby mohly být hlavní linuxové distribuce v bezpečí. Potenciálně jsou postiženy pouze rané testovací a vývojové verze. Útočník to sice pravděpodobně plánoval několik let, ale šťastná souhra okolností vedla k jeho včasnému odhalení, čímž se předešlo mnohem většímu problému.


Obr. 1: Veřejný repozitář XZ je v současné době na GitHubu vypnut.


Náš tým Bitdefender Labs tuto situaci pozorně sleduje. Aktivně pátráme po jakýchkoli známkách škodlivé aktivity a budeme vás informovat prostřednictvím aktualizací tohoto doporučení. Pokud vás nezajímají technické detaily zranitelnosti, můžete přeskočit na část s doporučeními na konci tohoto článku.


Detaily zranitelnosti

Na základě všech dostupných důkazů se zdá, že se jedná o několikaletou operaci, za kterou pravděpodobně stojí státem organizovaný subjekt. Zde je rozpis časové osy:


  • 2021: Je vytvořen účet útočníka s názvem JiaT75.

  • 2022: JiaT75 začíná přispívat do projektu XZ v systému Git a buduje si důvěru vývojářské komunity.

  • 2023: První krok útočníka spočíval v úpravě logiky fuzzingu. Pravděpodobně tak učinil proto, aby skryl (nebo zamaskoval) další škodlivé změny, které plánoval provést později.

  • 16. února 2024: V souboru .gitignore byla provedena zdánlivě nevýznamná změna, která vylučuje konkrétní makro (build-to-host.m4) z kontroly verzí. Jedná se o první konkrétní důkaz škodlivé činnosti.

  • 9. března 2024: Přidána poslední část: přidány obfuskované binární backdoor soubory (tests/files/bad-3-corrupt_lzma2.xz a tests/files/good-large_compressed.lzma).



Existuje mnoho nedorozumění ohledně toho, kde se škodlivý kód nacházel. Útočník sice nahrál obfuskovaný škodlivý kód do úložiště Git, ale ten sám o sobě nebyl funkční. V tomto úložišti se nacházel zdánlivě neškodný zdrojový kód, který si mohl kdokoli prohlédnout a přispívat do něj


K jeho fungování byla zapotřebí další komponenta, makro M4. Toto klíčové makro bylo z repozitáře Git záměrně vyloučeno. Vývojáři ho neviděli, ale během balení se toto makro spouštělo, čímž se do procesu konfigurace vložil další obfuskovaný skript.



Obr. 2: Injektovaný kód v makru build-to-host.m4



Tento injektovaný skript pak kontroluje konkrétní typ systému Linux (x86-64) a konkrétní formát balíčků (Debian nebo RPM). Pokud jsou podmínky splněny, upraví MakeFile pro knihovnu liblzma tak, aby sabotoval způsob, jakým za běhu vyhledává funkce (symboly). Konkrétně přinutí funkci RSA_Public_Decrypt(), aby místo na legitimní funkci ukazovala na útočníkův backdoor kód, což má za následek možnost vzdáleného spuštění kódu pro útočníka bez autentifikace.


Doporučení

Této zranitelnosti je věnována velká pozornost, ale máme dobrou zprávu: stabilní verze hlavních linuxových distribucí (RHEL, SUSE Linux Enterprise, Debian) nejsou v současné době postiženy. Náš tým v Bitdefender Labs situaci pečlivě sleduje a pokud se něco změní, budw toto doporučení aktualizovat.


Prvním krokem je identifikace všech potenciálně zranitelných systémů v síti. Doporučujeme použít nástroj osquery (podporovaný platformou GravityZone), který prověří vaše systémy na konkrétní verze operačního systému i XZ Utils. Hledáte systémy s verzí 5.6.0 nebo 5.6.1 XZ Utils: select * from file where (directory = "/usr/lib64/" and filename like 'liblzma.so.5.6.%') or (directory = "/usr/lib/x86_64-linux-gnu" and filename like 'liblzma.so.5.6.%');


Na základě naší analýzy dat (telemetrie) jsme nezaznamenali žádné případy zneužití této zranitelnosti v systémech chráněných agentem Bitdefender Endpoint Security Toolkit (BEST). Kromě toho naše telemetrie neidentifikovala žádné systémy se zranitelným sestavením XZ Utils. Zůstáváme však proaktivní. Náš antimalware je již vybaven k detekci tohoto backdooru pod názvem Trojan.Linux.XZBackdoor.*.


I když se zdá, že tato zadní vrátka byla odhalena dříve, než mohla způsobit rozsáhlé škody, je vždy důležité zůstat ostražitý. Situaci budeme nadále sledovat a informovat vás o případném novém vývoji.




 

AUTOR

 

Martin Zugec Martin je ředitelem technických řešení ve společnosti Bitdefender. Je vášnivým bloggerem a řečníkem, který se již více než dvacet let věnuje podnikovému IT. Miluje cestování, žil v Evropě, na Blízkém východě a nyní pobývá na Floridě.



32 zobrazení0 komentářů
bottom of page