Populaire Rust Crate liblzma-sys gecompromitteerd met XZ Utils Backdoor Files

“Testbestanden” die verband houden met de achterdeur van XZ Utils hebben hun weg gevonden naar een Rust-krat die bekend staat als liblzma-sys, onthullen nieuwe bevindingen van Phylum.

liblzma-sys, dat tot nu toe meer dan 21.000 keer is gedownload, biedt Rust-ontwikkelaars bindingen met de liblzma-implementatie, een onderliggende bibliotheek die deel uitmaakt van de XZ Utils-datacompressiesoftware. De getroffen versie in kwestie is 0.3.2.

“De huidige distributie (v0.3.2) op Crates.io bevat de testbestanden voor XZ die de achterdeur bevatten”, merkte Phylum op in een GitHub-probleem dat op 9 april 2024 werd opgeworpen.

“De testbestanden zelf zijn niet opgenomen in de .tar.gz- noch de .zip-tags hier op GitHub en zijn alleen aanwezig in liblzma-sys_0.3.2.crate dat is geïnstalleerd vanuit Crates.io.”

Na verantwoorde openbaarmaking zijn de betreffende bestanden (“tests/files/bad-3-corrupt_lzma2.xz” en “tests/files/good-large_compress.lzma”) sindsdien verwijderd uit liblzma-sys versie 0.3.3, uitgebracht in april 10. De vorige versie van de krat is uit het register gehaald.

Cyberbeveiliging

“De kwaadaardige testbestanden werden upstream gecommit, maar omdat de kwaadaardige bouwinstructies niet aanwezig waren in de upstream repository, werden ze nooit opgeroepen of uitgevoerd”, aldus Snyk in een eigen advies.

De achterdeur in XZ Utils werd eind maart ontdekt toen Microsoft-ingenieur Andres Freund kwaadaardige commits aan het opdrachtregelprogramma identificeerde die gevolgen hadden voor versies 5.6.0 en 5.6.1 die respectievelijk in februari en maart 2024 werden uitgebracht. Het populaire pakket is geïntegreerd in veel Linux-distributies.

XZ maakt gebruik van achterdeur

De codecommits, gemaakt door een nu opgeschorte GitHub-gebruiker genaamd JiaT75 (ook bekend als Jia Tan), maakten het in wezen mogelijk om authenticatiecontroles binnen SSH te omzeilen om code op afstand uit te voeren, waardoor de operators mogelijk het systeem konden overnemen.

“Het totale compromis besloeg een periode van twee jaar”, zeiden SentinelOne-onderzoekers Sarthak Misraa en Antonio Pirozzi in een analyse die deze week werd gepubliceerd. “Onder de alias Jia Tan begon de acteur op 29 oktober 2021 bij te dragen aan het xz-project.”

“Aanvankelijk waren de toezeggingen onschadelijk en klein. De acteur werd echter geleidelijk een actievere bijdrager aan het project en won gestaag aan reputatie en vertrouwen binnen de gemeenschap.”

Volgens het Russische cyberbeveiligingsbedrijf Kaspersky nemen de getrojaniseerde veranderingen de vorm aan van een operatie die uit meerdere fasen bestaat.

“De broncode van de build-infrastructuur die de uiteindelijke pakketten genereerde, werd enigszins gewijzigd (door de introductie van een extra bestand build-to-host.m4) om het script voor de volgende fase te extraheren dat verborgen was in een testcasebestand (bad-3-corrupt_lzma2 .xz),' stond er.

XZ maakt gebruik van achterdeur

“Deze scripts haalden op hun beurt een kwaadaardige binaire component uit een ander testcasebestand (good-large_compressed.lzma) dat tijdens het compilatieproces aan de legitieme bibliotheek was gekoppeld om naar Linux-repository's te worden verzonden.”

De payload, een shellscript, is verantwoordelijk voor de extractie en uitvoering van de achterdeur, die op zijn beurt inhaakt op specifieke functies – RSA_public_decrypt, EVP_PKEY_set1_RSA en RSA_get0_key – waarmee elke SSH-verbinding met de geïnfecteerde machine kan worden gecontroleerd.

Het primaire doel van de achterdeur die in liblzma is geslopen, is het manipuleren van Secure Shell Daemon (sshd) en het controleren op opdrachten die door een aanvaller worden verzonden aan het begin van een SSH-sessie, waardoor effectief een manier wordt geïntroduceerd om code-uitvoering op afstand te bewerkstelligen.

Cyberbeveiliging

Hoewel de vroege ontdekking van de achterdeur een wijdverbreid compromis van het Linux-ecosysteem heeft kunnen voorkomen, is de ontwikkeling opnieuw een teken dat beheerders van open source-pakketten het doelwit zijn van social engineering-campagnes met als doel het organiseren van aanvallen op de toeleveringsketen van software.

In dit geval kwam het tot uiting in de vorm van een gecoördineerde activiteit die vermoedelijk bestond uit verschillende sokpop-accounts die een drukcampagne orkestreerden die erop gericht was de langdurige beheerder van het project te dwingen een mede-onderhouder aan boord te halen om meer functies toe te voegen en problemen op te lossen.

“De stortvloed aan bijdragen aan open source-code en daarmee samenhangende drukcampagnes van voorheen onbekende ontwikkelaarsaccounts suggereert dat een gecoördineerde social engineering-campagne met behulp van valse ontwikkelaarsaccounts werd gebruikt om kwaadaardige code in een veelgebruikt open-sourceproject te sluipen”, aldus ReversingLabs.

SentinelOne-onderzoekers onthulden dat de subtiele codewijzigingen die JiaT75 tussen versies 5.6.0 en 5.6.1 heeft aangebracht erop wijzen dat de wijzigingen zijn ontworpen om de modulariteit van de achterdeur te verbeteren en meer malware te planten.

Vanaf 9 april 2024 is de broncoderepository die is gekoppeld aan XZ Utils hersteld op GitHub, bijna twee weken nadat deze was uitgeschakeld wegens schending van de servicevoorwaarden van het bedrijf.

De toeschrijving van de operatie en de beoogde doelen zijn momenteel onbekend, hoewel in het licht van de planning en verfijning erachter wordt vermoed dat de dreigingsactoren een door de staat gesponsorde entiteit zijn.

“Het is duidelijk dat deze achterdeur zeer complex is en geavanceerde methoden gebruikt om detectie te omzeilen”, aldus Kaspersky.

Thijs Van der Does