Das Backdoor im Paket xz wurde vermutlich vom Entwickler Jia Tan eingeführt, der im Jahr 2022 den Status eines Betreuers erhielt und Begleitversionen ab Version 5.4.2 veröffentlichte. Neben dem Projekt xz war der mutmaßliche Autor des Backdoors auch an der Entwicklung der Pakete xz-java und xz-embedded beteiligt und gehörte zu den Maintainers des XZ Embedded-Projekts, das im Linux-Kernel verwendet wird.
Bei der Förderung des Backdoors wurden auch zwei weitere Teilnehmer bemerkt — Jigar Kumar und Hans Jansen, die anscheinend virtuelle Charaktere sind. Jigar Kumar trug im April 2022 zur Annahme früherer Patches von Jia Tan bei, die die Unterstützung für String-Filter implementierten, und übte moralischen Druck auf Lasse Collin aus, den damaligen Betreuer, da er kritisierte, dass dieser seine Pflichten nicht erfülle und hilfreiche Patches nicht annehme. Im Juni stimmte Lasse Collin zu, dass das Projekt einen neuen Betreuer benötige, beklagte sich über Erschöpfung und psychische Probleme und übergab das Mantelrecht an Jia Tan. Danach tauchte der Benutzer Jigar Kumar nicht mehr in der Mailingliste auf.
Nachdem er die Rechte eines Maintainers erhalten hatte, begann Jia Tan aktiv Änderungen am Projekt vorzunehmen und belegte statistikmäßig in zwei Jahren den zweiten Platz unter den Entwicklern in Bezug auf die Anzahl der Änderungen. Im März 2023 wurde der für das Testing des Pakets xz im Dienst oss-fuzz Verantwortliche von Lasse Collin auf Jia Tan gewechselt, und im Juni wurden Änderungen, die die Unterstützung des Mechanismus IFUNC in liblzma hinzufügten (der Konstruktor crc64_fast wurde durch ifunc ersetzt), in das Paket xz aufgenommen, welche später zum Abfangen von Funktionen im Backdoor verwendet wurden. Diese Änderung wurde von Hans Jansen vorgeschlagen und von Jia Tan in das Paket xz aufgenommen. Das Konto von Hans Jansen wurde kurz vor dem Versand des Pull-Requests erstellt.
Im Juli 2023 sandte Jia Tan den Entwicklern von oss-fuzz eine Anfrage zur Deaktivierung der ifunc-Prüfung wegen ihrer Inkompatibilität im Modus "-fsanitize=address". Anfang Februar 2024 wurde der Link zur Projektwebsite in oss-fuzz und auf der Hauptseite von tukaani.org von "tukaani.org/xz/" auf "xz.tukaani.org" geändert, wobei die Subdomain "xz.tukaani.org" auf dem GitHub Pages-Dienst gehostet wurde und persönlich von Jia Tan kontrolliert wurde. Am 23. Februar wurden im Repository xz Archive zum Testen des Dekodierers bereitgestellt, darunter die Dateien bad-3-corrupt_lzma2.xz und good-large_compressed.lzma mit einem versteckten Backdoor. M4-Makros zur Aktivierung des Backdoors waren nur im tar-Archiv mit Release 5.6.0 enthalten und wurden aus dem Git-Repository ausgeschlossen, tauchten jedoch in der Datei .gitignore auf.
Am 17. März wurde Hans Jansen, der zuvor Patches mit IFUNC-Unterstützung entwickelt hatte, als Teilnehmer des Debian-Projekts registriert. Am 25. März sandte er einen Antrag zur Aktualisierung der Version des Pakets xz-utils im Debian-Repository. Update-Anfragen wurden auch an die Entwickler von Fedora und Ubuntu weitergeleitet (im Ubuntu-Repository war das Paket zum Zeitpunkt der Anfrage eingefroren, und die Änderung wurde abgelehnt).
Einige Benutzer, die um ein Update auf die Version xz baten, erklärten, dass in der neuen Version störende Fehler behoben worden seien, die bei der Debugging in valgrind auftraten (die Probleme entstanden durch eine falsche Bestimmung des Stack-Layouts im Backdoor-Handler, und die Entwickler der Backdoor versuchten, diese Probleme in der Version xz 5.6.1 zu beheben). Auch Andres Freund, ein Mitarbeiter von Microsoft, der an der Entwicklung von PostgreSQL beteiligt ist, nahm Interesse an dem Vorfall und entdeckte die Existenz der Backdoor und informierte die Community darüber.
Quelle: opennet.ru
