Wat we weten over de xz Utils-achterklep die de wereld bijna veroverde

In zoomen / Malware gedetecteerd waarschuwingsscherm met 3D digitaal concept van binaire code

Getty-afbeeldingen

Onderzoekers hebben vrijdag de ontdekking onthuld van een achterdeur die opzettelijk is geplaatst in xz Utils, een open source datacompressietool die beschikbaar is op vrijwel alle installaties van Linux en andere Unix-achtige besturingssystemen. De persoon of personen achter dit project hebben er waarschijnlijk jaren aan gewerkt. Ze waren waarschijnlijk heel dicht bij het zien van een backdoor-update geïntegreerd in Debian en Red Hat, de twee grootste Linux-distributies, toen een ontwikkelaar met adelaarsogen iets verdachts ontdekte.

“Dit is misschien wel de best uitgevoerde supply chain-aanval die we ooit in het openbaar hebben beschreven, en het is een nachtmerriescenario: kwaadaardig, efficiënt en geautoriseerd in een veelgebruikte bibliotheek”, zegt software- en cryptografisch ingenieur Filippo Valsorda. Hij zei Een poging die angstaanjagend dicht bij succes kwam.

Onderzoekers brachten het weekend door met het verzamelen van bewijsmateriaal. Dit is wat we tot nu toe weten.

Wat is xz-hulpprogramma?

xz Utils is bijna overal in Linux aanwezig. Het biedt verliesvrije datacompressie op vrijwel alle Unix-achtige besturingssystemen, inclusief Linux. xz Utils biedt belangrijke functies voor het comprimeren en decomprimeren van gegevens tijdens alle soorten bewerkingen. xz Utils ondersteunt ook het oudere .lzma-formaat, wat dit onderdeel nog belangrijker maakt.

Wat is er gebeurd?

Anders Freund, een ontwikkelaar en ingenieur die aan het PostgreSQL-aanbod van Microsoft werkt, was onlangs bezig met het oplossen van de prestatieproblemen die Debian ondervond met SSH, het protocol dat het meest wordt gebruikt om op afstand in te loggen op machines via internet. Met name SSH-logins verbruikten te veel CPU-cycli en gaven fouten met valgrind, een hulpprogramma voor het monitoren van computergeheugen.

Door een combinatie van puur geluk en Freunds scherpe oog ontdekte hij uiteindelijk dat de problemen het gevolg waren van updates die in de xz Utils waren aangebracht. Vrijdag ging Freund naar het open source-beveiligingsmenu om te onthullen dat de updates het resultaat waren van iemand die opzettelijk een achterdeur in de compressiesoftware had geplaatst.

Wat doet een achterdeur?

Er is schadelijke code toegevoegd aan versies 5.6.0 en 5.6.1 van xz Utils om de manier te wijzigen waarop het programma zich gedraagt ​​bij het uitvoeren van bewerkingen die verband houden met lzma-compressie of decompressie. Wanneer bij deze functies SSH betrokken is, kan kwaadaardige code met rootrechten worden uitgevoerd. Met dit token kan iedereen met een vooraf gedefinieerde encryptiesleutel via SSH inloggen op het back-endsysteem. Vanaf nu heeft deze persoon hetzelfde controleniveau als elke geautoriseerde beheerder.

READ  Final Fantasy 16-patch lost klachten over bewegingsonscherpte op

Hoe is deze achterdeur ontstaan?

Het lijkt erop dat deze achterdeur al jaren in aanbouw is. In 2021 heeft een persoon met de gebruikersnaam JiaT575 zijn eigen account aangemaakt Eerste bekende commit Naar een open source-project. Later, Het verandert Het libarchive-project is verdacht, omdat het de Safe_fprint-functie heeft vervangen door een variabele die al lang als minder veilig wordt beschouwd. Niemand merkte het op dat moment.

Het jaar daarop diende JiaT575 een patch in op de xz Utils-mailinglijst, en vrijwel onmiddellijk nam een ​​onzichtbare deelnemer genaamd Jigar Kumar deel aan de discussie en voerde aan dat Lasse Collin, de oude xz Utils-onderhouder, de software niet vaker wel dan niet bijwerkte. Vaak of snel genoeg. Kumar lobbyde, met de steun van Dennis Ince en verschillende anderen die niet eerder op de lijst stonden, bij Colin om een ​​extra ontwikkelaar in te schakelen om het project te onderhouden.

In januari 2023 vervaardigde JiaT75 het Eerste engagement Naar xz Utils. In de daaropvolgende maanden raakte JiaT75, die de naam Jia Tan gebruikte, steeds meer betrokken bij de zaken van xz Utils. Tan verving bijvoorbeeld de contactgegevens van Collins door zijn eigen gegevens over het oss-fuzz-project van Microsoft, een project dat open source-software scant op tekenen van kwaadwilligheid. Tan vroeg oss-fuzz ook om de ifunc-functie tijdens het testen uit te schakelen, een wijziging die hem ervan weerhield de kwaadaardige wijzigingen te detecteren die Tan binnenkort in xz Utils zou aanbrengen.

In februari van dit jaar heeft Tan commits uitgebracht voor versies 5.6.0 en 5.6.1 van xz Utils. Backdoor-updates geïmplementeerd. In de daaropvolgende weken smeekten Tan en anderen ontwikkelaars van Ubuntu, Red Hat en Debian om de updates in hun besturingssystemen te integreren. Uiteindelijk vond een van de twee updates zijn weg naar volgende releases, volgens Verdedigbaar beveiligingsbedrijf:

Kun je meer vertellen over wat deze achterdeur doet?

Kortom, iedereen met de juiste privésleutel kan sshd, het uitvoerbare bestand dat verantwoordelijk is voor het maken van SSH-verbindingen, kapen en van daaruit kwaadaardige opdrachten uitvoeren. De achterklep wordt gerealiseerd via een vijftrapslader die een reeks eenvoudige maar slimme technieken gebruikt om zichzelf te verbergen. Het biedt ook de middelen om nieuwe ladingen te leveren zonder dat grote veranderingen nodig zijn.

READ  Waarom draadloze providers iPhone 14s gratis kunnen geven

Veel mensen die de updates hebben reverse-engineered, hebben veel te zeggen over de achterdeur.

Geïntroduceerd door ontwikkelaar Sam James Dit overzicht:

Deze achterdeur bestaat uit verschillende componenten. Op een hoog niveau:

  • Versies van tarballs die stroomopwaarts zijn gepubliceerd, bevatten niet dezelfde code als in GitHub. Dit is gebruikelijk bij C-projecten, zodat downstream-consumenten niet hoeven te onthouden hoe ze autotools en autoconferenties moeten uitvoeren. De versie van build-to-host.m4 in de tarballs verschilt aanzienlijk van de originele versie op GitHub.
  • Er zijn ook ingebouwde testbestanden in de map tests/ in de git-repository. Deze bestanden bevinden zich in de volgende commits:
  • Een script aangeroepen door build-to-host.m4 pakt deze kwaadaardige testgegevens uit en gebruikt deze om het bouwproces aan te passen.
  • IFUNC, een mechanisme in glibc dat indirecte functieaanroepen mogelijk maakt, wordt gebruikt om runtimebinding/omleiding van OpenSSH-authenticatieprocedures uit te voeren. IFUNC is een tool die meestal voor legitieme zaken wordt gebruikt, maar in dit geval wordt het voor dit aanvalspad uitgebuit.

Upstream publiceert doorgaans tarballs die verschillen van de tarballs die automatisch in GitHub worden gegenereerd. In deze gewijzigde tarballs is een kwaadaardige versie van build-to-host.m4 opgenomen om een ​​script uit te voeren tijdens het bouwproces.

Dit script (tenminste in versies 5.6.0 en 5.6.1) controleert verschillende omstandigheden, zoals de apparaatarchitectuur. Hier is een fragment van het kwaadaardige script dat is gedecompileerd door build-to-host.m4 en een uitleg van wat het doet:

if ! (echo "$build" | grep -Eq "^x86_64" > /dev/null 2>&1) && (echo "$build" | grep -Eq "linux-gnu$" > /dev/null 2>&1);then
  • Als amd64/x86_64 het builddoel is
  • En als het doel de naam linux-gnu gebruikt (controleert meestal op gebruik van glibc)

Het controleert ook de gebruikte gereedschapsketen:

if test "x$GCC" != 'xyes' > /dev/null 2>&1;then
exit 0
fi
if test "x$CC" != 'xgcc' > /dev/null 2>&1;then
exit 0
fi
LDv=$LD" -v"
if ! $LDv 2>&1 | grep -qs 'GNU ld' > /dev/null 2>&1;then
exit 0

En als u een Debian- of Red Hat-pakket probeert te bouwen:

if test -f "$srcdir/debian/rules" || test "x$RPM_ARCH" = "xx86_64";then

Deze aanval lijkt zich dus te richten op AMD64-systemen waarop glibc draait en die distributies gebruiken die zijn afgeleid van Debian of Red Hat. Andere systemen kunnen op dit moment kwetsbaar zijn, maar dat weten we niet.

In een online interview bevestigde ontwikkelaar en reverse engineer HD Moore het vermoeden van Sam James dat de achterdeur zich richt op Debian- of Red Hat-distributies.

READ  WhatsApp begint emoji-reacties uit te rollen in Android-bèta

“De aanval was stiekem omdat je alleen de laatste stappen van de achterdeur nam als je de bibliotheek op AMD64 (Intel x86 64-bit) bouwde en je een Debian- of RPM-pakket aan het maken was (in plaats van het te gebruiken voor een lokale installatie). ” ,” Hij schreef.

Hij vervolgde met het parafraseren van de observaties van onderzoekers die gezamenlijk het weekend besteedden aan het analyseren van de kwaadaardige updates:

Als bij het verifiëren van een openbare SSH-sleutel de openbare sleutel overeenkomt met een bepaalde vingerafdrukfunctie, wordt de inhoud van de sleutel gedecodeerd met behulp van een vooraf gedeelde sleutel voordat de openbare sleutel daadwerkelijk wordt geverifieerd. De gedecodeerde inhoud wordt vervolgens rechtstreeks naar het systeem doorgegeven.

Als de vingerafdruk niet overeenkomt of de gedecodeerde inhoud niet overeenkomt met een bepaald formaat, is het terug naar de normale sleutelverificatie en niemand is wijzer.

De achterdeur is erg stiekem. Gebruikt een onbekende functie van glibc om een ​​functie te binden. Het wordt alleen uitgevoerd als de xz-bibliotheek met achterdeur wordt geladen door het proces /usr/bin/sshd op een van de getroffen distributies. Er zijn misschien nog veel meer achterdeurtjes, maar de achterdeur waar iedereen het over heeft, gebruikt een niet-directionele functie om de haak toe te voegen. De payload werd gecodeerd in valse xz-testbestanden en draaide effectief als shellcode, waarbij de SSH RSA-sleutelverificatiecode werd gewijzigd, zodat de aanvaller toegang kon krijgen met de magische openbare sleutel (verzonden tijdens normale authenticatie).

Hun grote plan was:

1) De releaseballen zijn onzichtbaar achter de schermen, maar niet de broncode

2) Gebruik Sockpuppet-accounts om verschillende Linux-distributies te overtuigen de nieuwste versie op te halen en te verpakken

3) Zodra deze distributies zijn verzonden, kunnen ze elk gebruikers-/bedrijfssysteem/enz. ​​overnemen

Aanvullende technische analyses zijn beschikbaar vanaf boven Bluesky-draad van Valsorda, Onderzoeker Kevin Beaumont En Dat maakte Freund vrijdag bekend.

Wat weten we meer over Jia Tan?

Op dit moment is dat heel weinig, vooral voor iemand die belast is met het toezicht op een stukje software dat zo wijdverspreid en gevoelig is als xz Utils. Deze ontwikkelaarspersoonlijkheid heeft de afgelopen jaren tientallen andere open source-software besproken. Op dit moment is het onbekend of er een echte persoon achter deze gebruikersnaam schuilgaat of dat Jia Tan een volledig verzonnen persoon is.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *