XZ-Backdoor: Zeiten, verdammte Zeiten und Täuschungen
(rheaeve.substack.com)- Rund um die Backdoor im xz/liblzma-Tarball dienen Jia Tans Git-Commit-Zeitzonen und Arbeitsmuster als Hinweise, um den tatsächlichen Aktivitätsort abzuschätzen
- Commit-Zeiten lassen sich mit
GIT_AUTHOR_DATEundGIT_COMMITTER_DATEmanipulieren, doch statt sämtliche Zeiten plausibel abzustimmen, dürfte es einfacher gewesen sein, nur die Zeitzone zu ändern - Die meisten der 440 Commits von Jia Tan wurden mit UTC+08 aufgezeichnet, einige UTC+02- und UTC+03-Einträge passen jedoch zur osteuropäischen Umstellung zwischen Winter- und Sommerzeit
- Die Zeitzonenwechsel am 6. Oktober 2022 und am 27. Juni 2023 liegen zeitlich so dicht beieinander, dass sie sich nur schwer durch tatsächliches Reisen erklären lassen; das schwächt die einfache Reisehypothese
- Einige +0200-Commits scheinen von Lasse Collin per
git amangewendete Patches zu sein; in einem E-Mail-Patch-Workflow ist die Verlässlichkeit der Zeitzoneninformationen begrenzt
XZ-Backdoor und Gegenstand der Analyse
- Die im xz/liblzma-Tarball entdeckte Backdoor gilt als Ereignis, das das Vertrauen in das Ökosystem freier Software stark erschüttert hat
- Es wird angenommen, dass die Backdoor möglicherweise von Jia Tan, dem langjährigen Maintainer von xz, eingebracht wurde
- Über Jia Tan war in der Community außer dem Namen kaum etwas bekannt, und selbst dieser Name könnte nicht echt sein
- Gegenstand der Analyse sind die GitHub-Aktivitäten von JiaT75 und die Commit-Timestamps im xz-Repository
- Ausgangspunkt war ein öffentlicher Beitrag auf der oss-security-Mailingliste
Warum Git-Timestamps schwer überzeugend zu fälschen sind
- Git-Commit-Zeiten lassen sich über die Umgebungsvariablen
GIT_AUTHOR_DATEundGIT_COMMITTER_DATEändern - Bei noch nicht gepushten Commits ist es auch möglich, das Datum später per Amend zu korrigieren
- Eine plausible Fälschung von Zeitdaten unterliegt jedoch mehreren Einschränkungen
- Wenn man Commits pusht, die so aussehen, als seien sie in der Zukunft erstellt worden, kann das Verdacht erregen
- Auch Commits, die älter wirken als Online-Diskussionen, sind unnatürlich
- Um solche Einschränkungen zu umgehen, müsste man Commits zurückhalten, was die Projektentwicklung verzögern könnte
- Statt die tatsächliche Uhrzeit anzupassen, lässt sich durch bloßes Ändern der Zeitzone ohne Berechnungen oder Commit-Verzögerungen leichter täuschen
UTC+08-Einträge und die Möglichkeit von UTC+02/03
- Die meisten Commits von Jia Tan, nämlich 440, sind mit UTC+08-Timestamps erhalten
- UTC+08 dürfte wahrscheinlich chinesische CST sein, doch auch Indonesien, die Philippinen und Westaustralien liegen in derselben Zeitzone
- Der Name Jia Tan könnte ein Signal sein, das asiatisch, insbesondere chinesisch, wirken soll
- Als tatsächlicher Aktivitätsort wird eine Region mit UTC+02 im Winter / UTC+03 in der Sommerzeit ins Spiel gebracht
- Dazu gehören unter anderem die osteuropäische EET und die israelische IST
- Rechnet man die UTC+08-Einträge auf UTC+02/03 um, ergibt sich typischerweise ein Arbeitsmuster von 9 bis 18 Uhr
- Ohne diese Umrechnung sähe es so aus, als sei dienstags um Mitternacht und um 1 Uhr morgens gearbeitet worden, was weniger natürlich wirkt
Hinweise aus Zeitzonenwechseln
- Einige Commits könnten darauf zurückgehen, dass Jia Tan vergessen hat, die Zeitzone zu ändern
- Es wurden drei UTC+02-Commits und sechs UTC+03-Commits identifiziert
- UTC+02 passt zur Winterzeit im Februar und November
- UTC+03 passt zur Sommerzeit im Juni, Juli und Anfang Oktober
- Das entspricht der osteuropäischen Sommerzeitumstellung: +0200 nach dem letzten Wochenende im Oktober, +0300 nach dem letzten Sonntag im März
- Diese Zeitzone scheint auch mit der von Lasse Collin und Hans Jansen übereinzustimmen
- In einem Update vom 2. April wurde unter Berücksichtigung eines Hinweises von Joey Hess ergänzt, dass viele dieser Fälle Commits mit Lasse Collin als Committer sind
- Allerdings tritt dieses Phänomen nicht bei allen von Lasse committeten Jia-Commits auf; in vielen Fällen sind sie mit +0800 aufgezeichnet
- Daher ist unklar, ob die +02/03-Commits Fehler waren oder lediglich eine Änderung im Workflow
Zeitabstände, die schwer als tatsächliche Reisen zu erklären sind
- Die Erklärung, ein UTC+08-Bewohner sei gelegentlich in eine UTC+02/03-Region geflogen, passt nicht gut zu den detaillierten Timestamps
- Am 6. Oktober 2022 folgt auf einen Commit um 21:53:09 +0300 ein Commit um 17:00:38 +0800
- Der Abstand zwischen den beiden Commits beträgt etwa 11 Stunden
- Von China nach Osteuropa oder in den Nahen Osten beträgt allein die reine Flugzeit mindestens 10 bis 12 Stunden; da Direktflüge selten sind, kann es noch länger dauern
- Am 27. Juni 2023 folgen ein Commit um 23:38:32 +0800 und ein Commit um 17:27:09 +0300 aufeinander
- Der Abstand zwischen den beiden Commits beträgt nur wenige Minuten
- Solche Wechsel stützen die Möglichkeit, dass Jia Tan sich tatsächlich nicht in einer UTC+08-CST-Region befand
Feiertage und Arbeitsmuster an Wochentagen
- Auch das Feiertagsmuster scheint eher zu Osteuropa zu passen als zu China
- Für die Liste chinesischer Feiertage wurde die Feiertagsinformation 2023 der Bank of China Indonesia herangezogen
- Auch an als chinesische Feiertage genannten Tagen gibt es Arbeitsaufzeichnungen
-
- September 2023: Mittherbstfest
-
- April 2023: Qingming-Fest
-
- bis 27. Januar 2023 u. a.: Zeitraum des Frühlingsfests
-
- In Bezug auf osteuropäische Feiertage wird angenommen, dass es am 25. Dezember, Weihnachten, sowie am 31. Dezember und 1. Januar, Neujahr, keine Arbeitsaufzeichnungen gab
- Jias häufigste Arbeitstage sind Dienstag mit 86, Mittwoch mit 85, Donnerstag mit 89 und Freitag mit 79 Einträgen
Name und Caveat zur Patch-Anwendung
- Es gibt den Hinweis, dass „Jia Cheong Tan“, falls es der echte Name sein sollte, keine gültige Romanisierung eines in China verwendeten chinesischen Namens wäre, sondern eher einer Schreibweise aus Südostasien, etwa Malaysia, ähnele
- Die Schreibweise „Cheong“ werde im modernen China nicht verwendet; außerdem wird als Beispiel angeführt, dass chinesische englische Namensschreibungen dazu neigen, die Zeichen des Vornamens zusammenzuschreiben
- Das Beispiel lautet „Yangqing Jia“, nicht „Yang Qing Jia“
- Allerdings haben zwei +0200-Commits,
de5c5e4unde446ab7a, Lasse Collin als Committer; offenbar wurden von Jia per E-Mail gesendete Patches mitgit amangewendet - Diese Commits und einige benachbarte Commits haben identische Timestamps, was dazu passt, dass ein Bündel von Patch-Dateien mit
git amangewendet wurde - Wenn Patches per E-Mail ausgetauscht werden, ist es schwierig, sich auf Zeitzoneninformationen zu verlassen; dadurch wird ein Teil dieser Analyse geschwächt
1 Kommentare
Meinungen auf Hacker News
Wenn es ein staatlich unterstützter Angriff war, ist es gut möglich, dass es eine Person/Abteilung gab, die Code und Mailinglisten-Nachrichten verfasste, sowie ein separates Team, das die Zeitpunkte und Timestamps, zu denen diese Ergebnisse ins Internet gelangten, mit der „zur Projektkonfiguration passenden Geschichte“ in Einklang brachte.
Manchmal könnten absichtlich „Fehler“ eingebaut worden sein, um Ermittlern nicht den tatsächlichen Standort, sondern einen anderen ausgewählten Ort nahezulegen.
In einem anderen Beitrag[1] wurde ebenfalls die Möglichkeit aufgeworfen, dass plötzlich entstandene Accounts ein Gefühl von Dringlichkeit erzeugten und so die Übergabe der Maintainer-Rechte beschleunigten.
[1] https://connortumbleson.com/2024/03/31/watching-xz-unfold-fr...
via: https://news.ycombinator.com/item?id=39888854
Die relevante Stelle findet man, indem man nach „Progress will not happen until there is new maintainer“ sucht.
Dazu gehört auch, es so aussehen zu lassen, als werde von einem bestimmten Standort aus gearbeitet, und zugleich den Eindruck zu vermeiden, dass es nach mehr als einer Person aussieht.
Ich glaube nicht, dass die Person aus Osteuropa stammt, aber UTC+0200/+0300 umfasst in Europa etwa Finnland, die baltischen Staaten, die Ukraine, Rumänien, Moldau und Griechenland.
Etwas weiter südlich fällt auch ein ziemlich großer Teil des Nahen Ostens, einschließlich Israel, darunter.
In Finnland ist das allerdings weniger üblich, weil dort normalerweise der Juli bevorzugt wird.
Auf den ersten Blick wirkt das stimmig.
Besonders die Unit 8200 der IDF hat einen recht bekannten Ruf.
Das heißt nicht, dass andere Länder keine Fähigkeiten hätten, und dieser Angriff sieht auch nicht unbedingt nach Ressourcen auf NSA- oder GCHQ-Niveau aus. Tatsächlich könnte es auch ein einzelner einsamer Wolf gewesen sein, aber bemerkenswert ist es trotzdem.
Akteure mit praktisch unbegrenzten Ressourcen und Motiven können False-Flag-Operationen inszenieren, um die Verantwortung in eine bestimmte Richtung zu lenken. Sie sind sehr gut darin, Spuren zu verwischen, und selbst die erfahrensten Sicherheitsforscher können Monate oder Jahre brauchen, um zu einer fundierten Einschätzung zu kommen, wer verantwortlich ist.
Deshalb ist der Versuch, herauszufinden, „wer es war“, nahezu Zeitverschwendung.
Die Lehre lautet: Keine hochmoderne, ungeprüfte Software aus irgendeinem Grund in Produktionsumgebungen einbringen; die Penetrationstester einer Organisation sollten den Stack regelmäßig aufbrechen und die Ergebnisse der Organisation und den Paket-Maintainern mitteilen; Maintainer von freier und Open-Source-Software sollten insbesondere sicherheitskritischen neuen Code bei jedem Release prüfen; und man sollte Maintainer finanziell unterstützen.
Zum Glück ist es nicht in stable gelandet; es war eher so, dass wir knapp einem Sicherheits-Tschernobyl im System entgangen sind, kurz bevor es explodiert wäre.
Es gibt Leute, die alle davon überzeugen wollen, dass eine bestimmte Macht verantwortlich ist, und dahinter stehen geopolitische Ziele. Wenn in den USA zum Beispiel darüber diskutiert wird, ausländisches Eigentum an beliebten Web-Apps zu verbieten, wie praktisch wäre es dann für Regierungen oder Unternehmen, die von einem solchen Gesetz profitieren, wenn ein GitHub-Nutzer mit chinesisch wirkendem Namen einen Angriffsvektor mit Timestamps committet, die aussehen, als kämen sie aus der Volksrepublik China.
Selbst wenn es tatsächlich jemand vom chinesischen Festland wäre: Wäre die Person staatlich unterstützt, würde sie bei einer Anklage und einem Auslieferungsersuchen kaum an US-Marshals übergeben werden. Eher könnte sie „zum Schweigen gebracht“ werden, damit keine Informationen über die größere Organisation an den Feind gelangen.
Abgesehen von Verschwörungen im Stil eines Bond-Films gibt es nur wenige Stellen, an denen man dieses Wissen praktisch anwenden kann. Woher die Nutzer kommen, weiß man meistens ohnehin, und Geo-Blocking ist ebenfalls möglich. Falls nicht, muss man sich auf andere Bedrohungen aus dieser Region einstellen.
GMT+8, die Namensstruktur (chinesischer/aus gemischten Dialekten wirkender Name + Hokkien-Nachname) und die Hinweise[1], dass Zugriffe offenbar über einen VPN-Ausgang oder Hosting-Server in Singapur erfolgten, passen – ob echt oder vorgetäuscht – alle zu einer singapurischen Identität.
Deshalb sollte man auch etwas vorsichtig sein mit der Einschätzung der Quelle in [1], der Name klinge „unecht“. Menschen vom chinesischen Festland kennen sich nicht immer gut mit chinesischen Diaspora-Gemeinschaften aus.
Viele der genannten Feiertage sind außerdem keine gesetzlichen Feiertage in Singapur[2]. Der 24. Januar war ein Feiertag, aber wenn man das Muster „an Arbeitstagen wird gearbeitet“ anlegt, ist der 22. Januar ein Sonntag, an dem dennoch Arbeit verzeichnet ist.
Es wäre interessant, mehr von Jia Tans Texten zu sehen, besonders ältere. Es könnte ziemlich deutliche sprachliche Gewohnheiten geben, mit denen man Singapurer, Menschen vom chinesischen Festland, Sprecher verschiedener slawischer Sprachen und englische Muttersprachler unterscheiden kann.
[1] https://boehs.org/node/everything-i-know-about-the-xz-backdo...
[2] https://www.mom.gov.sg/employment-practices/public-holidays
Natürlich ist die Stichprobe sehr klein, daher sollte man nicht zu viel hineininterpretieren.
Fast 10 % der Singapurer tragen den Nachnamen Tan.
[1] [https://en.wikipedia.org/wiki/File:Singaporean_surnames_by_f...](https://en.wikipedia.org/wiki/File:Singaporean_surnames_by_frequency.png)
Wenn man die Schwere der Sache kurz beiseitelässt, hat mich die Krimi-Seite dieses Falls völlig gepackt
Es ist spannend zu sehen, wie das Internet herausfindet, „wer, wie und warum“
Genau aus diesem Grund habe ich vor ein paar Jahren
gcim Terminal aufTZ=UTC0 git commitgemapptMan muss weder die Systemzeit noch die Git-Konfiguration ändern. Vielleicht gibt es in den globalen Einstellungen einen besseren Weg
Es hat auch keine böswilligen Gründe. Ich reise viel und möchte in öffentlichen Repositories nicht meinen Reiseplan durchsickern lassen
Es setzt nicht nur die Zeitzone auf UTC, sondern auch die Uhrzeit auf 00:00, sodass im Commit nur das Datum übrig bleibt. Meiner Ansicht nach reicht als dauerhaft in Git-Commits gespeicherte Information das Datum völlig aus; die genaue Commit-Uhrzeit muss man nicht preisgeben
alias git='TZ=UTC0 git'Das erfordert manuelle Schritte, und Standortdienste nutze ich auch nicht
Armer Jia. Zwei Jahre Arbeit sind komplett im Eimer
Jia, falls du das liest: Denk daran, dass man 100 % der Würfe verfehlt, die man nicht versucht. Kopf hoch, Bruder
„Wer arbeitet regelmäßig früh am Morgen?“
Ich
„Bei einem Hacker wäre es viel plausibler, dass er nachmittags und spätabends arbeitet“
Ersetzt man Hacker hier durch junge Person, passt es wohl eher
Ich bin 41, und in den letzten 10 Jahren war ich vielleicht 20-mal vor 7 Uhr morgens wach. Die Hälfte des Grundes, warum ich Computerarbeit immer noch ertrage, ist, dass es einer der wenigen Jobs ist, in denen man an den meisten Tagen mit einem 11-bis-19-Uhr-Rhythmus arbeiten und trotzdem gut sein kann
Es gibt Morgenmenschen und Nachtmenschen. Jeder hat seinen eigenen Rhythmus, und darüber sollte man nicht urteilen; er ändert sich nicht automatisch mit dem Alter und muss das auch nicht
c/hacker/younger person? Diesed-Ersetzungs/a/b/kenne ich, aber eine Variante, die mitcbeginnt, kenne ich nichtMorgens gibt es viele Störungen, etwa durch den Umgang mit „Morgenmenschen“, und von nach dem Mittag bis zum Abend kommt viel weniger dazwischen
In 4 ungestörten Stunden schafft man viel mehr als in einem 8-Stunden-Arbeitstag voller zufälliger Anrufe und E-Mails. Ich bin auch nicht mehr jung, aber wenn ich ungestört bin und zwischendurch schon ein paar Stunden darüber nachgedacht habe, kann ich es in der halben Zeit erledigen, weshalb ich manche Dinge nachts mache
Wenn du friedliche Morgen hast, beneide ich dich
„Am Dienstag, dem 27. Juni 2023, sieht man zwei Commits um 23:38:32 +0800 und 17:27:09 +0300. Rechnet man das um, liegen zwischen den beiden Commits etwa 9 Stunden“
Aber 17:27:09 +0300 ist doch 22:27:09 +0800, also liegen die beiden Commits ungefähr 1 Stunde auseinander, oder?
„Noch entscheidender ist, dass man am 6. Oktober 2022 nach einem Commit um 21:53:09 +0300 einen Commit um 17:00:38 +0800 sieht. Das sind nur wenige Minuten!“
Nein. Das sind fast 10 Stunden Unterschied
Der Autor hat die beiden Analysen wohl versehentlich vertauscht oder kann Zeitzonen nicht besonders gut umrechnen
Was, wenn es ein Amerikaner ist, oder jemand aus einer ganz anderen Region, der so tut, als wäre er ein Osteuropäer, der sich als Chinese ausgibt?
Wenn man etwas verschleiert, würde man mindestens eine zusätzliche Umleitungsebene einbauen
Bei so einem Aufbau wäre selbst ein solches Leck nicht weiter schlimm
Ich bin einer der Autoren des Originaltexts. Ich habe viele Ideen für künftige Analysen mitgenommen, und auf die vier häufigsten Einwände würde ich so antworten
Ich stimme zu, dass unklar ist, ob es eine Person oder mehrere waren. Selbst wenn es ein Team war, kann der Zeitzonenansatz aber zeigen, wo dieses Team war. Die Aktivitätszeiten sehen viel zu sehr nach regulären Arbeitszeiten aus und nicht nach einem weltweit verteilten Team
Natürlich ist es möglich, dass die Commit-Zeiten verändert wurden oder dass Commits/Uploads per zeitgesteuertem Skript erfolgten. Trotzdem halte ich es für praktisch schwierig, eine tatsächlich große Zeitzonendifferenz zu verbergen, weil man enorme Verzögerungen einbauen müsste. xz wurde schließlich nicht im luftleeren Raum entwickelt, sondern in Reaktion auf Online-Ereignisse wie Issue-Meldungen oder Beiträge auf Mailinglisten
Die beiden Beispiele habe ich tatsächlich vertauscht. Die beiden Zeitpunkte, von denen ich schrieb, sie lägen etwa 10 Stunden auseinander, liegen in Wirklichkeit nur ein paar Minuten auseinander, und die, von denen ich schrieb, sie lägen ein paar Minuten auseinander, liegen etwa 10 Stunden auseinander. Ein Update folgt
Schließlich stimmt auch, dass UTC+2/3 nicht nur Osteuropa umfasst, sondern auch Teile des Nahen Ostens. Auch diesen Punkt habe ich im Update des Beitrags klargestellt