Die XZ-Backdoor

Shownotes

In unserer neuesten Folge sprechen Wolfgang Schoch und Christoph Erhardt über Cybersicherheit und beleuchten die Entdeckung der xz-Backdoor. Anfang des Jahres wurde diese Schwachstelle in der weit verbreiteten Open-Source-Bibliothek xz-utils gefunden – einer Bibliothek, die auf nahezu jedem Linux-System zu finden ist. Wäre sie unentdeckt geblieben, hätte das immense Probleme für die Sicherheit des Internets bedeutet.

Sie gehen den technischen Details auf den Grund und beleuchten, wie über Jahre hinweg an dieser Backdoor gearbeitet wurde, ohne entdeckt zu werden. Zusätzlich diskutieren die beiden die Bedeutung von Open Source und die Herausforderungen, die die Entwicklung von Open-Source-Software mit sich bringt. Wie können wir solche Sicherheitslücken in Zukunft vermeiden? Was bedeutet das für die Open-Source-Community?

Für diese Folge von Digital Future gibt es ein vollständiges Transkript. Dieses Transkript wurde automatisiert erzeugt und nicht nachbearbeitet oder korrekturgelesen. Es wird daher sicher Fehler enthalten. Das Transkript ist als Ergänzung zu verstehen, um beispielsweise die Inhalte durchsuchbar zu machen. Im Zweifel gilt immer das gesprochene Wort aus der Folge.

Dieser Podcast lebt von deinem Feedback! Melde dich gerne über die verlinkten sozialen Medien oder direkt per Mail an podcast@inovex.de.

Wenn dir der Podcast gefallen hat, abonniere ihn und erzähl deinen Freunden davon! Außerdem freuen wir uns über deine Text- und/oder Sternebewertung bei Apple Podcasts.

Twitter: https://twitter.com/inovexgmbh Instagram: https://www.instagram.com/inovexlife/ www.inovex.de www.inovex.de/blog

Transkript anzeigen

Wolfgang: Hallo und herzlich willkommen bei Digital Future, dem Podcast zur Technologie

Wolfgang: und Unternehmenskultur.

Wolfgang: Mein Name ist Wolfgang Schoch und ich bin Agile Coach bei inovex.

Wolfgang: Ich habe aber auch schon ein paar andere Sachen gemacht und so die IT-Branche

Wolfgang: aus verschiedenen Blickwinkeln kennengelernt.

Wolfgang: Zum Beispiel als Softwareentwickler, als Experte für Suchtechnologie oder im Vertrieb.

Wolfgang: Ich freue mich, euch in jeder Folge des Podcasts eine Kollegin oder einen Kollegen

Wolfgang: vorzustellen und mich mit ihr oder ihm über das jeweilige Fachgebiet zu unterhalten.

Wolfgang: So bekommt ihr einen Einblick in unseren technologischen und unternehmenskulturellen Alltag.

Wolfgang: In der heutigen Folge spreche ich mit meinem Kollegen Christoph Erhard über

Wolfgang: die kürzlich entdeckte Backdoor in den XZ-Utils.

Wolfgang: In den Nachrichten wurde ja darüber berichtet und teilweise hieß es,

Wolfgang: dass das gesamte Internet durch diese Backdoor gefährdet sei.

Wolfgang: Und das ist nicht übertrieben. Aber was ist da genau passiert?

Wolfgang: Christoph kennt sich mit der Technik und mit dem Open-Source-Ökosystem aus und

Wolfgang: ist somit der ideale Gesprächspartner für dieses Thema.

Wolfgang: Wir unterhalten uns über die Funktionsweise der Backdoor und auch darüber,

Wolfgang: wie es eigentlich dazukommen konnte.

Wolfgang: Ich wünsche euch viel Spaß beim Zuhören.

Wolfgang: Hallo Christoph, ich freue mich, dass wir uns heute über ein hochaktuelles Thema

Wolfgang: unterhalten können und ich freue mich ganz besonders,

Wolfgang: dass ich mit dir heute mal in die Tiefen der Technik abtauchen kann,

Wolfgang: Denn, ja, ich glaube, technisch gibt das Thema extrem viel her.

Wolfgang: Bevor wir uns aber in die Tiefen der Technik bewegen, Christoph,

Wolfgang: würde ich mich freuen, wenn du dich eben mal kurz vorstellst. Wer bist du eigentlich?

Wolfgang: Wie lange bist du schon hier bei InnoVEX und was machst du so den lieben langen Tag bei InnoVEX?

Christoph: Sehr gerne. Ich heiße Christoph, ich bin studierter Informatiker,

Christoph: habe im Betriebssystembereich promoviert und bin jetzt seit ziemlich genau einem

Christoph: halben Jahr am Standort Erlangen mit am Start.

Christoph: Ich arbeite im Team von Sebastian, den du ja auch schon mal vom Mikro hattest,

Christoph: im Bereich medizinische Software. und meine Haupttätigkeit ist es,

Christoph: die Software-Plattform für Medizingeräte auf Basis von Linux zu bauen.

Wolfgang: Das klingt unglaublich spannend. Kannst du mal ein Beispiel für solche Geräte

Wolfgang: geben, dass wir uns da was darunter vorstellen können?

Christoph: Also mein momentanes Projekt ist ein Röntgengerät, das einiges an Software drin

Christoph: hat, mitgebende Verfahren.

Christoph: Und das Ganze ist eben auf Basis von Linux- und Open-Source-Komponenten und

Christoph: darauf läuft dann diese Software.

Christoph: Und ich meine, das Ding ist ein bisschen größer, es kann einiges,

Christoph: es kann auch Netzwerkkommunikation, kann Krankenhausnetzwerk eingebunden werden.

Wolfgang: Also das klingt sehr spannend und du hast gerade auch schon so ein paar Wörter

Wolfgang: fallen gelassen, über die wir uns, glaube ich, jetzt auch noch ein bisschen

Wolfgang: detaillierter unterhalten, und zwar Linux, Betriebssystem, Netzwerk.

Wolfgang: Ich glaube, das sind so die Themen, um die es heute auch geht,

Wolfgang: denn wir wollen heute über die Backdoor sprechen.

Wolfgang: Die im März, Anfang April, Ende März entdeckt wurde und zwar diese Backdoor,

Wolfgang: die in den XZ-Utils drin ist und über die so ziemlich jede Online-Zeitung und

Wolfgang: sicher auch Offline-Zeitung berichtet hat.

Wolfgang: Ich kann mich da noch so erinnern an so Schlagzeilen, dass das Internet in Gefahr war,

Wolfgang: dass um ein Haar hier eine große Internetkatastrophe und manche schrieben sogar,

Wolfgang: die größte Internetkatastrophe, die es je gab, die wäre um ein Haar eingetreten.

Wolfgang: Und ich habe mir da sehr viele Artikel durchgelesen und für mich gab es am Anfang

Wolfgang: so zweierlei Arten von Artikeln.

Wolfgang: Es gab so die eine Art, die extrem detailliert war und die für mich ja beim

Wolfgang: ersten Lesen nicht so hundertprozentig verständlich war, weil es da wirklich

Wolfgang: ganz, ganz tief ins Rabbit Hole reinging,

Wolfgang: was so Linux und Betriebssysteme und C-Entwicklung anging.

Wolfgang: Und es gab viele Artikel, die sehr oberflächlich waren, wo ich mir die durchgelesen

Wolfgang: habe und danach gedacht habe, ja, was war das jetzt eigentlich?

Wolfgang: Ich verstehe es nicht. Und vielleicht können wir ja heute mal so diesen ganzen Fall aufrollen.

Wolfgang: Das liegt jetzt zum Zeitpunkt der Aufnahme gut einen Monat zurück.

Wolfgang: Es wurde viel drüber geschrieben, es wurde viel analysiert, ich glaube,

Wolfgang: man hat ein ganz gutes Verständnis heute, was da technisch passiert ist und

Wolfgang: ja, Christoph, lass uns doch mal auf die Reise gehen und zwar zurück einen Monat in der Zeit.

Wolfgang: Was ist damals passiert, was hat man denn da mitbekommen?

Christoph: Unsere Geschichte fängt an im März 2024.

Christoph: Also vor ungefähr eineinhalb Monaten. Und der Protagonist unserer Geschichte

Christoph: heißt Andres Freund, ist gebürtiger Deutscher und arbeitet als Softwareentwickler bei Microsoft.

Christoph: Und seine tägliche Tätigkeit ist es,

Christoph: an einem Open-Source-Projekt dort im Kernentwicklungsteam mitzuarbeiten.

Christoph: Das Open-Source-Projekt heißt PostgresQL und ist im Prinzip die große bekannte

Christoph: Open-Source-Datenbank.

Christoph: Hast du schon mal mit PostgreSQL gearbeitet?

Wolfgang: Ja, also ich würde auch sagen, es

Wolfgang: gibt so zwei große bekannte Open-Source-Datenbanken, also so relationale.

Wolfgang: Das eine ist sicher MariaDB oder zu meiner Zeit war das noch MySQL und PostgreSQL.

Wolfgang: Das ist ein bisschen schwieriger zum Aussprechen, aber damit habe ich auch schon gearbeitet.

Wolfgang: Und ich habe gelesen, dass der Andrews Freund, dass der da auch schon seit vielen,

Wolfgang: vielen Jahren entwickelt und dass er auch ein richtiger Datenbank-Experte ist

Wolfgang: aufgrund seiner ganzen Erfahrung.

Christoph: Ja, definitiv. Also zu dem Zeitpunkt hat er schon seit 15 Jahren an diesem Projekt

Christoph: mitgearbeitet, hat halt als Student irgendwann mal angefangen.

Christoph: Wenn man sich für ein Thema interessiert, dann ist ja das Coole an der Open-Source-Welt,

Christoph: da kann man auch selber mitbringen, kann erstmal klein anfangen und sich einbringen.

Christoph: Und wenn man sich bewährt, rutscht man eben sehr schnell immer weiter in so

Christoph: eine Führungsrolle rein.

Christoph: Und im Fall von Andres ist es so, er ist quasi der Performance-Experte im Bereich von Datenbanken.

Christoph: Das heißt, er hat in den letzten Jahren sehr viel gemacht im Bereich von Unterstützung

Christoph: für Vielkernprozessoren, Replikation, Optimierung von Synchronisationsalgorithmen und so weiter.

Christoph: Und hat sich da quasi unverzichtbar gemacht, bis zu dem Punkt,

Christoph: dass er wirklich von einem Unternehmen

Christoph: dafür bezahlt wird, an diesem Open-Source-Projekt mitzuarbeiten.

Christoph: Ist ganz interessant, dass das ausgerechnet Microsoft ist.

Christoph: Du erinnerst dich wahrscheinlich genauso gut wie ich, als ich noch Schüler war

Christoph: und du Student, so 20 Jahren.

Christoph: Hat Microsoft noch die Open-Source-Szene als Krebsgeschwür bezeichnet?

Wolfgang: Ja, ich kann mich da noch erinnern.

Christoph: Ja. Davon sind wir heutzutage meilenweit weg. Kann man sich natürlich fragen, warum ist das so?

Christoph: Sind die Leute bei Microsoft jetzt auf einmal alle zu Hippies geworden?

Christoph: Sind sie natürlich nicht. Es gibt natürlich einen Geschäftsfall.

Christoph: Und der Geschäftsfall für Microsoft in dem Kontext ist eben die Wolke.

Christoph: Das heißt, in der Cloud hat eben PostgreSQL eine recht große Bedeutung,

Christoph: weil es eben sehr gut skaliert.

Christoph: Und Microsoft bietet eben auch tatsächlich PostgreSQL in ihrer Azure Cloud an.

Christoph: Und da liegt es natürlich nahe, dass sie jemanden dafür bezahlen,

Christoph: auch wirklich an diesem Projekt mitzuarbeiten.

Wolfgang: Ich weiß nicht, Christoph, sollen wir an der Stelle vielleicht mal zwei,

Wolfgang: drei Sätze über Open Source allgemein verlieren, weil ich glaube,

Wolfgang: viele Leute wissen, was Open Source ist.

Wolfgang: Ich glaube, es gibt aber sicherlich auch Leute, für die ist Open Source vor

Wolfgang: allem Software, die man kostenlos nutzen kann und genau das ist natürlich auch

Wolfgang: eine super tolle Eigenschaft von Open Source. Ich verwende selbst jeden Tag Open Source.

Wolfgang: Also jetzt gerade beispielsweise habe ich einen Open Source Webbrowser hier

Wolfgang: bei mir auf dem Rechner, den ich verwende, den ich gut finde.

Wolfgang: Aber was ist denn so der, weiß nicht, der Kerngedanke oder vielleicht auch der

Wolfgang: Open Source Spirit? Hast du da Erfahrung?

Christoph: Ich habe ein paar Erfahrungen. Ich arbeite selber auf Sparflamme an so ein paar

Christoph: Open-Source-Projekten mit.

Christoph: Also ich betreue zum Beispiel als Paket-Maintainer so eine Handvoll Pakete in

Christoph: der Fedora-Distribution.

Christoph: Grundsätzlich der Kerngedanke von Open Source ist, dass man den Quellcode von Software,

Christoph: also den Code, den Menschen in einer menschenlesbaren Sprache schreiben und

Christoph: der quasi den Bauplan für diese Software darstellt, nicht als Geschäftsgeheimnis

Christoph: behandeln, sondern veröffentlichen,

Christoph: sodass die ganze Welt den sehen kann und interessierte Menschen auch in der

Christoph: Lage sind, da mitzuarbeiten.

Christoph: Das Ganze ist natürlich gekoppelt mit einem gewissen rechtlichen Rahmenwerk.

Christoph: Das grundsätzliche Risiko ist natürlich, dass jemand diesen Quellcode nimmt,

Christoph: so ein paar Anpassungen vornimmt und die dann hinter verschlossenen Türen hält

Christoph: und sagt, gut, danke Jungs und Mädels für eure Arbeit, so, und jetzt verkaufe

Christoph: ich das und trage nicht selber dazu bei, das Ganze zu verbessern.

Christoph: Und da gibt es dann eben eine Menge von Lizenzen.

Christoph: Die bekannteste ist die GNU General Public License, kurz GPL genannt,

Christoph: die eben garantiert, dass wenn man Änderungen vornimmt an der Software und guckt.

Christoph: Die Software veröffentlicht, auf welche Form auch immer, darf man auch geschäftlich

Christoph: machen, aber dann ist man verpflichtet, diese Änderungen auch wieder der Öffentlichkeit

Christoph: zur Verfügung zu stellen.

Christoph: Das Ganze firmiert unter dem Namen Copy Left als quasi Verballhornung von Copy

Christoph: Right und sorgt eben dafür,

Christoph: dass Menschen, die profitieren von dieser quelloffenen Software,

Christoph: auch wieder verpflichtet sind,

Christoph: ihren Beitrag zurückzugeben an die Gemeinschaft.

Wolfgang: Und wenn wir jetzt beispielsweise hier bei der PostgreSQL bleiben,

Wolfgang: die Leute, die daran arbeiten,

Wolfgang: machen das zu einem großen Teil, weil sie da Lust dran haben,

Wolfgang: weil es ihnen Spaß macht und teilweise machen das die Leute einfach so in ihrer

Wolfgang: Freizeit, anstatt jetzt vielleicht eine Serie zu schauen oder Fußball zu spielen,

Wolfgang: wird da eben jetzt an der Datenbank oder an anderen Projekten entwickelt.

Wolfgang: Aber es gibt natürlich jetzt auch so Firmen wie Microsoft,

Wolfgang: die das ganz gut finden, wenn die Datenbank weiterentwickelt wird und dann sponsern

Wolfgang: die jetzt beispielsweise jemanden,

Wolfgang: beziehungsweise haben Mitarbeitende und die dürfen dann zu einem gewissen Prozentsatz

Wolfgang: ihrer Zeit oder vielleicht auch Fulltime eben an so einem Projekt arbeiten.

Wolfgang: Und das ist eigentlich schon was ziemlich Cooles, weil wenn man so von außen

Wolfgang: drauf schaut, stellt man sich vielleicht ja auch manchmal die Frage,

Wolfgang: hä, warum machen die Leute das dann einfach umsonst in ihrer Freizeit?

Wolfgang: Das kostet doch auch viel Zeit.

Wolfgang: Aber ich glaube, so das spannende Ding ist halt einfach, naja,

Wolfgang: weil es Spaß macht. Also ich mache in meiner Freizeit auch viele Dinge und andere

Wolfgang: Leute würden vielleicht sagen, hä, warum macht denn der das in seiner Freizeit?

Wolfgang: Da gibt es doch Besseres.

Wolfgang: Und das mag natürlich stimmen, weil es für andere Leute was Besseres gibt.

Christoph: Ich glaube, es ist tatsächlich auch, es sind tatsächlich mehrere Dinge,

Christoph: die da reinspielen. Also es gibt...

Christoph: Im Prinzip ja ein richtiges Ökosystem von Open Source.

Christoph: Es ist nicht irgendwie so ein paar Stücke Software, die Open Source sind,

Christoph: sondern es ist ein richtig gigantisches Ökosystem von Projekten.

Christoph: Und zwar alles von Ein-Personen-Projekten, von der Studentin,

Christoph: die in ihrer Freizeit halt mal was baut, woran sie Spaß hat und das Ganze auf

Christoph: GitHub pusht und in ihrer Bude da ein bisschen rumfrickelt.

Christoph: Bis hin zum richtig großen System, wo eben Dutzende, Hunderte oder sogar Tausende

Christoph: von Leuten mitarbeiten.

Christoph: Ich sage nur Linux Kernel, der ja mittlerweile um die 30 Millionen Zeilen Code

Christoph: hat und x Firmen da mitarbeiten. Und die Motivation von Menschen,

Christoph: die da mitarbeiten, ist natürlich sehr stark unterschiedlich.

Christoph: Beim Ein-Personen-Projekt ist es dann halt, da hat jemand Bock,

Christoph: was zu machen, was auszuprobieren und stellt es halt einfach mal der Öffentlichkeit

Christoph: zur Verfügung, damit auch andere davon lernen können oder auch ein bisschen was beitragen können.

Christoph: Und auf der anderen Seite haben wir dann eben wirklich Firmen,

Christoph: die ein Geschäftsinteresse haben und die merken, wenn wir alle,

Christoph: auch wenn wir vielleicht in Konkurrenz zueinander stehen,

Christoph: ich denke jetzt an Microsoft und Red Hat und Intel und AMD etc.

Christoph: Pp., die tragen alle zum Linux-Kernel bei.

Christoph: Und zwar wirklich signifikante Arbeit, weil sie wissen, es lohnt sich für uns, hier zu kooperieren.

Wolfgang: Und das ist cool, oder? Also das ist auch cool, wenn man mal aus der Software

Wolfgang: so ein bisschen zurücktritt und nicht nur auf Software schaut.

Wolfgang: Ich meine, so diese Art von Kooperation, ich glaube, die könnten wir auch in

Wolfgang: manch anderem Bereich ganz gut gebrauchen. Oh ja.

Wolfgang: Christoph, wie ging es denn dann weiter? Der Andres Freund, der ist,

Wolfgang: wie gesagt, Experte für so Performance-Geschichten.

Wolfgang: Und der hat dann, glaube ich, so ein paar Tests durchgeführt mit einer Vorab-Version von Debian Linux.

Christoph: Genau. Also wie gesagt, Andres ist Performance-Guru. Genau.

Christoph: Eine seiner Aufgaben ist es eben, Patches, also Code-Änderungen,

Christoph: die jemand eingereicht hat, zu begutachten und auf ihre Qualität zu prüfen.

Christoph: Und das macht man eben zum einen in Form von Code-Review, man schaut sich diesen

Christoph: Code an und guckt, sieht es gut aus, hat es irgendwelche Probleme,

Christoph: passt es soweit zu unseren Richtlinien.

Christoph: Aber anderes ist es ganz besonders wichtig, dass solche Code-Änderungen halt

Christoph: auch nichts Negatives an der Performance des Gesamtsystems bringen und deswegen

Christoph: hat er eine eigene Testumgebung aufgesetzt.

Christoph: Das ist ein Server, den er auf einem sehr aktuellen Stand hält mit Debian Unstable,

Christoph: und den er auch entsprechend konfiguriert

Christoph: hat, dass er gut nachvollziehbar Performance-Messungen damit machen kann.

Christoph: Das heißt, er hat dann auch noch so Dinge ausgeschaltet wie Frequenzboost.

Christoph: Was ja eigentlich einiges an Performance noch bringt, aber schlecht ist für

Christoph: Messungen, weil es eben unvorhersehbar ist.

Christoph: Andres hat jetzt einen Patch bekommen, hat den für gut befunden,

Christoph: aber führt jetzt noch ein paar Performancetests durch.

Christoph: Und bei diesen Performancetests stellt er fest, dass die Ergebnisse immer mal

Christoph: wieder so komische Ausreißer nach oben haben.

Christoph: Und er schaut sich den Code noch mal genauer an und sieht, an dem Patch selbst

Christoph: kann das eigentlich nicht liegen. Was ist denn dann los?

Christoph: Und was er dann macht, ist eben mal Top öffnen. Das ist so der Linux-Task-Manager.

Christoph: Ja. Und stellt fest, dass da immer wieder in unregelmäßigen Abständen so ein

Christoph: kleiner Peak an Prozessorlast entsteht.

Christoph: Und der Topf zeigt auch genau an, woher das kommt und zwar ist es von einem

Christoph: Prozess namens SSHD, der SSH-Server.

Wolfgang: Ja, SSH-Server kann man, glaube ich, kurz erklären, ist einfach die Komponente,

Wolfgang: wenn du dich remote einloggen möchtest über das SSH-Protokoll, also Secure Shell.

Wolfgang: Das bedeutet, du kannst dich aus der Ferne an einem Rechner anmelden und kannst,

Wolfgang: wenn die Anmeldung erfolgreich ist, also wenn du dich korrekt authentifiziert

Wolfgang: hast, Kannst du mit der Maschine so arbeiten, als ob du da vorsitzt und einfach

Wolfgang: damit irgendwas machst?

Wolfgang: Kannst Daten lesen, schreiben, Befehle ausführen etc.

Wolfgang: Und SSH ist auch so der große Standard für irgendwelchen entfernten Operationen, oder?

Christoph: Genau. Andres ist selber auch bei SSH auf diesem Server angemeldet.

Wolfgang: Ja.

Christoph: Aber es ist auffällig, dass da jetzt diese Lastspitzen drin sind,

Christoph: weil früher war das nicht der Fall.

Wolfgang: Und er wird neugierig, weil er ist Experte für Performance-Testing.

Christoph: Richtig. Okay. Und und,

Christoph: Und woher kommt jetzt diese Last? Naja, Andres schaut im Syslog nach und stellt

Christoph: fest, na gut, es gibt halt immer wieder Anmeldeversuche per SSH auf seinem Server.

Christoph: Das ist jetzt an und für sich erstmal überhaupt nichts Ungewöhnliches,

Christoph: weil dieser Server hängt im

Christoph: Internet und wir alle wissen, das Internet ist ein böser und dunkler Ort.

Christoph: Und im Internet sind nicht nur liebe Menschen unterwegs, sondern da sind halt

Christoph: leider auch einige Kisten einfach gekapert von Botnetzen.

Christoph: Ja. Und diese Botnetze, die machen halt gerne auch mal einfach Probing.

Christoph: Das heißt, die schauen mal so im Internet rum, was sind da für Server erreichbar.

Christoph: Ach, guck mal da, da ist eine Kiste, wo ein SSH-Dämon draufläuft.

Christoph: Schauen wir doch mal, ob der Admin als Passwort 123456 gesetzt hat.

Wolfgang: Ja.

Christoph: Ja, und wenn das der Fall ist, dann vergrößert sich dieses Botnetz gleich mal um eine Kiste.

Christoph: Und dementsprechend haben wir halt einfach im Internet ein gewisses Grundrauschen

Christoph: an Verbindungsversuchen per SSH.

Christoph: Und bislang war das alles überhaupt kein Problem.

Christoph: Aber auf einmal sehen wir zusätzliche Last im SSH-Dämon. Und das ist auffällig.

Wolfgang: Okay, und der Andres, der arbeitet jetzt natürlich mit dieser Unstable-Version,

Wolfgang: also mit einer im Prinzip Vorab-Version vom nächsten Debian-Release,

Wolfgang: da könnte es natürlich auch sein, dass da vielleicht die Software,

Wolfgang: die draufläuft, nicht so stable ist, dass da vielleicht eine neue Version von

Wolfgang: diesem SSH-Daemon läuft, die vielleicht nicht so stabil ist.

Wolfgang: Also vielleicht hat er ja einfach einen Fehler gefunden in Debian und die Leute

Wolfgang: freuen sich, wenn er das rechtzeitig dann meldet, weil dann kann man das noch

Wolfgang: fixen bis zum nächsten Release. Genau.

Christoph: Und da haben wir eben genau den richtigen Mann am richtigen Ort.

Christoph: Ich glaube, es gibt viele von uns, die in so einer Situation einfach mit den

Christoph: Achseln zucken und sagen, ja, okay, ist ein Problem.

Christoph: Ach, habe ich jetzt keine Zeit, mich drum zu kümmern. dann soll jemand anders machen.

Christoph: Aber anderes kennt sich halt aus und weiß halt genau, hey, Performanceprobleme,

Christoph: das ist meine Spezialität. Ja.

Christoph: Und dann wirft er halt mal so einen Profiler auf den SSH-Dämon.

Christoph: Profiler, das Werkzeug Perf, ist eben ein Werkzeug, mit dem man ein laufendes

Christoph: Programm live beobachten kann.

Christoph: Und das spuckt einem dann Statistiken aus, an welcher Stelle dieses Programm

Christoph: wie viel Prozessorzeit verbraten hat. Da kriegt man dann schöne Graphen raus,

Christoph: solche Flame-Graphs, das ist richtig cool visualisiert, wenn man das will.

Christoph: Und die Infos, die aus diesem Profiler rauskommen, sind seltsam.

Wolfgang: Warum denn?

Christoph: Anderes sieht, dass ein Großteil dieser Prozessorzeit in einer Bibliothek verbraten

Christoph: wird, die LibLZMA heißt.

Christoph: LibLZMA ist eine Kompressionsbibliothek für den LZMA-Algorithmus.

Christoph: Das ist ein relativ gebräuchliches Kompressionsverfahren, das eben Daten verlustfrei

Christoph: kompakt darstellen kann. So

Christoph: ein bisschen wie ZIPP, nur deutlich effektiver auf Kosten von Rechenzeit.

Wolfgang: Und das ist ein bisschen komisch, dass diese Bibliothek jetzt verwendet wird

Wolfgang: beim Anmeldevorgang über SSH?

Christoph: Ja, das ist aus zwei Gründen etwas komisch.

Christoph: Und zwar zum einen ist es seltsam, dass SSH versucht, irgendwelche Datenkompressionen

Christoph: durchzuführen, bevor überhaupt eine Anmeldung stattgefunden hat.

Wolfgang: Ja.

Christoph: Sobald man sich angemeldet hat, ist es plausibel, dass da der Datenstrom eventuell komprimiert wird.

Christoph: Aber bevor überhaupt die Authentifizierung durchgegangen ist, das ist auffällig. Ja.

Christoph: Und das zweite, was auffällig ist, ist, Andres schaut sich den Stacktrace an

Christoph: und stellt fest, okay, da gibt es einen direkten Aufruf von dem SSH-Programm

Christoph: in die LZMA-Bibliothek.

Christoph: Aber das SSH-Programm linkt überhaupt nicht direkt gegen diese Bibliothek,

Christoph: sondern nur indirekt über eine andere Bibliothek.

Christoph: Das heißt eigentlich, wenn man da einen Stacktrace hätte, würde man erwarten,

Christoph: dass wir noch diese andere Bibliothek in der Mitte, das ist die LibSystemD,

Christoph: dass wir die auch in dem Stacktrace drinnen sehen würden. Tun wir aber nicht.

Wolfgang: Das bedeutet, wenn ich es mal vielleicht ein bisschen einfacher mit meinen Worten

Wolfgang: zusammenfassen kann und korrigiere mich bitte, wenn ich es falsch verstanden habe.

Wolfgang: Wir haben jetzt diesen Prozess, dieses SSH-Programm, sage ich mal,

Wolfgang: und wir merken jetzt oder Andres merkt jetzt bei seiner Analyse, okay,

Wolfgang: diese Kompressionsbibliothek wird auf einmal aufgerufen während des Anmeldevorgangs.

Wolfgang: Aber wenn du sagst, das linkt nicht direkt, das bedeutet, die Entwickler von

Wolfgang: SSH haben jetzt nicht irgendwann mal gesagt,

Wolfgang: oh, jetzt benutzen wir hier ganz direkt diese Kompressionsbibliothek,

Wolfgang: um irgendwas zu komprimieren, sondern SSH benutzt was anderes,

Wolfgang: eine andere Bibliothek.

Wolfgang: Und diese andere Bibliothek hat wiederum diese Kompressionsbibliothek als Abhängigkeit.

Wolfgang: Also das ist so ein Hopp mehr, das ist nicht direkt.

Christoph: Genau.

Wolfgang: Und das ist komisch.

Christoph: Das ist komisch. Und Andres erinnert sich an noch was anderes,

Christoph: was ihm vor ein paar Wochen passiert ist und er seitdem schon wieder vergessen

Christoph: hatte, aber jetzt erinnert er sich wieder dran.

Christoph: Und zwar hat er vor ein paar Wochen schon mal Code debugged mit Hilfe des Werkzeugs Valgrind.

Christoph: Weil Grint ist ein dynamisches Analysewerkzeug, das versucht,

Christoph: Speicherzugriffsfehler zu finden.

Christoph: Sowas wie Speicherlacks und ungültige Speicherzugriffe, Pufferüberläufe und so weiter.

Christoph: Und dieses Werkzeug, weil Grint, hat damals, vor ungefähr einem Monat,

Christoph: auch seltsame Speicherzugriffe in genau dieser LZMA-Bibliothek ausgespuckt. Ja.

Christoph: Und die Stacktraces sehen sich sehr, sehr ähnlich.

Christoph: Das heißt, es ist dieselbe Stelle in der LZM-Abbegültig, die damals Speicherfehler

Christoph: produziert hat, die er jetzt wieder sieht, die unerwartet viel Prozessorzeit verbrauchen.

Wolfgang: Und das sind zu viele Zufälle.

Christoph: Viele Viele Zufälle, ja.

Wolfgang: Ja. Okay, und was macht er dann? Andreas schaut sich das dann nochmal ein bisschen

Wolfgang: genauer an, taucht tiefer ein und kommt dann zur Erkenntnis,

Wolfgang: dass das kein Fehler ist, der hier versehentlich irgendwie reingerutscht ist.

Wolfgang: Ich meine, du hast in deinem Leben schon viel programmiert, ich habe auch schon

Wolfgang: viel programmiert. Ich habe auch schon ganz tolle Fehler irgendwo reinprogrammiert,

Wolfgang: allerdings nie mit Absicht, sondern aus Unwissenheit oder weil ich vielleicht

Wolfgang: was übersehen habe oder abgelenkt war. So was passiert, ja.

Wolfgang: Aber was anderes hier entdeckt ist was ganz anderes und zwar was Absichtliches.

Christoph: Und das bemerkt er spätestens, als er das Ganze mal versucht,

Christoph: im Debugger zu starten. Ja.

Christoph: Und als er das tut, ist das seltsame Verhalten auf einmal weg.

Wolfgang: Ah.

Christoph: Und das ist natürlich eine ganz große Red Flag, weil das ist ein sehr großer Hinweis darauf,

Christoph: dass dieser Code bemerkt, dass er gerade debuggt wird und deswegen die Füße still hält.

Wolfgang: Das erinnert mich an den Dieselabgasskandal, wo das Fahrzeug auch bemerkt hat,

Wolfgang: ob man auf dem Prüfstand ist. Und dann war alles richtig, richtig gut.

Wolfgang: Und in der freien Wildbahn war dann alles richtig, richtig schlecht.

Wolfgang: Also da kann man vielleicht schon so eine kleine gedankliche Parallele ziehen,

Wolfgang: einfach um das besser zu erklären.

Christoph: Das ist eine sehr gute Parallele, ja. Ja, genau so ist das.

Christoph: Quasi eine Prüfstanderkennung. Und wenn ich merke, dass ich beobachtet werde,

Christoph: dann tue ich so, als wäre nichts. Genau.

Christoph: Jedenfalls sagt Andres, okay, da ist irgendwas extrem faul.

Christoph: Und jetzt lädt er sich mal den Quellcode von dem Softwarepaket,

Christoph: wo diese lib-lcdma herkommt, runter.

Christoph: Ja. Das Softwarepaket ist ein Open-Source-Projekt namens xzutils oder xz.

Christoph: Das bündelt eben diesen Kompressionsalgorithmus und noch ein Containerformat.

Christoph: Das Container-Format heißt XZ, der Kompressions-Algorithmus heißt LZMA.

Wolfgang: Das gibt es auch schon seit 15 Jahren, oder? Also XZ ist auch schon uralt.

Christoph: Genau, das gibt es schon richtig lange und ist auch ziemlich weit verbreitet.

Christoph: Also alle gängigen Linux-Distributionen enthalten das. Und ja,

Christoph: Andres baut jetzt die lib-lzma einmal von diesem direkt von der Webseite oder

Christoph: von GitHub runtergeladenen Quellcode und probiert es damit.

Christoph: Und damit ist alles unauffällig.

Wolfgang: Mysteriös. Genau.

Christoph: Das heißt, wo kommt jetzt dieses seltsame Verhalten her?

Christoph: Andres benutzt, wie gesagt, Debian Unstable. Das heißt, der Verdacht liegt nahe,

Christoph: dass der Debian-Maintainer irgendwas reingeschmuggelt hat, was da nicht hingehört. Ja.

Christoph: Deswegen schaut sich Andres das Ganze nochmal ein bisschen genauer an,

Christoph: die Art und Weise, wie dieses Debian-Paket gebaut wird.

Christoph: Und dabei stellt er fest, dass da leicht seltsame Dinge passieren.

Christoph: Da wird also eine zusätzliche Datei zwischendrin mal erstellt und dann wird

Christoph: die wieder gelöscht und dann wird die nochmal erstellt und am Ende ist die wieder weg,

Christoph: und das riecht alles danach, als ob da ein bisschen Extracode verschleiert mit

Christoph: reingebaut wird in diese Bibliothek und dann schnell wieder gelöscht,

Christoph: damit man es nicht merkt.

Wolfgang: Ja.

Christoph: Und er schaut sich das noch ein bisschen genauer an und stellt eben fest,

Christoph: dass in dem Quaycode,

Christoph: so ein paar Binärarchive liegen, die eigentlich,

Christoph: gekennzeichnet sind als Testdateien. Also es wird, wie man es in jedem guten

Christoph: Softwareprojekt macht,

Christoph: wird eine Testsuite mitgeliefert im Quellcode und diese Testsuite kriegt halt

Christoph: ein paar Dateien zum Testen, zum automatisiert drauf rumklopfen und zu schauen,

Christoph: verhält sich das Ganze so, wie es sich verhalten soll.

Wolfgang: Ja, das macht ja auch Sinn.

Christoph: Aber er stellt eben fest, dass aus diesen Testarchiven Daten entschleiert und dann entpackt werden.

Christoph: Und so kommt diese zusätzliche Datei, die da jetzt mit reingebaut wird und dann

Christoph: wieder gelöscht in den Bild mit rein.

Wolfgang: Und ich finde an der Stelle, ich habe mir da auch einige Sachen durchgelesen

Wolfgang: über die Geschichte, an der Stelle fand ich es noch super, super spannend,

Wolfgang: dass eben hier diese Binärarchive, dass da auch welche dabei waren,

Wolfgang: die als defekt gekennzeichnet waren und das macht natürlich auch Sinn.

Wolfgang: Also wenn ich ein Kompressions- und Dekompressionsprogramm habe,

Wolfgang: dass ich dann zum Testen auch irgendwelche defekten Archive habe,

Wolfgang: um einfach zu schauen, erkennt das mein Programm oder meine Bibliothek,

Wolfgang: gibt es die korrekte Fehlermeldung, stürzt das nicht ab etc.

Wolfgang: Also es macht komplett Sinn, ist plausibel.

Wolfgang: Und ich habe gelesen, diese defekten Archive, die waren eigentlich gar nicht

Wolfgang: defekt, sondern da wurden einfach ein paar Zeichen drin vertauscht.

Wolfgang: Also ich sage mal, es wurde irgendwie Plus durch Minus ersetzt und dadurch war

Wolfgang: das nicht mehr lesbar, weil es eine Binärdatei ist.

Wolfgang: Und um das Ganze jetzt zu entpacken, wurden diese ganzen Zeichen wieder ersetzt,

Wolfgang: um das ganze Ding dann wieder lesbar zu machen.

Wolfgang: Und dann hat man es entpackt und die Daten, die verschlüsselt waren,

Wolfgang: noch entschlüsselt und hatte so dann ganz bequem diesen Schadcode einfach versteckt.

Wolfgang: Und ich meine, wer kommt denn auf die Idee, in einer kaputten Binärdatei nach irgendwas zu suchen?

Wolfgang: Also da kommst du ja nicht drauf. Und selbst wenn du den Verdacht hast,

Wolfgang: ist es ja auch nicht trivial, dann was zu finden.

Christoph: Das ist richtig ausgefuchst, ne? Ja. Ja, wie gesagt, Andres hat erstmal den

Christoph: Verdacht, dass der Debian-Maintainer dafür verantwortlich sein könnte,

Christoph: weil er sieht ja, Quellcode von GitHub, alles sauber.

Christoph: Debian-Paket, seltsames Verhalten.

Wolfgang: Ist naheliegender Verdacht.

Christoph: Genau. Er stellt dann gleichzeitig fest, dass das Paket in Debian auch nicht

Christoph: so wirklich gut gewartet wird und die letzten paar Paketversionen,

Christoph: die in Debian reinkamen, kamen eben über sogenannte Non-Maintainer-Uploads.

Christoph: Das heißt, jemand anders, der eigentlich gar nicht offiziell den Maintainer-Hut

Christoph: aufhat, hat sich halt mal so nebenher noch mit drum gekümmert.

Christoph: Also ist das vielleicht der Schuldige?

Wolfgang: Ja.

Christoph: Andres schaut noch ein bisschen genauer rein und lädt sich auch nochmal den

Christoph: Quellcode-Tarball direkt von der XZ-Utils-Website runter.

Wolfgang: Ich glaube, Christoph, an der Stelle muss man vielleicht auch nochmal ganz kurz

Wolfgang: einen kleinen Exkurs machen, was ein Quellcode-Tarball ist oder was überhaupt

Wolfgang: so ein Quellcode-Release ist und warum es sowas überhaupt gibt.

Wolfgang: Denn wenn ich GitHub habe und da auf die Website draufgehe, ich kann mir den

Wolfgang: Quellcode anschauen, ich kann ja auch schauen, was ist ein spezieller Tag oder

Wolfgang: ein spezieller Branch eventuell und kann ja auch bei GitHub sagen,

Wolfgang: okay, bitte von diesem einen Tag lade mir alle Files als ZIP-Datei runter,

Wolfgang: dann habe ich ja auch alles.

Christoph: Ja, vielleicht müssen wir an der Stelle auch nochmal ein bisschen genauer darauf

Christoph: eingehen, wie das überhaupt funktioniert mit Software-Releases in der Open-Source-Szene.

Wolfgang: Ja, wie funktioniert denn das?

Christoph: Ja,

Christoph: Also wir haben da so das Modell eines Flusses, wo die Software abwärts schwimmt.

Christoph: Also es wird im Englischen gesprochen von Upstream und Downstream.

Christoph: Upstream, also Strom aufwärts, sitzen eben die Open-Source-Projekte selbst.

Christoph: Die verwalten heutzutage ihren Quellcode üblicherweise in einem Git-Repository.

Christoph: Da gibt es dann ein paar Menschen, eine oder mehrere Personen,

Christoph: die Maintainer-Zugang haben. Das heißt, die verwalten wirklich diese Repositories

Christoph: und haben Schreibrechte auf dieses Repository und können Releases kennzeichnen und so weiter.

Christoph: Und machen eben auch Code Review für Beiträge, die von Nicht-Maintainern kommen.

Christoph: Und diese Maintainer entscheiden, wann jetzt der Code in einem releasbaren Zustand ist.

Christoph: Und wenn das der Fall ist, dann wird dieser Stand vom Repository eingefroren

Christoph: und gekennzeichnet mit einer Versionsnummer. Ja.

Christoph: Auch wirklich dem entspricht, wie die Projekt-Maintainer ihn herausgegeben haben.

Christoph: Und Downstream-Projekte wie Debian nehmen dann eben diese Tarballs,

Christoph: und pflegen sie in ihre Paketbasis ein.

Christoph: Das funktioniert so, dass das Downstream-Projekt, also die Linux-Distribution dann eben so ein,

Christoph: Rezept, sage ich mal, daneben legt, wo genau drinsteht, okay,

Christoph: dieser Tarball, Da wird es auf folgende Art und Weise entpackt und gebaut und

Christoph: kompiliert und die installierten Dateien landen dann da und dort.

Christoph: Und so entsteht dann eben ein sogenanntes Paket, das dann an die Endnutzer des

Christoph: Systems ausgeliefert werden kann.

Wolfgang: Das bedeutet, dass jetzt bei so einer Open-Source-Software wie jetzt bei diesen XZ-Utils,

Wolfgang: ich habe zwar in dem Git-Repository den ganzen Code drin, ich kann mir den anschauen,

Wolfgang: wenn ich aktiv daran arbeiten möchte, dann würde ich mir den auch auschecken und damit arbeiten.

Wolfgang: Wenn ich das ganze Ding jetzt aber nur verwenden möchte, dann würde ich mir

Wolfgang: eben dieses Release runterladen, und zwar dieses Source-Code-Release,

Wolfgang: und könnte mir das Ding dann einfach lokal bauen und kompilieren und dann verwenden

Wolfgang: und die ganzen Linux-Distributionen, die machen es genauso, die laden sich das

Wolfgang: Source-Code-Release runter und,

Wolfgang: verarbeiten das dann und machen es dann auch nutzbar für ihre ganzen Anwender.

Wolfgang: Ja, und da steckt ja jetzt der Wurm drin, wenn man es mal so sagen möchte.

Christoph: Genau, also Andres stellt wirklich fest, es ist nicht der Deviant-Maintainer,

Christoph: der irgendwas gemacht hat, sondern es ist tatsächlich so,

Christoph: der Tarball, der direkt über die Website des XZ-Projektes runtergeladen werden

Christoph: kann, ist in einem kleinen Detail in einer Datei anders als der Quellcode,

Christoph: der in das GitHub-Repository eingecheckt ist.

Christoph: Und genau dieser kleine Unterschied, das sind so ein paar kryptische Shell-Befehle,

Christoph: kann man sehr leicht übersehen, sieht erst mal harmlos aus.

Christoph: Aber der stößt genau diese Kette, über die wir gerade geredet haben,

Christoph: wo Zeichen in diesen beschädigten Testarchiven ersetzt werden und dann das Ganze

Christoph: ausgepackt und entschlüsselt und noch mal ausgepackt und dann mit ...

Christoph: In den Bildprozess mit reingebracht.

Christoph: Genau das stößt dieses kleine Schnipselchen mit an.

Wolfgang: Das heißt so, dass das ganze große,

Wolfgang: also den ganzen großen Chartcode, der war schön versteckt in diesen Archiven, die konnte jeder sehen,

Wolfgang: wenn man darauf geachtet hätte, aber man konnte nicht reinschauen,

Wolfgang: weil es eben Binärdateien waren und jetzt gab es lediglich noch so ein kleines

Wolfgang: Stückchen zusätzlichen Code, der dann im Rahmen von diesem Bildprozess ja alles entpackt hat,

Wolfgang: alles modifiziert hat und dafür gesorgt hat, dass am Schluss die Bibliothek,

Wolfgang: die rauspurzelt, eben halt ja verseucht war, wenn man es vielleicht so sagen möchte,

Wolfgang: mit dieser Backdoor. Das ist ganz schön clever, oder?

Christoph: Extrem. Also mich hat das stark beeindruckt.

Wolfgang: Da wird die Person oder die Personen, die dafür verantwortlich sind,

Wolfgang: werden da sicherlich sehr viel Hirnschmalz investiert haben.

Christoph: Auf jeden Fall.

Wolfgang: Ja, wie ging es denn dann weiter? Der Andres, der hat ja dann für sich den Punkt

Wolfgang: erreicht, wo er sich ja sicher war, was hier Sache ist und dass es sich jetzt

Wolfgang: nicht um so einen Programmfehler handelt, sondern dass es was Ernstes ist.

Wolfgang: Und er hat ja dann Ende März so ein Announcement gemacht und hat so seine ganzen

Wolfgang: Erkenntnisse veröffentlicht. Und ich glaube, dann ging es ja auch Schlag auf Schlag.

Christoph: Genau. Das war, also er hat zunächst noch nicht veröffentlicht,

Christoph: sondern erst mal an ein paar interne Security-Mailing-Listen seine Erkenntnisse geschrieben,

Christoph: weil er gemerkt hat, okay, ich bin jetzt hier mit meinem technischen Latein

Christoph: am Ende. Da ist auf jeden Fall definitiv was faul.

Christoph: Und jetzt müssen wir ein paar Leute noch mit drauf schauen, die richtig was

Christoph: von der Sache verstehen.

Christoph: Und da haben sich ein paar weitere Menschen gefunden, die noch das Ganze mit

Christoph: analysiert haben und auch sehr schnell bestätigt haben, dass sie da auf was Großes gestoßen sind.

Christoph: Und sie haben dann auch die Entscheidung getroffen, dass sie da jetzt nicht

Christoph: lange drauf sitzen wollen und das erst mal aussitzen und gucken,

Christoph: sondern sie haben gesagt, das ist so eine krasse Lücke, da müssen wir sofort

Christoph: der Öffentlichkeit Bescheid sagen.

Christoph: Und deswegen hat Andres am 29.

Christoph: März, also jetzt zum Aufnahmedatum vor genau einem Monat, auf die öffentliche

Christoph: OSS Security Mailing Liste die gesammelten Erkenntnisse aufzunehmen.

Christoph: Veröffentlicht und dann ist alles explodiert.

Wolfgang: Ja, ich glaube, genauso kann man es sagen. Also alle News-Seiten,

Wolfgang: die irgendwie so aus dem technologischen Bereich, Computer-Internet-Bereich

Wolfgang: kommen, da gab es nichts anderes.

Wolfgang: Und selbst in den Mainstream-Medien wurde da viel drüber berichtet.

Wolfgang: Also ich habe, keine Ahnung, bei Spiegel Online gab es einen Artikel,

Wolfgang: selbst bei der Bild-Zeitung gab es einen Artikel.

Wolfgang: Die Überschrift war da, glaube ich, ein bisschen reißerischer als vielleicht

Wolfgang: jetzt bei irgendeinem Technologie-Medium.

Wolfgang: Aber ja, es wurde überall darüber berichtet.

Wolfgang: Und es war auch so, wie ich es am Anfang schon gesagt habe, ein bisschen der

Wolfgang: Tenor. Wir sind ganz knapp an so einer Katastrophe vorbeigeschlittert.

Wolfgang: Und ein Mann hat uns gerettet durch seine Neugierde, muss man ja fast schon sagen.

Wolfgang: Christoph, ich finde die Geschichte bis hier schon sehr, sehr spannend,

Wolfgang: Weil ich glaube, auch ohne jetzt jedes technische Detail zu verstehen,

Wolfgang: ist schon, glaube ich, klar geworden, dass das ganz schön ausgefuchst war.

Wolfgang: Aber spannend ist auch die Frage oder auch die Geschichte, wie es denn dazu kam.

Wolfgang: Denn ich glaube, die Ursprünge, die reichen ja schon zweieinhalb,

Wolfgang: drei Jahre in die Vergangenheit zurück.

Christoph: Also, um nochmal Zwischenbilanz zu ziehen. Wir wissen jetzt also,

Christoph: in XZ-Utils ist Schadcode drin.

Christoph: Wir wissen, dass es definitiv in diesem Projekt ist.

Christoph: Und jetzt schauen wir uns halt an, wie ist der da reingekommen?

Christoph: Wer ist da der Verantwortliche?

Wolfgang: Ja, das muss sich ja feststellen lassen, denn du hast es ja vorhin schon gesagt,

Wolfgang: es gibt so Maintainer, die haben Schreibrechte für solche Projekte.

Wolfgang: Also ich persönlich könnte jetzt ja nicht rangehen und da irgendwie was ganz

Wolfgang: geheim reinschmuggeln, ohne dass es jemand merkt.

Christoph: Genau. Und das XZ-Utils-Programm, Das ist eben,

Christoph: wie du vorhin schon gesagt hast, schon relativ alt, schon so 15 Jahre und wurde

Christoph: in dieser Zeit eigentlich die ganze Zeit von einer einzigen Person betreut.

Christoph: Der Maintainer sitzt in Finnland, heißt Lasse und Lasse kümmert sich eben darum,

Christoph: das Ganze weiterzuentwickeln.

Christoph: Aber er macht das Ganze unbezahlt als Hobby in seiner Freizeit,

Christoph: hat jetzt nicht so wahnsinnig viel Zeit und entsprechend verläuft die Entwicklung

Christoph: halt ein bisschen schleppend.

Christoph: Es kommen immer mal wieder Leute mit Änderungsvorschlägen.

Christoph: Er schaut sich das auch an, er kümmert sich auch darum, aber es ist halt alles ein bisschen zäh.

Wolfgang: Ja, ich glaube, man muss dazu sagen, dass diese XZ-Utils, die sind auch irgendwie fertig programmiert.

Wolfgang: Also es ist letztendlich ein Kompressionsalgorithmus, der wurde mal implementiert.

Wolfgang: Am Anfang gab es dann viel zu tun, bis das alles funktioniert hat.

Wolfgang: Da gab es auch ganz viele Ideen für irgendwelche Features. Aber jetzt nach so vielen Jahren,

Wolfgang: naja, es gibt ab und zu mal vielleicht auch mal noch einen kleinen Bug,

Wolfgang: den man fixen kann, aber da muss man jetzt oder da kann man jetzt auch nicht

Wolfgang: jeden Monat nochmal großartige neue Features nachliefern, weil das Ding funktioniert

Wolfgang: halt einfach und das ist ja auch gut so.

Christoph: Ja, an und für sich schon. Aber bei Software ist es halt trotzdem so,

Christoph: die muss gepflegt werden.

Christoph: Das ist jetzt eher unüblich, dass ein Softwareprojekt, auch wenn es eigentlich

Christoph: featurevollständig ist, über Jahre hinweg komplett unverändert bleibt.

Christoph: Weil es passiert halt doch mal, dass sich im Rest des Ökosystems was verändert.

Christoph: Dann ist auf einmal eine Schnittstelle anders.

Christoph: Dann muss man gegen diese neue Schnittstelle programmieren.

Christoph: Oder aber eine neuere Compiler-Version sorgt jetzt für striktere Warnungen und Fehler.

Christoph: Und dann muss man halt nochmal ein bisschen was nachkorrigieren in seinem Code.

Christoph: Oder es kommt halt jemand auf die Idee, was weiß ich, wir bauen jetzt noch Multithreading

Christoph: ein, um das Ganze zu beschleunigen und solche Sachen.

Christoph: Also das ergibt schon Sinn, dass so ein Softwareprojekt lebendig ist und nicht

Christoph: irgendwann komplett fertig und dann starr verweilt.

Christoph: Wir reisen jetzt mal in Oktober 2021, also schon ein ganzes Stück zurück.

Christoph: In diesem Oktober 2021 reicht jemand auf der XZ-Mailing-Liste einen Patch ein.

Christoph: Dieser jemand trägt den vermutlich chinesischen Namen Jia Tan und dieser Jia schlägt eben ...

Christoph: Ein bisschen Verbesserungen vor. Das sind jetzt eigentlich nur Off-Roam-Arbeiten,

Christoph: die er da vorschlägt, aber es sind sinnvolle Sachen.

Christoph: Und er kommt mit dem Lasse in Kontakt.

Wolfgang: Ja.

Christoph: Und sie kümmern sich eben drum, gemeinsam so ein paar Änderungen reinzubringen in dieses Repository.

Christoph: Das ist jetzt quasi so die Initialzündung dafür, dass Ja immer mal wieder so

Christoph: ein paar kleinere Änderungen reinbringt und allmählich ein bisschen ambitionierter wird.

Christoph: Ab einem gewissen Punkt bringt er halt so viele Änderungen rein,

Christoph: dass Lasse nicht mehr hinterherkommt in seiner begrenzten Zeit.

Christoph: Das wäre jetzt an sich erstmal kein großes Problem.

Christoph: Aber auf der Mailing-Liste melden sich daraufhin ein paar andere Leute,

Christoph: die anfangen ein bisschen zu pöbeln und sagen, Warum dauert denn das so lange?

Christoph: Hey, guck mal, da hat jemand ein interessantes neues Feature vorgeschlagen. Kannst du nicht mal?

Wolfgang: Ja.

Christoph: Und Lasse wird ein bisschen defensiv und sagt, hey, ich mache das als Hobby in meiner Freizeit.

Christoph: Und er gesteht auch ein, dass er ein paar längerwierige psychische Probleme

Christoph: hat, weswegen er nicht viel Zeit hat.

Wolfgang: Ja.

Christoph: Aber diese Pöbler auf der Mailing-Liste lassen dich locker und sagen,

Christoph: wenn du keine Zeit hast, dann ist das schon ein bisschen enttäuschend für uns als Community.

Christoph: Und wenn du das alleine nicht gebacken kriegst, dann hol dir halt Unterstützung.

Christoph: Und Lasse sagt, ja, okay, dieser Ja,

Christoph: der hat ja in letzter Zeit schon einiges an guten Beiträgen geleistet und gut

Christoph: mitgearbeitet und sie haben auch abseits der Mailing-Liste offenbar einiges

Christoph: an Kontakt miteinander gehabt.

Christoph: Ich weiß jetzt nicht wie, ob das per IRC war oder einfach so per E-Mail.

Christoph: Und es erwächst jedenfalls die Idee, dass er sich ja als Co-Maintainer mit ins

Christoph: Boot holt, damit sie diese Verantwortung zukünftig gemeinsam schultern.

Wolfgang: Und das wächst doch dann im Prinzip auch so die wichtigste Währung,

Wolfgang: die wir in der ganzen Open-Source-Community haben, oder? Also Vertrauen.

Wolfgang: Und ich habe mir da auch Gedanken drüber gemacht. Ich habe das Thema auch mit

Wolfgang: ein paar Leuten mal so besprochen.

Wolfgang: Und wie ist das eigentlich? Also du arbeitest in so einem Open-Source-Projekt,

Wolfgang: du arbeitest mit Leuten zusammen, über die du eigentlich nichts weißt.

Wolfgang: Du weißt nicht, woher kommen die, wie sehen die aus, du weißt bei einem Namen

Wolfgang: auch nicht, ey, wer steckt da dahinter. Also wenn jetzt jemand sich als Mann

Wolfgang: ausgibt, ist es ein Mann, ist es eine Frau, spielt es eine Rolle.

Wolfgang: Und ich bin, wie gesagt, das nicht so in der Open-Source-Community unterwegs,

Wolfgang: aber ich habe in den letzten 20, 25 Jahren auch regelmäßig in irgendwelchen

Wolfgang: Communities Leute kennengelernt im Internet,

Wolfgang: wo ich auch nichts wusste und wo ich teilweise nach Jahren erfahren habe oder

Wolfgang: mal die Leute auch getroffen habe nach Jahren.

Wolfgang: Und das aber spannend war, weil ich sagte, ach cool,

Wolfgang: wir kennen uns jetzt schon so lange, wir haben viel kommuniziert,

Wolfgang: vielleicht nur mit Text oder auch mal irgendwelchen Voice-Chats oder so und

Wolfgang: da wächst doch durchaus auch so ein Vertrauen irgendwo und irgendwann hast du

Wolfgang: so ein gutes Gefühl einfach.

Christoph: Ja, ist sehr interessant. Ich meine, Remote-Arbeit kennen wir ja jetzt mittlerweile

Christoph: seit Corona auch zur Genüge,

Christoph: aber im Firmenkontext haben wir wenigstens noch sowas wie Video-Chat per Teams

Christoph: oder Google Meet oder Slack oder was auch immer.

Christoph: Aber in der Open-Source-Szene gibt es das eigentlich nicht, sondern da wird

Christoph: dann halt per IRC oder E-Mail kommuniziert.

Christoph: Und da sieht man eigentlich sein Gegenüber nie wirklich.

Christoph: Man sieht nur wirklich das Gesicht. Man sieht nur, was jemand schreibt.

Christoph: Es wird rein textuell kommuniziert. Ja.

Christoph: Und das Vertrauen kommt daher, dass man sich die Arbeit von dieser Person anschaut.

Christoph: Und wenn es gute Arbeit ist und über einen längeren Zeitraum konsistent,

Christoph: dann fasst man halt tatsächlich das Vertrauen, dass man dieser Person ein paar

Christoph: zusätzliche Rechte einräumen kann.

Wolfgang: Ja, vielleicht liegt es auch daran, dass man vielleicht auch davon ausgeht,

Wolfgang: dass der Gegenüber ja gute Absichten hat.

Wolfgang: Weil ich glaube, wenn du halt so extrem misstrauisch bist, dann ist halt vieles auch sehr mühsam.

Wolfgang: Also vielleicht das Leben an sich ist super mühsam, wenn du sehr misstrauisch

Wolfgang: bist. Aber ich glaube, sowas wie Open Source könnte ja gar nicht funktionieren,

Wolfgang: wenn ich so mega misstrauisch bin und niemandem vertraue.

Wolfgang: Also wenn ich jetzt Lust habe, mich zu beteiligen, ich investiere da vielleicht gerne meine Zeit.

Wolfgang: Aber wenn ich jetzt noch so einen riesen Aufnahmeprozess durchlaufen muss,

Wolfgang: um zu beweisen, dass ich der bin, der ich bin, bla bla bla, da hätte ich vielleicht

Wolfgang: auch gar keine Lust drauf.

Christoph: Ja, das ist tatsächlich ein echt fundamentales Problem, wo ich auch nicht wirklich

Christoph: weiß, was eine gute Lösung ist.

Christoph: Man muss da so einen Mittelweg finden als Open-Source-Projekt.

Christoph: Komplettes Misstrauen heißt halt, dass niemand mitarbeitet und man allein da sitzt.

Christoph: Jetzt zu viel Vertrauen bedeutet, dass, naja, im einfachsten Fall halt einfach,

Christoph: sagen wir mal, schlechte Beiträge zu schnell durchgewinkt werden.

Christoph: Ja. Oder im allerschlimmsten Fall dann eben genau sowas passiert,

Christoph: dass jemand sich das Vertrauen erschleicht, der böse Absichten hat.

Wolfgang: Ja, ich meine, es gibt ja durchaus auch Open-Source-Projekte,

Wolfgang: wo der ganze Source-Code unter einer entsprechenden Open-Source-Lizenz ist,

Wolfgang: wo das Ganze auch irgendwo in GitHub liegt, wo aber die Maintainer sagen,

Wolfgang: ja, ihr könnt es euch gerne anschauen, aber wir haben gar keine Lust, dass ihr mitarbeitet.

Wolfgang: Wir machen das allein, wir sind ein festes Team von zwei, drei,

Wolfgang: vier, fünf Leuten, benutzt das gerne, forgt das gerne, macht gerne was damit,

Wolfgang: aber wir haben keine Lust auf eure Patches oder eure Mitarbeit.

Wolfgang: Also das ist dann vielleicht so eine Extremform von, wir finden Open Source

Wolfgang: generell gut, aber wir haben keinen Bock auf fremde Leute irgendwie oder vielleicht

Wolfgang: auch auf dieses Vertrauensthema.

Wolfgang: Ja, da gibt es glaube ich viele, viele Spielereien und wahrscheinlich am Ende

Wolfgang: des Tages nicht die eine richtige Antwort. fort.

Christoph: Und dann gibt es noch den Linux-Kanal, wo zwar jeder mitarbeiten kann, aber,

Christoph: sehr hohe Standards gesetzt werden. Ja. Und wenn man einen Beitrag einreicht,

Christoph: dann ist es sehr, sehr üblich, dass der x Iterationen durchlaufen muss,

Christoph: bis die entsprechenden Leute zufrieden sind.

Christoph: Und wenn man sich nicht an diesen Prozess hält, dann gibt es halt eine Watschen

Christoph: und der Änderungsvorschlag wird halt nicht eingepflegt.

Wolfgang: Ja, ich möchte jetzt mal ein Fazit nicht schon vorziehen, Aber eventuell war

Wolfgang: ja das ja auch der Gedanke bei dieser Geschichte hier, denn ich kann mir gut vorstellen,

Wolfgang: wenn man versucht hätte, direkt bei Open SSH eine Backdoor einzuschleusen,

Wolfgang: ich glaube, da hätten auch mehr Leute drauf geschaut.

Wolfgang: Und ich glaube, da wäre es auch viel schwieriger gewesen, das Vertrauen zu bekommen

Wolfgang: und damit durchzukommen, als bei so einem Mini-Projekt, das zwar wichtig ist,

Wolfgang: aber so irgendwie komplett am Rande der Aufmerksamkeit ist.

Christoph: Ja, genau. Weil bei OpenSSH wissen natürlich alle, dass das ein hochgradig securityrelevantes

Christoph: Projekt ist und dass man da ganz, ganz genau hinschauen muss, was da gemacht wird.

Christoph: Bei einer Kompressionsbibliothek, ja, meine Güte, werden Daten komprimiert.

Wolfgang: Was kann da schief gehen? Eine Menge, wie wir noch gleich sehen.

Wolfgang: Ja, wie ging es denn da weiter? Der Chiatan, der war ja da oder sie oder ich

Wolfgang: weiß nicht, also die Person auf jeden Fall war ja hoch motiviert,

Wolfgang: hat da viel beigetragen,

Wolfgang: hat da ganz viele Patches eingereicht und hat sich dann wohl hinter den Kulissen

Wolfgang: mit dem Lasse noch gut verstanden.

Wolfgang: Und, naja, wenn der Lasse schon sagt, dass er gerade viele Probleme hat,

Wolfgang: ich habe auch in seinem Statement so ein bisschen rausgelesen,

Wolfgang: dass er einfach auch eher überlastet war mit der ganzen Arbeit,

Wolfgang: vielleicht auch ein bisschen überfordert mit den ganzen Ansprüchen von der Community, die es hier gab.

Wolfgang: Dann ist es natürlich schon cool, wenn auf einmal aus dem Nichts jemand auftaucht,

Wolfgang: der Bock hat, da mitzuarbeiten und der das auch kann.

Wolfgang: Denn wir dürfen ja eins nicht vergessen, diese ganze Kompressionsbibliothek,

Wolfgang: die ist ja echt ziemlich kompliziert auch. Also ich meine, Kompressionsalgorithmen,

Wolfgang: das ist ja nichts, was man mal eben aus dem Ärmel schüttelt.

Wolfgang: Das Ganze ist in C programmiert, das macht es zumindest für mich nochmal schwieriger.

Wolfgang: Und da brauchst du ja auch jemanden, der die Skills mitbringt,

Wolfgang: sowas überhaupt kann und die Zeit und Lust mitbringt.

Wolfgang: Und ich glaube, da gibt es jetzt auch kein Überangebot von Personen,

Wolfgang: die sowas überhaupt leisten können.

Christoph: Ja, und insofern hat sich aus Sicht von Lasse dieser Ja eben als Glücksgriff

Christoph: herausgestellt, weil er war halt genau der richtige Mensch zur richtigen Zeit am richtigen Ort.

Christoph: Und ja, es geht halt weiter. Es kommen sinnvolle Beiträge von ihm.

Christoph: Er übernimmt auch schrittweise immer mehr Verantwortung, kümmert sich dann auch

Christoph: um die Website des Projekts, nimmt Kontakt zu den Downstream-Distributoren.

Christoph: Auf, sprich dort mit den Paket-Main-Trainern und,

Christoph: reviewt und akzeptiert eben auch Patches,

Christoph: Und er kümmert sich um das Ausbauen der Testsuite.

Christoph: Er pflegt zusätzliche Testarchive ein.

Wolfgang: Da haben wir schon mal was davon gehört, ja.

Christoph: Da haben wir was davon gehört, richtig. Wir erinnern uns, es sind genau die

Christoph: Testarchive, von denen wir vorhin gesprochen haben.

Wolfgang: Ja.

Christoph: Und es kommt dann von noch einem anderen Menschen,

Christoph: mit dem sehr klingenden Namen Hans Jansen ein Patch rein, der Dinge beschleunigen

Christoph: soll, nämlich das Berechnen von Prüfsummen.

Christoph: Der benutzt einen relativ schicken Mechanismus namens iFunc,

Christoph: Indirect Functions, der dafür gedacht ist,

Christoph: dass zum Ladezeitpunkt der Bibliothek eine für den Prozessor optimierte Variante

Christoph: der Prüfsummenberechnungsfunktion ausgewählt wird.

Christoph: Das heißt, es wird halt einfach zu dem Zeitpunkt, wo die Bibliothek geladen

Christoph: wird, ein bisschen Code ausgeführt, der nachschaut, hey, auf was für eine CPU

Christoph: bin ich denn, unterstützt die SSE, dann benutze ich die SSE-Implementierung,

Christoph: unterstützt die AVX, dann benutze ich die AVX-Implementierung,

Christoph: Coole Sache. Beschleunigt das Ganze ein bisschen. Alles hochgradig sinnvoll.

Christoph: Aber das sollten wir noch im Hinterkopf behalten, weil das wird noch wichtig.

Wolfgang: Ja, ich habe da schon so einen Verdacht, Christoph.

Christoph: Exakt. Aber vielleicht reden wir erstmal noch ein bisschen weiter über die Zeitleiste.

Wolfgang: Ja, sehr gerne.

Christoph: Was dann passiert ist. Also, wir befinden uns jetzt mittlerweile im Februar 2024.

Christoph: JA bereitet ein neues Release vor, Version 5.6.0.

Christoph: Und diese Version wird auch relativ schnell dann von den Rolling Release Distributionen,

Christoph: wie jetzt Debian Unstable, akzeptiert und eingepflegt.

Christoph: Und dass genau diese Version von der Andres dann diese komischen Stack Traces

Christoph: sieht und die komischen Speicher Speicherzugriffsprobleme.

Wolfgang: Das heißt, der andere ist dann mit diesem Valgrind-Tool seine Analysen durchführt.

Christoph: Ganz genau. Deswegen wird relativ zeitnah dann eine neue Version nachgeschoben, 5.6.1.

Wolfgang: Ja.

Christoph: In dieser Version sind diese Speicherzugriffsprobleme dann behoben und es werden,

Christoph: oh Wunder, oh Wunder, auch diese Testarchive nochmal aktualisiert.

Wolfgang: Ja, das ist aber total gut, dass das so schnell gefixt wird.

Wolfgang: Ich meine, es passiert ja manchmal, du Du veröffentlichst irgendwas und wenn

Wolfgang: es dann in die Breite rausgeht und verwendet wird, dann entdeckt man da erst

Wolfgang: irgendwelche Tests, irgendwelche Fehler und wenn das so schnell gefixt wird hier von Giatan,

Wolfgang: finde ich persönlich natürlich echt total gut, dieses ganze Engagement.

Christoph: Auf jeden Fall. Das Problem ist nur, dass ein paar Wochen später dann auf der

Christoph: OSS-Security-Mailing-Liste so eine E-Mail auftaucht von einem gewissen anderen Freund, der sagt,

Christoph: Leute, benutzt nicht Release 560 und 561, da ist was extrem fischig.

Wolfgang: Also ich glaube, was man zu dem Zeitpunkt jetzt schon sagen können ist,

Wolfgang: dass der Chiatan sich natürlich da mit Social Engineering reingesneakt hat in

Wolfgang: dieses XZ-Util-Projekt, sich das Vertrauen erschlichen hat,

Wolfgang: mutmaßlich mit dem Hintergedanken, hier so eine Backdoor zu platzieren.

Wolfgang: Und wenn man sich die Zeitleiste jetzt auch nochmal vor Augen führt,

Wolfgang: die du uns gerade vorgestellt hast, dann hat das ja Jahre gedauert.

Wolfgang: Also das war ja wirklich ein richtig, richtig großer Plan.

Wolfgang: Und ich finde, das Ganze war natürlich technisch super ausgefuchst,

Wolfgang: denn bevor man da angefangen hat mit dem Plan, muss man ja erstmal so eine Machbarkeitsstudie

Wolfgang: gemacht haben. Also du fängst ja nicht einfach an und überlegst dir dann was.

Wolfgang: Man sucht sich ja höchstwahrscheinlich so ein in Anführungszeichen Ziel ganz gezielt aus.

Wolfgang: Und dann über so einen langen Zeitraum da am Ball zu bleiben und das Stück für

Wolfgang: Stück voranzutreiben, da gehört schon viel dazu.

Wolfgang: Und ich glaube, was auch feststeht ist, dass diese ganzen Pöbler,

Wolfgang: von denen du erzählt hast, oder der Hans Janssen, der nochmal diese iFunk-Patches bereitgestellt hat,

Wolfgang: dass das höchstwahrscheinlich entweder auch die gleiche Person oder die gleiche

Wolfgang: Personengruppe war, wie jetzt Chiatan oder irgendwelche in Anführungszeichen verbündeten Leute.

Wolfgang: Also es waren keine Zufälle. Und das ist schon, wenn man es mal,

Wolfgang: finde ich, aus ein bisschen Distanz betrachtet, echt krass, was sie da abgezogen haben.

Christoph: Ja, und was ein bisschen traurig ist, diese Pöbler auf der Mailing-Liste.

Christoph: Das ist halt überhaupt nicht auffällig, das Verhalten.

Christoph: Das ist leider Verhalten, das man in der Open-Source-Welt doch öfters mal sieht,

Christoph: dass Menschen ungeduldig sind und meinen, die Maintainer, selbst wenn sie das

Christoph: nur in ihrer Freizeit als Hobby machen, würden ihnen was schulden.

Christoph: Und das ist schade, dass das so ist.

Wolfgang: Ja, genau.

Wolfgang: Absolut. Also das ist aber vielleicht auch so ein bisschen der generelle Umgangston im Internet.

Wolfgang: Ich finde, im Internet gibt es immer solche Bubbles, wo du drin sein kannst,

Wolfgang: wo nette Leute sind, wo so deine Community ist, deine gleichgesinnten Leute,

Wolfgang: mit denen verstehst du dich gut.

Wolfgang: Aber wenn du da rausgehst, da einen Kopf mal raushältst, es gibt halt schon

Wolfgang: echt viele super unangenehme Leute, die irgendwie halt im Internet halt alles vergessen,

Wolfgang: was Benehmen und so angeht in Umgangsform und dann einfach nur möglichst laut rumschreien.

Wolfgang: Und ja, wenn ich schon ab und zu mal irgendwo vielleicht ein Ticket angelegt

Wolfgang: habe bei einem Open-Source-Projekt,

Wolfgang: weil ich mal einen Fehler gefunden habe und jetzt nicht unbedingt wollte,

Wolfgang: dass der super schnell gefixt wird, sondern ey, wenn ich es halt finde,

Wolfgang: dann lege ich halt mal kurz was an und dann mich mal so ein bisschen durchgearbeitet

Wolfgang: habe durch irgendwelche Bug-Tracker, um zu gucken, ob es das schon mal gibt.

Wolfgang: Wenn man manchmal so Tickets liest, denkst du auch, was ist denn mit den Leuten los?

Wolfgang: Ja, wir könnten uns ja nochmal ein bisschen detaillierter anschauen,

Wolfgang: was es in der Zeit nach dem 29.

Wolfgang: März noch passiert ist. Denn der Andres, der hat ja so diese erste Analyse veröffentlicht,

Wolfgang: dann gab es den Riesenaufschrei, dann ist ganz viel passiert auf irgendwelchen

Wolfgang: Websites mit irgendwelchen Warn- und Horrorszenarien.

Wolfgang: Aber was ist denn konkret dann in den Tagen und vielleicht auch Wochen danach noch passiert?

Christoph: Also zunächst war es natürlich ein sehr spannendes Osterfest für viele Menschen.

Wolfgang: Ja, das auf jeden Fall.

Christoph: Außer vielleicht für ein paar Menschen, für die war es eher traurig.

Christoph: Aber verdientermaßen, würde ich sagen.

Christoph: Was passiert ist, konkret ist, dass sehr viele Menschen sich draufgestürzt haben

Christoph: auf diesen Code und analysiert haben, was da genau passiert.

Christoph: Das heißt, die haben das wirklich von vorne bis hinten auseinandergenommen und

Christoph: haben nochmal ein paar sehr interessante Erkenntnisse gewonnen,

Christoph: was da technisch passiert.

Wolfgang: Lass uns doch das mal zum Anlass nehmen, Christoph, und lass uns doch da vielleicht

Wolfgang: nochmal ein bisschen technisch reingehen. Wir hatten das vorhin ja schon so beschrieben.

Wolfgang: Wir haben diese Backdoor, die in der Kompressionsbibliothek drin ist.

Wolfgang: Indirekt wird die dann durch den SSH-Diemen geladen.

Wolfgang: Und du hast ja auch schon angesprochen, der Hans Janssen, der hat hier diesen

Wolfgang: iFunk-Mechanismus reingebracht in die XSET-Utils.

Wolfgang: Und ich vermute mal, dass man dann mit den iFunks diverse Funktionen im SSH-Demon überschrieben hat.

Christoph: Genau. Die nützliche Eigenschaft von iFunk an der Stelle ist, dass man...

Christoph: Code ausführen kann zu dem Zeitpunkt, wo die Bibliothek gerade erst geladen wird.

Wolfgang: Ja.

Christoph: Und das Nützliche ist dabei, dass man dadurch so ein paar Sicherheitsmechanismen

Christoph: umgehen kann, die heutzutage unter Linux-Distributionen standardmäßig eingeschaltet sind.

Christoph: Konkret geht's darum, wenn wir eine Bibliothek laden, dann wird in eine

Christoph: Datenstruktur des Laders, die sogenannte globale Offset-Tabelle,

Christoph: für jede Funktion aus dieser Bibliothek ihre Adresse eingetragen,

Christoph: damit man von dem Programm aus diese Funktion dann aufrufen kann.

Christoph: Diese Tabelle wird sobald das Laden abgeschlossen ist, auf nur lesbar gesetzt.

Christoph: Dann kann niemand mehr was dran rumfummeln.

Wolfgang: Okay, aber da habe ich direkt mal eine kleine Frage dazu, weil diesen Punkt

Wolfgang: habe ich nicht so hundertprozentig verstanden, also wie man jetzt diese Funktionen überschrieben hat.

Wolfgang: Du sagst, diese Tabelle, die wird auf Read-Only gesetzt, damit sie nicht mehr

Wolfgang: verändert werden kann. Das macht sicherheitsmäßig total viel Sinn.

Wolfgang: Aber wir haben ja, wenn man es vielleicht mal ein bisschen vereinfacht,

Wolfgang: drei Komponenten, oder?

Wolfgang: Wir haben den SSH-Diemen, wir haben diese Kompressionsbibliothek,

Wolfgang: die ich jetzt mit den Kürzeln nicht ausspreche, weil ich mich sonst verhaspel,

Wolfgang: und Und wir haben doch dazwischen noch was, was die Verbindung herstellt.

Wolfgang: Das heißt, wann wird denn angefangen, diese Tabelle irgendwie aufzubauen?

Wolfgang: Ist das dann für, wenn ich SSH starte, für alle Abhängigkeiten und die,

Wolfgang: die irgendwie dranhängen an SSH, dass das erstmal zusammengewürfelt wird?

Wolfgang: Oder wie muss ich mir das vorstellen?

Christoph: Also wenn du ein Programm startest, das Abhängigkeiten auf solche dynamisch

Christoph: ladbaren Bibliotheken hat,

Christoph: dann werden diese Bibliotheken der Reihe nach geladen und bei jeder Bibliothek

Christoph: wird durch den Lader nachgeschaut, welche Funktionen, welche Symbole gibt es da,

Christoph: an welcher Adresse im Adressraum liegen die.

Christoph: Und diese Adressen werden alle in diese globale Offset-Tabelle eingetragen.

Christoph: Und das Ganze wird eben transitiv baumförmig gemacht.

Christoph: Unser SSHD, wir erinnern uns, hat eine Abhängigkeit auf LibSystemD.

Christoph: Das heißt, da wird jetzt erstmal LibSystemD geladen. Und LibSystemD hat ihrerseits

Christoph: wieder Abhängigkeiten.

Christoph: Unter anderem auf unsere LibLZMA.

Christoph: Also wird als nächstes die LibLZMA geladen.

Wolfgang: Ja.

Christoph: Und wenn das Ganze fertig ist,

Christoph: Dann werden eben diese Datenstrukturen, diese globale Offset-Tabelle und noch

Christoph: so ein paar andere Datenstrukturen versiegelt sozusagen.

Christoph: Und ab dem Zeitpunkt können sie nicht mehr verändert werden.

Wolfgang: Okay, und das bedeutet, weil ich jetzt diese transitive Abhängigkeit habe von

Wolfgang: SSHD zu der LibLZMA, habe ich das alles in einer Tabelle drin.

Wolfgang: Weil alles erstmal geladen wird, Abhängigkeit für Abhängigkeit für Abhängigkeit.

Wolfgang: Und dadurch kann jetzt meine LibLZMA quasi die Funktion überschreiben dann.

Wolfgang: Okay, das ist ganz schön clever, oder? Also von demjenigen, der es sich ausgedacht hat.

Christoph: Ja, da ist einiges an wirklich Detailwissen drin, weil man muss ja auch diese

Christoph: Datenstrukturen vom Lader genau kennen.

Christoph: Man muss genau wissen, wo liegen die, was ist ihr Layout. Und sehr,

Christoph: sehr viel Detailwissen, das da drin steckt.

Wolfgang: Ja, und wenn das dann geschehen ist und dadurch quasi der SSH-Demon kompromittiert

Wolfgang: wurde, was ist denn dann eigentlich passiert, wenn ich mich jetzt anmelden möchte?

Wolfgang: Also hier läuft irgendwo so ein Server, der hat diese Backdoor drin,

Wolfgang: die ist aktiv und ich weiß es nicht.

Wolfgang: Und was ist denn eigentlich die Backdoor? Also was passiert,

Wolfgang: wenn ich mich da jetzt beispielsweise anmelde?

Christoph: Wenn du versuchst, dich per SSH

Christoph: anzumelden, dann wird die Authentifizierungsroutine von SSH angestoßen.

Christoph: Und es gibt verschiedene mögliche Mechanismen. Der einfachste Mechanismus ist

Christoph: Benutzername plus Passwort.

Christoph: Es gibt auch noch die Möglichkeit, dich über so einen Schlüssel,

Christoph: einen öffentlichen Schlüssel anzumelden.

Christoph: Und es gibt auch noch ganz komplexe Zertifikate-Authentifizierung. Ja.

Christoph: Und je nachdem, was der Client, der sich jetzt verbinden will,

Christoph: vorlegt, wird dann eben der eine Code-Pfad oder ein anderer Code-Pfad oder der

Christoph: dritte Code-Pfad angestoßen.

Christoph: Und wenn jetzt ein Client von

Christoph: außen kommt und sagt, ich möchte gerne Zertifikat-Autentifizierung machen,

Christoph: dann wird eine Funktion aus der OpenSSL-Krypto-Bibliothek aufgerufen,

Christoph: die so ein RSA-Zertifikat nimmt und dekodieren soll.

Christoph: Und genau diese RSA-Dekodierungsfunktion, die hat die bösartige LibLZMA vorher

Christoph: überschrieben. Oder eigentlich nicht die Funktion, sondern den Verweis auf diese

Christoph: Funktion wurde vorher überschrieben.

Christoph: Und wenn jetzt jemand versucht, sich mit einem Zertifikat zu authentifizieren,

Christoph: dann wird der Schadcode aus unserer LibLZMA ausgeführt.

Wolfgang: Okay, das heißt, wenn ich mich mit meinem Passwort anmelden möchte,

Wolfgang: Username, Passwort, passiert gar nichts.

Wolfgang: Wenn ich einfach auf dem Server meinen Schlüssel hinterlegt habe,

Wolfgang: also mein Public Key hinterlegt habe, ich habe einen passenden Private Key,

Wolfgang: dann passiert auch nichts.

Wolfgang: Und es passiert lediglich was, wenn ich mich über ein Zertifikat authentifizieren

Wolfgang: möchte. Ist das weit verbreitet, dass man sich mit Zertifikaten authentifiziert

Wolfgang: oder kannst du das einordnen im Vergleich zu irgendwelchen Public-Private-Keys?

Christoph: Soweit ich weiß, ist das nicht besonders gängig. Was man heutzutage machen will,

Christoph: ist mit öffentlichem Schlüssel.

Wolfgang: Ja, so kenne ich es ehrlich gesagt auch. Wenn ich mich irgendwo authentifiziere,

Wolfgang: ist es auch fast immer dann mit Private-Key und Public-Key halt.

Christoph: Ja, benutzen wir damit Passwort, will man eigentlich sogar deaktivieren,

Christoph: weil das halt, das kann man per Brute Force durchprobieren. Dauert natürlich

Christoph: sehr lang, aber es ist ein potenzielles Einfallstor für Brute Force Attacken.

Christoph: Mit dem öffentlichen Schlüssel ist es deutlich sicherer.

Christoph: Deswegen ist das die aktuelle Empfehlung.

Wolfgang: Okay, und das heißt, wenn man jetzt mit so einem Zertifikat kommt,

Wolfgang: um sich zu authentifizieren, dann springt man von der eigentlichen Stelle,

Wolfgang: wo diese Authentifizierung durchgeführt würde, im SSH-Diemen,

Wolfgang: springt man dann in diese Kompressionsbibliothek und da wird etwas anderes gemacht. Genau.

Christoph: Da wird ganz genau auf dieses Zertifikat geschaut. Und wenn das auf eine bestimmte

Christoph: Art und Weise beschaffen ist und auch noch signiert ist mit einem ganz bestimmten,

Christoph: nicht bekannten privaten Schlüssel,

Christoph: dann führt unser Code ein Kommando,

Christoph: das auch in dieses Zertifikat mit reinkodiert ist,

Christoph: aus mit den Rechten des SSH-Servers.

Christoph: Und der SSH-Server zu diesem Zeitpunkt läuft als Root.

Wolfgang: Okay, das bedeutet, ich kann einfach einem Server, wenn ich das richtige Zertifikat

Wolfgang: habe, beziehungsweise ein Zertifikat habe, das mit dem richtigen Schlüssel signiert

Wolfgang: ist, dann kann ich dem Server beliebigen Code unterschieben und der wird dann als Root ausgeführt.

Wolfgang: Das möchte man nicht haben.

Christoph: Ja, wir haben Remote-Code-Ausführung als Root. Damit ist quasi Schluss. Hast du verloren.

Wolfgang: Okay, also das ist natürlich dann schon der Worst Case einfach.

Christoph: Definitiv. Deswegen wurde das Ganze auch im CVSS-Score mit dem Maximalscore 10,0 von 10 bewertet.

Christoph: Das ist wirklich eine maximal kritische Hintertür.

Wolfgang: Ja, das ist krass, dass man sowas irgendwie einschleusen konnte.

Wolfgang: Ich finde auch so diese ganze Geschichte wirklich spannend.

Wolfgang: Das ist so ein richtiger Internet-Krimi, kann man glaube ich so sagen.

Wolfgang: Ich muss sagen, für Chiatan oder für die Personen, die hinter dem Namen Chiatan stehen,

Wolfgang: muss das natürlich echt ein blödes Ostern gewesen sein, denn da ist sicherlich

Wolfgang: neben der Zeit auch viel Geld reingeflossen, um das alles durchzuführen.

Wolfgang: Ich frage mich ja ein bisschen, warum das eigentlich aufgefallen ist.

Wolfgang: Denn wenn da jetzt irgendwie so diese Lastspitze immer drin ist bei dem Login,

Wolfgang: ist das wirklich so, dass das nicht anders gegangen wäre oder ist das vielleicht

Wolfgang: nicht gut optimiert gewesen?

Wolfgang: Denn wenn die Leute oder Chiatan oder wer auch immer da so viel Hirnschmalz

Wolfgang: reingesteckt hat, dann wurde das doch auch getestet. Und wenn man es getestet

Wolfgang: hat, hat man doch gemerkt, dass es Elast-Spitzen gibt.

Wolfgang: Und da muss man sich doch auch gedacht haben, hey, vielleicht ist das Risiko

Wolfgang: so hoch, wir haben da schon so viel Zeit investiert, wir optimieren es jetzt

Wolfgang: einfach noch ein bisschen weiter, dann dauert es halt ein halbes Jahr länger,

Wolfgang: ist doch egal, aber dann ist es vielleicht eine sichere Bank.

Christoph: Es ist tatsächlich Letzteres. Also es wurde bei allem krassem technischen Wissen,

Christoph: das da reingesteckt wurde, wurde an ein paar Stellen nicht ganz sauber gearbeitet.

Christoph: Und genau deswegen sehen wir diese Lastspitzen.

Christoph: Die Leute, die das analysiert haben, haben dann nachträglich gesagt,

Christoph: das hätte man auch effizienter hinkriegen können.

Christoph: Eine Sache, die tatsächlich sehr viel Rechenzeit gekostet hat.

Christoph: Und wir reden hier wirklich von einer halben Sekunde und eine halbe Sekunde

Christoph: Rechenzeit auf einem modernen Prozessor ist echt viel.

Christoph: Der Grund dafür, warum das so langsam gedauert hat, war, dass sie halt intern

Christoph: ihren Code und ihre Daten und die Zeichenketten, mit denen sie arbeiten,

Christoph: nochmal speziell verschleiert haben. Ja.

Christoph: Und die Datenstruktur, die sie da verwendet haben, hat das Ganze zwar effektiv

Christoph: verschleiert, aber war entsprechend langsam im Zugriff.

Christoph: Und die Leute, die das analysiert haben, haben herausgefunden,

Christoph: dass man das auch hätte besser machen können.

Christoph: Und dann wären diese Lastspitzen nicht aufgefallen.

Christoph: Man kann jetzt spekulieren, warum das so ist, warum da so ein bisschen geschlampt wurde.

Christoph: Eine These ist, dass den Angreifern die Zeit ausgegangen ist.

Wolfgang: Wieso das?

Christoph: Es hat nebenher eine Entwicklung gegeben in SystemD,

Christoph: die gedroht hat, ihnen das Fenster vor der Nase zuzuknallen.

Christoph: Und zwar, wir erinnern uns, die LibLZMA wird nicht direkt vom SSHD geladen,

Christoph: sondern SSHD lädt die LibSystemD und die LibSystemD lädt unsere Kompressionsbibliothek.

Wolfgang: Ja, genau.

Christoph: LibSystemD braucht diese Kompressionsbibliothek nicht zwangsläufig,

Christoph: sondern nur für ein ganz bestimmtes Feature, nämlich für die Kompression vom

Christoph: Journal, also von dem System-Log.

Wolfgang: Ja.

Christoph: Für den Anwendungsfall von SSH ist es völlig egal und für ganz viele andere

Christoph: Funktionalität von Systemd ist es auch völlig egal.

Christoph: Deswegen haben, unabhängig von dem ganzen Geschehen, über das wir jetzt gerade sprechen,

Christoph: im Februar 2024 die Systemd-Entwickler sich angeschaut, haben festgestellt,

Christoph: hey, wir linken doch viel zu viele Bibliotheken in unsere Lipsystemd rein,

Christoph: die wir in den meisten Fällen gar nicht brauchen.

Christoph: Also lasst uns das mal umbauen.

Christoph: Wir laden diese Bibliotheken on demand erst zu dem Zeitpunkt,

Christoph: wo sie tatsächlich benötigt werden.

Christoph: Und mittlerweile, also jetzt April 2024, ist es schon eingebaut.

Christoph: Das heißt, mittlerweile ist dieses Einfallstor über die Indirektion auch gar nicht mehr möglich.

Wolfgang: Okay, das heißt natürlich, wenn ich jetzt so ein Experte bin,

Wolfgang: dass ich mir diese Backdoor ausgedacht habe, dass ich die designt habe,

Wolfgang: dass die hier eingeschleust habe,

Wolfgang: dann werde ich natürlich auch das Ökosystem so ein bisschen monitoren und schauen,

Wolfgang: gibt es da irgendwelche Entwicklungen, auf die ich reagieren muss,

Wolfgang: die relevant sind vielleicht für meine Backdoor.

Wolfgang: Und wenn ich da jetzt irgendwie über zwei Jahre Zeit reingesteckt habe und dann

Wolfgang: mitbekomme, dass diese Open-Source-Leute auf einmal hier irgendwas diskutiert,

Wolfgang: was mir hier gegen die Parade fährt, ja, dann ist das wahrscheinlich echt doof so, gell?

Christoph: Ja, die Ärmsten.

Wolfgang: Ja, die Ärmsten.

Christoph: Es gab noch eine zweite relativ harte Frist, an die sie sich auch halten mussten.

Christoph: Und zwar, Ubuntu bringt ja alle zwei Jahre ihre neue LTS, Long Term Support Version raus.

Christoph: Das ist jetzt auch wieder vor ein paar Tagen passiert, Ubuntu 24.04.

Christoph: Das gleiche ist mit Red Hat passiert.

Christoph: Die zweigen ja ihr Red Hat Enterprise Linux von Fedora ab.

Christoph: Ja. Und Fedora 40 ist halt auch, ich glaube, letzte Woche rausgekommen.

Christoph: Das heißt, das war auch noch mal eine natürliche Frist. Wenn du möglichst viele

Christoph: Server angreifen können willst, dann musst du in diese Long-Term-Support-Versionen

Christoph: reinkommen von Ubuntu und Red Hat.

Christoph: Und offenbar ist ihnen dann am Ende so ein bisschen die Zeit ausgegangen.

Christoph: Deswegen sind sie etwas schlampfig geworden Und mussten das schnell fertig kriegen.

Christoph: Deswegen wahrscheinlich auch diese Speicherzugriffsfehler, die sie dann nochmal

Christoph: nachpatchen mussten. Ja.

Christoph: Unabhängig davon ist es natürlich trotzdem ein sehr großes Glück für uns und

Christoph: alle diejenigen, die einen weißen Schlapphut auf dem Kopf tragen,

Christoph: dass zufällig jemand, der sich maximal gut mit Performance auskennt,

Christoph: über genau dieses Performance-Problem gestolpert ist, zu genau dem richtigen

Christoph: Zeitpunkt. Das hätte auch ganz anders laufen können.

Wolfgang: Ja, natürlich, weil du weißt ja, du weißt bis heute nicht, wer dahinter steckt.

Wolfgang: Und ich glaube, wenn man es vielleicht irgendwann mal herausfindet,

Wolfgang: dann, weil es vielleicht irgendwo ein Leak gibt, weil sich jemand verplappert oder so.

Wolfgang: Also ich glaube nicht, dass man einfach so trivial herausfinden kann,

Wolfgang: das war Person X oder das war vielleicht irgendeine Regierung oder ein Geheimdienst oder irgend sowas.

Wolfgang: Ich glaube, wenn es irgendwie mal so einen Edward-Snowden-Moment gibt und herauskommt,

Wolfgang: ja, das war vielleicht der NSA oder die Chinesen, die Russen,

Wolfgang: die Nordkoreaner oder sonst wer, ja, dann weiß man es, aber sonst glaube ich.

Wolfgang: Wenn das irgendeine, in Anführungszeichen, feindliche Macht war,

Wolfgang: dann sind die gut genug, um ihre Spuren zu verschleiern.

Wolfgang: Und wenn es eine Einzelperson war, das kann ja auch sein, das war irgendein talentierter Hacker,

Wolfgang: der einfach Bock hatte und viel Freizeit, dann ist er oder sie wahrscheinlich

Wolfgang: aber auch schlau genug gewesen, dass man da nicht irgendwie auf die Spur kommt.

Wolfgang: Aber ja, trotzdem, viel Glück gehabt.

Wolfgang: Wer weiß, was es da draußen sonst noch so gibt, denn ich glaube,

Wolfgang: so diese ganzen, ja, wenn man mal bei Linux bleibt, diese ganze Linux-Distribution,

Wolfgang: da gibt es so unglaublich viele Abhängigkeiten, die kannst du ja gar nicht alle

Wolfgang: monitoren, die kannst du ja nicht alle so untersuchen.

Wolfgang: Und ich finde das spannend, denn dem Beispiel ist halt, es gibt die großen sicherheitsrelevanten

Wolfgang: Komponenten wie Open SSH, wo meiner Meinung nach sehr viele Leute draufschauen,

Wolfgang: wo es beinahe unmöglich ist, wahrscheinlich irgendwie eine Backdoor einzubauen.

Wolfgang: Und das ist ja auch immer das tolle Open Source Argument.

Wolfgang: Durch die Offenlegung der Quelle kannst du ja auch schauen, was drin ist. Also ich kann es nicht.

Wolfgang: Ich kann mir Quelltext angucken von OpenSSH.

Wolfgang: Ich werde nicht herausfinden, ob da irgendwas Schlechtes drin ist,

Wolfgang: weil ich keine Ahnung davon habe von C-Code.

Wolfgang: Aber Experten, Expertinnen können es.

Wolfgang: Aber halt, wenn ich durch so eine Abhängigkeit sowas so rein sneaken kann,

Wolfgang: boah, das ist ja unendlich viel Code.

Christoph: Ist ein schwieriges Problem, ja.

Wolfgang: Ja, ich glaube, so zum Schluss hin vielleicht, Christoph, was ist denn so dein

Wolfgang: Ausblick für die Zukunft?

Wolfgang: Also muss sich im Open-Source-Bereich jetzt was verändern? Brauchen wir ein

Wolfgang: neues Bewusstsein für Sicherheit?

Wolfgang: Ich meine, es gibt ja auch so Beispiele wie jetzt, weiß nicht,

Wolfgang: Apache Foundation, da gibt es zum Beispiel keine Mini-Projekte,

Wolfgang: wo nur ein Maintainer am Start ist, der irgendwie entscheidet.

Wolfgang: Aber das ist halt die Foundation.

Wolfgang: Da hat man halt nur eine gewisse Menge von Projekten. Und ich glaube,

Wolfgang: man möchte ja auch Einzelpersonen das nicht madig machen.

Wolfgang: Weil wenn ich jetzt aus Langeweile anfange, eine Bibliothek zu entwickeln,

Wolfgang: weil ich Bock drauf habe und schwuppdiwupp ist die Bibliothek dann irgendwann

Wolfgang: mal vielleicht relevant für irgendeine große Linux-Distribution.

Wolfgang: Vielleicht freut mich das, vielleicht ist mir das aber auch völlig egal.

Wolfgang: Und das ist ja auch das gute Recht von jeder Person. Also ich frage mich,

Wolfgang: was kann man da tun, was soll sich verändern oder vielleicht auch nicht und

Wolfgang: was ist da deine Meinung dazu?

Christoph: Das ist eine sehr gute Frage. Ich meine, es gibt ja im Prinzip zwei unterschiedliche

Christoph: Lesarten, wie man das Ganze jetzt bewerten kann.

Christoph: Wir können sagen, hey, das ist doch jetzt gerade ein Zeichen dafür,

Christoph: dass Open Source Software quasi völlig unzuverlässig ist und wir können auf nichts vertrauen.

Christoph: Und es gibt da so viel Software und wie will man das alles anschauen? Und keine Chance.

Christoph: Man kann aber auch sagen, hey, wir haben jetzt genau gesehen,

Christoph: wie resilient dieses Ökosystem eigentlich ist, weil es ist aufgefallen,

Christoph: es wurde sehr schnell reagiert, es wurde sehr schnell gefixt.

Christoph: Man lernt aus den Fehlern, also hoffentlich, das ist jetzt auch wieder ein Punkt,

Christoph: worüber man diskutieren kann.

Christoph: Das heißt, man kann da sowohl sehr pessimistisch sein, man kann da sehr optimistisch

Christoph: sein und beide Seiten können sich in ihrer Sicht bestätigt fühlen.

Christoph: Ich glaube, ich persönlich bin da eher auf der Seite der Optimisten.

Christoph: Ich sehe auf jeden Fall, dass wir eine grundsätzliche Problematik haben.

Christoph: Ich denke da an diesen wunderschönen XKCD-Comic.

Christoph: Der alle digitale Internetinfrastruktur in unserer heutigen Zeit visualisiert.

Christoph: Das ist dann so ein Turm aus Bauklötzchen, die wild aufeinander gestapelt sind

Christoph: und gerade so in der Balance hängen.

Christoph: Und irgendwo ganz unten ist so ein ganz kleiner, aber extrem wichtiger Pfeiler.

Christoph: Wenn man den wegnehmen würde, würde alles zusammenstürzen. Und der ist beschriftet

Christoph: mit einem kleinen Open-Source-Projekt, das seit 2003 von irgendeiner Person

Christoph: in Nebraska betreut wird, ohne dass irgendjemand auch nur Danke gesagt hat.

Wolfgang: Ja, den kenne ich, den Comic. Der wurde auch oft zitiert jetzt in den letzten Wochen.

Christoph: Ja, und...

Christoph: Irgendwie sind wir schon immer noch in so einer Situation.

Christoph: Dieser Comic ist damals ja auch nicht im Vakuum entstanden, sondern es gab auch

Christoph: in der Vergangenheit schon andere Projekte.

Christoph: Du hast gerade OpenSSL genannt. Und OpenSSL war ja auch sehr lange Zeit genau

Christoph: so ein Projekt, wo echt wenige Menschen unbezahlt daran mitgearbeitet haben.

Christoph: Da haben jetzt große Firmen vor, ich weiß gar nicht, wie lange das her ist,

Christoph: ein paar Jahre ist das her, dass ein paar große Firmen dann wirklich ihre Geldbeutel

Christoph: aufgemacht haben und gesagt haben, hey, das ist so wichtig, wir sponsern das.

Christoph: Ich denke, dass das eine Lektion ist, die wir mitnehmen müssen,

Christoph: dass man wirklich als großes Unternehmen,

Christoph: das im Internet tätig ist, dann auch mal wirklich Verantwortung übernehmen muss

Christoph: und solche Projekte mitsponsern muss, damit das Ganze auf soliderem Fundament steht. Ja.

Christoph: Für Menschen, die selber einfach nur persönlich in ihrer Freizeit an Open Source

Christoph: mitarbeiten wollen, würde ich sagen, lasst euch nicht einschüchtern durch sowas.

Christoph: Und für alle, die irgendwie Bug-Reports schreiben oder auf Mailing-Listen unterwegs sind,

Christoph: würde ich vor allem die Bitte aussprechen, seid nicht so wie diese Sockenpuppen,

Christoph: sondern seid nett und konstruktiv und verständnisvoll.

Wolfgang: Oh ja. Ich glaube, das würde uns nicht nur auf diesen Mailinglisten weiterhelfen.

Wolfgang: Ich glaube, dass das generell was für das ganze Internet, aber natürlich auch

Wolfgang: fürs richtige Leben, dass das nette Miteinander, das freundliche Miteinander

Wolfgang: uns immer weiterbringt.

Wolfgang: Christoph, das war eine spannende Geschichte durch diesen Internet-Krimi.

Wolfgang: Ich habe viel dazugelernt.

Wolfgang: Ich bin gespannt, ob es in den nächsten Monaten da vielleicht noch weitere Erkenntnisse

Wolfgang: gibt, denn es ist noch so frisch. Vielleicht gibt es noch irgendwas,

Wolfgang: vielleicht gibt es eine Bestätigung, wer dahinter steckte.

Wolfgang: Vielleicht entdeckt man noch irgendwelche Details, die man jetzt noch übersehen

Wolfgang: hat, wobei so viele Leute haben da drauf geschaut die letzten Wochen.

Wolfgang: Ich glaube, es ist ganz gut verstanden, was da passiert ist.

Wolfgang: Und ja, dank dir und deiner Erläuterung habe ich es auch ein bisschen besser

Wolfgang: verstanden und ich vermute, die Leute, die uns jetzt zugehört haben,

Wolfgang: höchstwahrscheinlich auch.

Wolfgang: Christoph, vielen Dank für deine Zeit und vielen Dank, dass du da warst.

Christoph: Dankeschön.

Wolfgang: Gespräch mit Christoph. Ich hoffe, es hat euch Spaß gemacht.

Wolfgang: Wenn ihr Feedback habt, dann erreicht ihr mich per E-Mail unter podcast at inovex.de

Wolfgang: Wir hören uns in der nächsten Folge wieder.

Wolfgang: Bis dahin wünsche ich euch viel Spaß und eine gute Zeit.

Neuer Kommentar

Dein Name oder Pseudonym (wird öffentlich angezeigt)
Mindestens 10 Zeichen
Durch das Abschicken des Formulars stimmst du zu, dass der Wert unter "Name oder Pseudonym" gespeichert wird und öffentlich angezeigt werden kann. Wir speichern keine IP-Adressen oder andere personenbezogene Daten. Die Nutzung deines echten Namens ist freiwillig.