Afgelopen weekend daverde de Open Source Community op zijn grondvesten (en het zindert nog stevig na).
Het verhaal achter de xz-backdoor is waanzinnig, maar potentieel geen unicum.
Wat je moet onthouden: deze backdoor zou het mogelijk gemaakt hebben om op meer dan 90% van alle Linux systemen die verbonden zijn met het internet, code uit te voeren, als root.
Alles was in gang gezet, de eerste systemen werden reeds geïnfecteerd.
Binnen dit en een dik jaar zou 90% van alle systemen die van regelmatige updates voorzien worden kwetsbaar zijn.
Ware het niet voor 1 PostgreSQL developer die zich stoorde aan lag.
Vrijdag 29 maart postte Andres Freund op de Open Source Security List, OpenWall volgend bericht:
https://www.openwall.com/lists/oss-security/2024/03/29/4
Het was hem opgevallen dat inloggen via SSH plots minstens 500ms trager was geworden.
Andres vond dat al dat wachten aantoonde dat er ergens iets niet pluis was.
En hij ging op onderzoek, trok een potje open en viel heel diep down the rabbit hole.
In onderstaand Tweakers artikel kan je veel links vinden waar je op kan doorlezen.
Het heeft mij het hele weekend in de ban gehouden.
Voor mij is dit duidelijk State Actor Level.
Jammer dat GitHub de repo offline heeft gehaald en de account suspended heeft.
Want de backdoor maker is enorm ver gegaan om zijn backdoor alle kansen te geven.
En heeft ook enorm veel kwetsbaarheden van de OSS wereld misbruikt.
Je kon het zelf natrekken door de geschiendenis van JiaT75 op te zoeken op GitHub.
Er werd actief gepushed om de meest recente versie van xz in zoveel mogelijk distro’s te krijgen, er werd meegeholpen om bugs (veroorzaakt door de backdoor) te pletten om het zo in Fedora te krijgen.
Er werd 2 jaar! actief en nuttig bijgedragen aan xz door JiaT75, om zo tot co-maintainer gekroond te worden.
oss-fuzz (een tools om kwetsbaarheden te vinden in Open Source Software) kreeg een Pull Request van JiaT75 om de glibc functie waar de backdoor gebruik van maakt te negeren, omdat dat bugs zou verhelpen.
Die PR werd committed, JiaT75 was co-maintainer van xz, hij zou het wel geweten hebben zeker?
JiaT75 paste the security disclosure regels voor xz aan, zodat er minder snel public disclosures zouden plaatsvinden.
Het werd moeilijk gemaakt om de backdoor te reproduceren.
De backdoor wordt alleen ingebakken als je .deb of .rpm packages build.
Niet als je xz zelf zou builden.
De backdoor maakt gebruik van obfuscated code.
De backdoor zit enkel in de release tarballs.
Het verschil tussen de GitHub zip van de repo en de release tarballs is minimaal, de malafide code zit in de fake test files, die wel in de repo zaten.
Ook over hoe JiaT75 co-maintainer is geworden beginnen vragen te rijzen.
In 2022 zou er iemand actief de slechte maintenance van xz aangekaart hebben (na 30 jaar werd de library nog maar door 1 iemand maintained, iemand die notabene zelf met een Open Source Burnout zat).
En net dan kwam JiaT75 op de proppen, met nuttige commits en maintenance.
Na 2j werd hij co-maintainer.
De moeite die hier in is gekropen is gigantisch, een absolute long con.
Maar voor een undetected RCE op 90% van alle Linux servers, die potentieel meer dan 10 jaar blijft werken, tja ik snap het alvast.
Ware het dus niet dat het lag veroorzaakte bij het inloggen.
Zelfs wanneer je bewust met foutieve gegevens probeerde in te loggen, iets dat normaal zeer snel zou falen.
Of die lag er altijd zou zijn met de backdoor of enkel in specifieke gevallen zoals bij Andres, is nog niet geweten.
Ik vrees wel dat dit niet de enige backdoor is die in Operating Systems zit, en ook niet dat dit enkel van deze tijd is.
OS’en zijn dermate complex met zovele moving parts, het is zeer goed mogelijk dat er nog 1 of meerdere backdoors zijn.
Maar opnieuw, dit verhaal toont aan dat software tot op heden nog steeds door mensen geschreven en gebruikt wordt en mensen zijn om de tuin te leiden en hun vertrouwen misbruikt…