Een security-lek in de Linux-compressietool xz toont hoe kwetsbaar open source-systemen zijn voor meerjarige infiltratietactieken door ‘vertrouwde’ bijdragers. In dit geval voegden boosdoeners kwaadaardige code toe nadat de originele maker het project leek te verwaarlozen. Een competente opvolger stond zogenaamd klaar om het stokje over te nemen.
Terwijl veel bedrijven en media op het punt stonden aan hun Paasweekeinde te beginnen, ontdekte een Microsoft-engineer een backdoor in de release tarballs (bestandscollecties) voor versies 5.6.0 en 5.6.1 van de xz-compressietool voor Linux. Deze tool maakt het mogelijk bestanden, data streams en archieven enorm te verkleinen. In eerste instantie werd het lek gezien als een ‘SSH-backdoor’, maar het lek zat eigenlijk in xz zelf.
De veelgebruikte compressiebibliotheek is gekoppeld aan verschillende pakketten, waaronder sshd. Dat zoveel pakketten gebruik maken van functionaliteiten in xz Utils (dat xz bevat en een suite aanvullende utilities), maakte de backdoor potentieel zo gevaarlijk.
De ontdekking van de backdoor gebeurde tijdens het nalopen van eigenaardige SSH-prestatieproblemen en valgrind crashes. De geïnjecteerde code rommelde met liblzma (een software library die deel uitmaakt van het xz Utils-pakket). Dat gebeurde via subtiele wijzigingen in xz’s configure script.
Tip: Gevaarlijke backdoor ontdekt in XZ-pakketten voor Linux
Malafide code via SSH-aanmeldproces
De backdoor kon potentieel een kwaadwillende ongeautoriseerd toegang geven tot het hele systeem door code in te voegen tijdens het SSH-aanmeldproces, gebruikt om een beveiligde verbinding met andere apparaten tot stand te brengen.
Hoewel een veelgebruikte sshd-implementatietool als OpenSSH standaard helemaal niet bij de liblzma-library kan komen, is dit in verschillende versies van Linux (zoals Debian) mogelijk via een patch die sshd linkt met systeemmanager systemd.
De backdoor kwam in de loop van meerdere commits in xz terecht. Soms was dat enkel in tarball-releases van de source code, vermoedelijk om aan detectie te ontkomen. Dat duidt op een langdurige poging om het softwareproject te compromitteren, aldus The Register.
Druk uitgeoefend op Linux-distributeurs
De dader of groepering achter de backdoor (bekend onder de naam ‘Jia Tan’) bracht in de loop van ruim twee jaar wijzigingen aan. Daarbij oefende men druk uit op Linux-distributeurs om gecompromitteerde versies van xz op te nemen onder het mom van nieuwe functionaliteiten.
Security Boulevard meldt dat toevoegingen of wijzigingen aan de code soms werden aangemeld als ‘testverbetering’, eveneens om onder de radar te blijven. De gebruikte testbinaries bevatten eigenlijk malafide code. Een machine die de xz-versie met de kwetsbaarheid via SSH blootstelt aan het internet, loopt de kans dat kwaadaardige code wordt uitgevoerd waarmee hackers computers of servers op afstand kunnen overnemen.
Uiteindelijk zijn de 5.6.0- en 5.6.1-versies van xz in slechts enkele Linux-distributies terecht gekomen. De meeste daarvan zijn development-, test- of experimentele versies en daarom niet veelvuldig in gebruik. Veel productieversies van Linux-distributies maken gebruik van een eerdere versie die de kwetsbaarheid niet heeft.
Kwetsbaarheid door afhankelijkheden
De tijdige ontdekking van de backdoor heeft het grootste deel van het Linux-ecosysteem echter een groot veiligheidsprobleem bespaard. Want over enkele weken of maanden had de nieuwste versie van xz wél op productieomgevingen terecht kunnen komen.
Het incident onderstreept de kwetsbaarheid die wordt veroorzaakt door het inbouwen van dependencies en nieuwe functionaliteiten. Zeker als die niet per se noodzakelijk zijn voor de standaard werking, zoals bij de koppeling van sshd met systeemmanager systemd via de patch in xz Utils.
Deze koppeling moet leiden tot verbeterde prestaties, iets dat op zich aantrekkelijk klinkt. Maar door dergelijke dependencies worden applicaties blootgesteld aan kwetsbaarheden via bibliotheken van derden. Dat kan patchen bemoeilijken en vergroot het aanvalsoppervlak.
Maker van de xz-tool werd gemanipuleerd
Een extra risico is dat Linux-gebruikers zich soms afhankelijk maken van tools en libraries gemaakt door individuen of hobbyisten. Die kunnen besluiten ermee te stoppen of om wat voor reden dan ook hun project verwaarlozen. Er is met andere woorden geen garantie dat de software wordt onderhouden.
In het geval van xz hebben andere -mogelijk aan deze actie verbonden- gebruikers de maker van de tool gemanipuleerd om het stokje over te dragen. Hij zou gezondheidsproblemen hebben.
De mysterieuze Jia Tan, sinds 2021 actief op Github, wierp zich op als opvolger. Jia Tan had al meerdere bijdragen gedaan en kreeg door steunbetuigingen van anderen de schijn van legitimiteit. Software-expert Rob Mensching heeft dit proces geprobeerd te reconstrueren op basis van een reeks gearchiveerde e-mailconversaties.
Gekaapt voor eigen doeleinden
De ontdekking van een backdoor in deze veelgebruikte open-source toepassing maakt duidelijk hoe kwetsbaar software supply chains zijn, met hun al dan niet op verzoek ingebouwde dependencies. En hoe kwaadwillende actoren heel geduldig kritieke infrastructuur kunnen infiltreren door gebruik te maken van deze dependencies.
In deze situatie is ingespeeld op de verwachting dat toepassingen telkens nieuwe functionaliteiten moeten krijgen (los van essentiële security-updates). Toen dit een tijdje niet gebeurde, werd de maker onder druk gezet om de pijp aan Maarten te geven. Liefst aan iemand die zich had bewezen als bijdrager aan het software-project. Dit geeft boosdoeners de kans het project te kapen voor hun eigen doeleinden, zo blijkt.
Lees ook: Tijdelijk geen nieuwe gebruikers welkom op PyPi door malware