Die It Bedrohungslage ist extrem kritisch. Es sind sofortige Schutzmaßnahmen umzusetzen.
Diese Sätze stammen aus einer BSI Pressemitteilung im Jahre 21 es erfolgte eine Cyber Sicherheitswarnung der Warnstufe rot was passiert ist, das erfährst du in der heutigen Folge Coding Buddies, Deinem Podcast rund um Softwareentwicklung und aktueller Tech News, herzlich Willkommen. Einen wunderschönen guten Tag und herzlich Willkommen zur neuen Folge vom Coding Buddies Podcast. Es gibt eine neue Folge und es wird eine tolle Folge und bevor wir jetzt richtig starten
können, werde ich natürlich erstmal den Tino hier begrüßen. Tino, wie geht's dir? Moin Moin Fabi, Was geht ab? Was geht ab? Das obligatorische, Was geht ab. Das ist die Frage, die man als erstes geklärt hat. Und ich liebe Sie also. Aber du beantwortest sie selten, falls es dir auffällt. Du sagst nie, was so abgeht. Ich glaube, das ist eine rhetorische Frage, aber. Was so abgeht. Podcast geht.
Ab und es wird eine habergeile neue Folge, weil es wird mal wieder eine Big Fails Folge und wir haben natürlich. Wieder einen Fall her. Das stimmt und wir haben wieder einen spannenden Fall mitgebracht.
Aber bevor wir zu diesem fantastischen Fall der Big Fails in der Softwareentwicklung kommen, wollte ich noch mal ganz kurz einmal sagen, Liebe Zürin, lieber zürer, wenn du den Podcast super cool findest und sagst, ey, ich mag die beiden und ich möchte die gerne unterstützen, dann kannst du das
auf jeden Fall machen. Einen Link zur kleinen Unterstützung findest du in den Shownotes guck da mal auf jeden Fall rein und vergiss auch nicht, den Podcast zu bewerten, so. Tino aber jetzt haben wir alles organisatorisch abgearbeitet. Jetzt lass uns doch mal rein, jetzt endlich loslegen, lass uns rein starten und zwar worum geht es heute Tino, möchtest du das einmal den Fall sozusagen
vorstellen, ankündigen? Ja, und zwar haben wir uns n Fall rausgesucht, der noch gar nicht so lange her ist und ebenfalls wieder Millionen an Systeme betroffen waren. Also es ist wieder nen. Nee, relativ will ich gar nicht sagen. Es ist ein sehr großer Fall, der auch viel Schaden erfahren verursacht hat, obwohl das meiste dabei gar nicht bekannt ist, würde ich sagen, also ich denke, dass da noch der echte oder tatsächliche Schaden noch wesentlich höher ist als das was bekannt ist.
Und zwar geht es um die Sicherheitslücke, die als Log for Shell bekannt ist aus dem Jahre 2021 also da wurde sie entdeckt und war dann auch wirklich. In den Nachrichten überall verbreitet.
Also das war mal wieder so n Fall, dass selbst Standard Nachrichtensender darüber berichtet haben aus der Tech Welt, quasi weil es halt wirklich so ne großen Auswirkungen hatte und vor allem weil die Sicherheitslücke wirklich simple Angriffe ermöglichte, das heißt Leute die nicht so technisch versiert waren, selbst die konnten diese Angriffe auf Zielsysteme fahren und das hat es auch so unfassbar. Wie soll ich sagen, gefährlich
gemacht? Einfach ja, und das ganze würde ich mir gerne mit dir heute anschauen. Ich würde mir gerne anschauen was die Java Bibliothek log for j von Apache Software Foundation, also von der Foundation damit zu tun hat und wie überhaupt diese Sicherheitslücke entstehen konnte und kleine Anmerkung liebe Zuhörer, liebe Zuhörer, falls du jetzt Angst hast, dass es zu technisch wird. Da können wir dich beruhigen.
Fahren wir nicht, während das auf sehr hoher Ebene erklären bisschen in die Technik abdriften, damit auch die Technik Fans was davon haben, aber wir versuchen es so gut wie möglich allgemein zu erklären. Ja, auf jeden Fall. Was ich super spannend fand dabei ist, dass der Bug ja auch vom BSI sogar richtig angekündigt wurde, da gab es ne riesen PDF Datei, dass du alles ganz genau durchlesen konntest. Ich find es da richtig. Rot eingestuft.
Ne, ja. Genau, und ich find das ist immer irgendwie so, n schon so n Zeichen, dass man sich so denkt. So OK, Moment was? So Leute, jetzt ist es ernst. Was ist da los? Aber man muss sich auch mal überlegen, dass dieser Bug, über den wir ja gleich noch mal sprechen und worauf wir genauer eingehen werden.
Den gab es oder die Sicherheitslücke, die gab es seit 2013 und Ende 2021 wurde das entdeckt und jetzt sagst hast du ja schon angekündigt, dass es ja eigentlich gar nicht schwer ist, diesen diesen Bug oder diese Sicherheitslücke auszunutzen und ich finde es einfach immer wieder unglaublich krass und auch irgendwo beängstigend und auch gleichzeitig irgendwie beeindruckend. Ich weiß nicht, das ist alles so ein Brei. Ja. Wie lange sowas offen ist, weißt du. Das ist das.
Solange es nicht entdeckt wird, verursacht es ja auch keinen Schaden. Aber sobald bekannt ist oder sich rumspricht, wie man vielleicht eine potenzielle Sicherheitslücke da ausnutzen kann, da wird es dann halt gefährlich. Und das gefährliche dabei ist ja, dass es unerkannt ist, weil meistens auch in unseren Fällen, die wir bisher schon behandelt hatten, ist so ein fix ja
relativ schnell gemacht. Also du kannst ja schnell die Sicherheitslücke beheben, aber du weißt einfach nicht, seit wann sie ausgenutzt wurde und das ist halt immer das gefährliche dabei. Genau das ist halt der Punkt. Also wahrscheinlich gibt es immer Leute die das diese diese Sicherheitslücke dann schon kannten und auch ausgenutzt haben. Deswegen wie du meintest, so man weiß halt nie wie groß der Schaden eigentlich wirklich ist.
Was ich aber auch super interessant fand war, dass sobald dieser diese Sicherheitslücke bekannt wurde. Auf einmal wurden halt wirklich tatsächlich ganz, ganz viele Angriffe gefahren. Über die Sicherheitslücke versucht zu fahren. Also das war so richtig so. OK, das ist die Sicherheitslücke und auf einmal ging es richtig zur Sache, dass. Immer das gefährliche dabei ist, wenn du es bekannt gibst. Logischerweise musst du es
machen damit. Sag ich mal die Server oder die die Inhaber sag ich mal auch die Chance haben diese Sicherheitslücke zu fixen, musst du es ja bekannt geben, aber gleichzeitig gibst du es ja der ganzen Welt bekannt und alle die dann nicht sofort diese Sicherheitslücke fixen und immer noch angreifbar sind, werden dann logischerweise auch angegriffen und das ist halt das problematische dabei, aber.
Wie du ja schon meintest, die war jetzt ewig da, diese Sicherheitslücke potenziell, ob sie bekannt war, weiß man nicht und ich stell mir da immer so vor, stell dir einfach vor, so ne kleine Hackergruppe im Untergrund, die jahrelang so Sicherheitslücken immer ausnutzt und dann wird es bekannt gefixt und die denken sich so, oh jetzt war es vorbei, also es wird ja hundertprozentig Leute geben die die wirklich längerfristig genutzt haben und das muss einfach so sein.
Definitiv. Aber springen wir doch mal ins Jahr 21 und zwar Ende 21 gab es ja dann vermehrt Berichte über Angriffe auf Spiele, Server und das finde ich auch so interessant. Und zwar war das Spiel Minecraft betroffen, weil da die Server ja oft auf Java basierten oder immer noch basieren und es wurden Angriffe berichtet, die.
Dass es eine einfache Methode gab, um quasi diese Spieleserver zu attackieren, indem man einfach Chat, Nachrichten, spezielle Zeichenketten quasi, also spezielle Chat Nachrichten im Chat postete und dadurch sensible Daten abgreifen konnte oder auch schadhafte Software ausführen konnte auf dem Server, was jetzt erstmal total absurd klingt. Aber da gab es halt vermehrt Berichte, weil das natürlich super schnell aufgefallen ist, dass da irgendwas nicht stimmt.
Und war jetzt der Spieleserver Schuld oder woran lag das? Das wurde halt Ende 21 festgestellt und zeitgleich haben sicherheitsvorsteller Vorsteller Sicherheitsforscher sich mal verschiedene Java Bibliotheken zur Brust genommen und haben festgestellt, dass Log for J. Sicherheitslücken hat und haben die berichtet an Apache, dass sie sich darum mal bitte kümmern sollten. Und so hat das Ganze denn quasi seinen Lauf genommen.
Wir haben auf ein auf der einen Seite schon Mitteilungen, das Halt so in der Spielewelt bekannt war. Ey, da stimmt irgendwas nicht, andererseits haben wirklich die Experten festgestellt, Hey guck mal da bei euch in eurem Package Log for J, da stimmt was nicht. Und wie das ganze jetzt zusammenhängt, was das mit dem Server zu tun hat und was log for j jetzt wirklich ist. Liebe Zuhörerinnen, liebe Zuhörer, das werden wir uns jetzt angucken und dann auf die
Sicherheitslücke kommen. Bleibt gespannt, es ist wirklich der absolute Hammer, also fabi, Start mal. Also was ich zuerst noch sagen muss, ist, dass ich mich auch noch super genau dran erinnern kann, wo wir jetzt gerade im Jahr 2021 sind, weil ich saß auf Arbeit und es war irgendein Tag Ende des Jahres, wo dann wirklich?
Diese Nachrichten kamen, wo dann aber auch in unserer auf auf der Arbeit halt eben auch sozusagen die Nachricht rumgingen und wir dann auch wirklich alle gucken sollten, ob wir denn irgendwo log 4 j benutzen, weil wir auch mit Java oder cotlin Anwendung zu tun hatten und das ja auch eine Java Bibliothek ist. Ne und log 4 j an sich ist ja eine Bibliothek, die eigentlich dafür da ist oder die wirklich nicht nur eigentlich, sondern wirklich dafür da ist Daten zu loggen, das heißt?
Du nutzt log 4 J, um einfach in deiner Server Anwendung zum Beispiel bestimmte Events einfach in ein Log file zu schreiben und ein Log file ist ja auch nichts anderes, als dass du im Endeffekt eigentlich nur wissen willst.
Okay was wird denn jetzt hier also protokollierst was in deinem Server passiert, um zum Beispiel auch herauszufinden, läuft dann alles richtig, gibt es vielleicht irgendwelche Probleme und so weiter und sofort und das ist ja im Endeffekt. Eigentlich nur die Bibliothek und jetzt kann man sich natürlich fragen, was hat denn jetzt eine, also eine Bibliothek, die einfach nur dokumentiert, was dein Server macht, wie kann es denn überhaupt dazu kommen, dass man darüber sozusagen eine
Sicherheitslücke erzeugt? Und nicht irgendeine Sicherheitslücke, sondern eine extrem krasse Sicherheitslücke, so dass man wirklich von einer Art Remote Code Execution sprechen kann. Das ist ja sozusagen 1 der schwerwiegendsten Sicherheitslücken, die man irgendwie machen kann, weil du kannst halt, du hast halt die Möglichkeit, Code auf dem Server, also als Angreifer Code auf dem Server auf dem Ziel Server sozusagen auszuführen, deinen eigenen Code, das was du machen willst.
Du kannst rein theoretisch, hättest jeden Code. Den du dir rein theoretisch, ich sag jetzt mal so vorstellen kannst, hättest du auf dem Angreifer also angegriffenen Server laufen lassen kann und das finde ich krass gefiltert, ungefiltert und da muss man sich überlegen, wie heftig das ist und man kann sich ja auch berechtigterweise fragen, wie kann das bei einer Bibliothek passieren, die nie für eigentlich für nichts anderes da ist, als Daten zu locken.
Ja, vor allem, da sie ja Open Source ist und so weit verbreitet ist. Wie kann denn überhaupt ne Sicherheitslücke da drin sein? Das ist ja auch immer so die Frage, ne, also es ist sag ich mal der ganzen Welt verstreut, alle locken ihre Events und Daten mit Log 4 J nicht alle aber sehr vieles ist wirklich weit verbreitet und auf einmal fällt das auf das das das spielt ja wieder in die Karten zu sagen ey das ist so lange schon drin, wer weiß was da alles mit
passiert ist ne? Und die Frage ist, wie kann das jetzt passieren? Das ist ja genau die richtige Frage, die du gerade gestellt hast. Jetzt hat n Server Log for J verwendet, also die Entwickler verwenden das und sagen zum Beispiel gehen wir noch mal auf den Spieleserver ein, weil das so n so n einfaches Beispiel ist, wo niemand sich was Böses bei denkt. Und jetzt habe ich nämlich zum Beispiel Log for J auf meinem Server um zu locken, welche Chatnachrichten reinkommen und
da möchte ich zum Beispiel loggen um. 14:38 Uhr hat User Fabi 1234 geschrieben. Hey. Leute, ich mein Usernamen Link. Hat geschrieben Hey Leute, ich hab richtig Lust auf ne Runde Minecraft so das wäre jetzt so n log du hast die Uhrzeit, du hast gelockt wer das geschrieben hat fabi 1234 noch mal kurz sein Username und die Nachricht.
Also das macht ja Sinn sowas zu loggen für dein System, damit du weißt was passiert auf deinem Spieleserver und wie es zum Beispiel auch die Auslastung, das sind ja alles so Punkte, warum man Logs erzeugt, am Ende genau und genau da ist nämlich auch eine Funktionalität drin, was ich gerade erklärt habe, die am Ende auch entscheidend für die Sicherheitslücke war und zwar geht es darum, dass du in diesen Logs dynamisch Inhalte anzeigen möchtest oder Laden möchtest.
Weil gehen wir von dem Chat aus. Du hast hier 2030 Leute da drin und die chatten miteinander, dann soll ja nicht bei jedem Log stehen 14:38 Uhr, fabi 1234 und dann die Nachricht, sondern du möchtest ja zum Beispiel ne aktuelle Uhrzeit anzeigen, du möchtest den richtigen Usernamen anzeigen und das sind so dynamische Inhalte in vorgefertigten Log Nachrichten oder dann halt zum Beispiel auch die die Chat Message, die ich vorhin genannt hatte. Die du quasi ersetzen möchtest.
Du möchtest dann in diesen vorgefertigten Nachrichten diese dynamische Inhalte wie username Uhrzeit einfügen und das Ganze als Notiz, sozusagen als log speichern, damit man weiß, um 14:38 Uhr hat fabi 1234 folgendes geschrieben. Wenn ich das jetzt 5 Tage später mir den log angucke. Und für diese Funktionalität, weil wir ja gesagt haben, das war in so n Server auf Java basierend und Log for J ist auch eine Java Bibliothek, wurde genauso eine Java Funktionalität
verwendet und zwar die JNTI. Wenn ich jetzt ich bin aber bei Abkürzung, das ist quasi Java Naming Directory Interface, magst du mal drauf eingehen was das am Ende macht oder wofür das sorgt? Genau also im Endeffekt, wie du schon meintest. Du hast also Jndi ist an sich ja eigentlich nur ein Interface, was dafür da ist, sozusagen oder was ein Protokoll verwendet um zu kommunizieren um sozusagen irgendwo Daten herzubekommen, die halt genau diese diese dynamischen Daten, die du brauchst.
Und du kannst halt im Endeffekt. Jndi verwenden also, das ist sozusagen also Jndi ist ein Vermittler, kann man sich so vorstellen, der die Anfrage interpretiert, zum Beispiel, das ist fabi 1234 und du willst jetzt zum Beispiel Daten noch weitere Daten über diesen User haben und diese Anfrage wird dann interpretiert und weitergeleitet dahin, wo du halt eben diese Daten über, ich nenne es jetzt mal diesen diesen Schlüssel fabi 1234 herbekommst und da.
Kannst du dann im Endeffekt über ein bestimmtes Protokoll kommunizieren, an einen externen Server zum Beispiel? Das heißt, du holst dir deine Daten von irgendwo her und auf irgendeinem Server sage ich jetzt mal, liegen irgendwelche Daten wie zum Beispiel eine Datenbank, wo du dir deine Daten am Ende her holst und das Ganze passiert dann zum Beispiel über einen sogenannten Adap Server so und ein adap Server ist.
Bisschen ähnlich wie zum Beispiel ne Art Adressbuch, wo irgendwelche Daten hinterlegt sind. Das heißt du kannst da irgendwo nachschlagen, kannst sagen, ich möchte jetzt von diesem adap Server bestimmte Daten haben und sagst gehst dann hin und sagst Ich möchte Daten für Fabian 1234 haben und dann kriegst du diese Daten wieder zurück und dann kannst du halt mit diesen Daten arbeiten und sagen OK hier.
Fabian 124 der echte Name ist das und das und keine Ahnung, was auch immer dann sozusagen gelockt werden muss. Also du kannst dann sozusagen bestimmte Daten aus diesen Daten, aus diesem Datenpaket, was du vom Lda Server Zurückbekommst oder von deinem Adressbuch sozusagen zurückbekommst, kannst du dann verwenden und genau im Endeffekt kriegst du aber, und das ist jetzt so eine Java Eigenheit, du kriegst halt eine Java Klasse, also so ein Java klassenpaket.
Kannst du halt von diesem Adapt Server bekommen und kannst dann im Endeffekt sozusagen diesen diese Klasse mit dem Java zum Java Class loader kannst du dann sozusagen laden und halt eben auch Daten abgreifen beziehungsweise Code ausführen. So, und das ist jetzt eigentlich genau der Knackpunkt, weil du kannst. Das fand ich auch so interessant, weil es wurde halt nicht davon ausgegangen und.
Was man am Ende sozusagen damit machen kann, also mit dieser Funktionalität, weil im Endeffekt um das ganze kurz zusammenzufassen, hast du eine Möglichkeit, um ein Place Holder in deinen in deine Log Nachricht reinzuschreiben und dieser Place Holder ersetzt dann am Ende Daten beziehungsweise da wird etwas ersetzt, was am Ende da reinkommt und das was da reinkommt kann halt eine aus ein auszuführender Code Baustein
sein und. Und dann kannst du halt im Endeffekt sagen, okay, du hast eine Log Nachricht und da
ersetze mir mal was. Das heißt dein Log for J Bibliothek macht nichts anderes als den Adap Server anzufragen, also dein Adressbuch und dir irgendwelche Daten aus diesem Adressbuch rauszuholen und diese Daten dann dort einzusetzen, was zum Beispiel Daten sein können, was zum Beispiel Code sein kann, der ausgeführt wird und mit diesem Code der ausgeführt wird an dieser Stelle, damit wurde irgendwie nicht so richtig
gerechnet. Genau weil wie du gesagt hast, dass der Java Class loader Halt einfach diese Referenz auch lädt und erzeugt. Und dann wird es halt ausgeführt und man geht natürlich nie von was bösem aus. Deswegen war es ja grundsätzlich, oder ist es ja grundsätzlich cool, dass das JDNIJNDI so quasi auch die Möglichkeit hat oder Protokolle implementiert hat, wie zum Beispiel das LDAP. Auch externe Server Anfragen zu können für Daten diese zu bekommen und dann in den Logs
einzutragen. Problem ist halt dieser Aspekt, dass quasi diese Java Referenzen durch den Class Loader geladen werden und halt auch ausgeführt werden und da hat man ist man halt einfach von nichts schlimm ausgegangen, man hat gesagt ist doch cool, dann kann ich mir von einem externen Server noch Daten holen die ich da loggen will wie du ja so schön meintest, ich habe mein Place Place holder 123 Entschuldigung place holder. Und möchte da einfach nur dynamisch die Daten dann
eintragen. Ich meine ich habe da nichts Böses im Sinn, das ist ja nur ein log, genau so was du jetzt aber machen kannst innerhalb diesem Placeholder und das ist jetzt auch der Knackpunkt, du kannst auch angeben von welchem Server du das haben möchtest. Du kannst halt wirklich explizit sagen Log for j. Hier ist eine Log Nachricht und da drin ist ein Place holder wo drin steht.
Ich möchte, dass ein LDAP Server angefragt wird mit der folgenden Adresse und du gibst sogar die Server Adresse an mit Port und allem und gibst auch an welche Daten du haben möchtest. Also quasi einfach gesagt welcher Code geladen werden soll am Ende und das wurde ungefiltert durchgelassen, das
heißt? JNDI hat gesagt, OK, ich guck nach lookup, ja OK, ich hab hier das und das ldap OK Adresse frage ich an AE Server XY hier unser berühmter Server 5 hinten rechts in der Ecke der Böse der wird angefragt hast du hier die Daten? Ich brauch mal Schadpaket ABC und er sagt Hey kein Problem hier bitte hast du. Das wird geladen, wird noch in den Log da eingetragen, spielt aber keine Rolle, weil der Code schon ausgeführt wird.
Genau. So, und dann wird dieses schadhafte Code Paket auf deinem Server auf dem Zielsystem ausgeführt und das kann halt alles Mögliche sein. Wir können ja später noch auf so Fälle eingehen, die bekannt wurden, was damit so getrieben wurde, aber das ist am Ende jetzt die Sicherheitslücke und die ist Easy und du kannst die Trägern beispielsweise durch ein Chat Fenster auf einem Spiel Server. Indem du einfach genauso eine
Nachricht absetzt. Und dann wird auf dem Spieleserver genau das ausgeführt und so konntest du zum Beispiel auch irgendwelche Hacks ausführen für Spiele ne, also das ist ja jetzt noch so der geringste Schaden, dass du in einem Spiel manipulierst dadurch oder oder betrügst sagen wir es mal. So, und das war ja auch zum Beispiel nicht nur, also wir haben jetzt zum Beispiel n Spieleserver als Beispiel genannt, aber du kannst ja auch.
Angenommen du hast zum Beispiel eine Anmeldemaske von einem beliebigen Service, wo du irgendwie dich anmeldest. Kennt man ja Username Passwort und los geht's. Und wenn du jetzt zum Beispiel hingehst irgendeinem Service, wo du vielleicht auch sehr, sehr sensible Daten hast und dieser Server läuft am Ende auch wieder auf Java und nutzt Log 4 J, ist natürlich die Voraussetzung dafür, das weißt du als Angreifer nicht, aber du kannst halt gucken, dass du das, also
dass du das herausfindest. Und dann könntest du zum Beispiel genauso nicht jetzt zum Beispiel bei einem Chatfenster, sondern einfach über die Anmeldemaske sagen, OK, ich bin Tino 1234 sorry, dass ich jetzt deinen Usernamen liegt. Nee, das. Ist nur ist nur fair ist nur. Fair, nicht Leute. Und dann hast du und jetzt kommt nämlich auch wieder der Knackpunkt und dann schreibst du halt genau diesen diesen JNDI Befehl mit diesem Lookup zu
diesem. Adap Server schreibst du in den Usernamen mit rein und das wird dann quasi genauso wie es da ist gelockt unter Umständen, das muss man herausfinden, das war sozusagen die Schwierigkeit dabei.
Am Ende können wir noch mal ein bisschen genauer darauf eingehen, dass du dann im Endeffekt dich versuchst, damit einzuloggen und der Effekt ist, dass die anmeldemaske dir sagt, es tut uns leid, aber Username und Passwort, irgendwas stimmt da nicht, was aber under the Hood passiert ist, ist, dass
dieser. Befehl, den du in deinen Usernamen eingegeben hast, aber am Ende durch das Log for J Package ausgeführt wurde beziehungsweise wurde, dass dieser String ja nicht ausgeführt, sondern der String wurde angeschaut gesagt, OK, hier ist ein Placeholder, da ist ein JNDI Befehl drin, jetzt muss ich mir aber die Daten von dem entsprechenden Server holen und dieser Server auch wieder ein Knackpunkt, der muss natürlich vom Angreifer aufgesetzt worden
sein und dann muss der Angreifer genau für diesen Befehl der da drin steht in diesem. Befehl in diesem in diesem J and I Befehl muss natürlich genau dafür eine bestimmte eine bestimmte Java Exploit Klasse hinterlegt sein. Ne die dann geladen wird und dann ausgeführt wird und das ist
halt krass. Das heißt im Endeffekt musst du nichts anderes machen als einen String irgendwie ins System zu schleusen, zu überprüfen, also zu gucken, OK hoffentlich wird das an der Stelle gelockt und dann halt noch deinen Server aufzusetzen der von dem dann die Daten. Am Ende geholt wurden. So und dann hast du eigentlich schon die Sicherheitslücke ausgenutzt.
Genau, ich finde, das ist auch ein gutes Beispiel, weil die Wahrscheinlichkeit sehr hoch ist, dass ein Error gelockt wird, wenn der locker nicht funktioniert. Das heißt, du gibst da halt wirklich bei Username. Dein schadhaften, deine schadhafte Zeichenkette ein, was du quasi ausführen möchtest, hatten wir ja vorhin gesagt, da schreibst du halt rein. Ich möchte bitte L darb auf folgenden Server gehen und schadhaft Software ABC ich weiß nicht mehr wie. Ich es genannt.
Hab das bitte ausführen oder lan bekommen, die Daten ne und bei Passwort gibst du irgendwas ein. Du willst dich ja auch nicht einloggen, wäre jetzt irgendwie witzig wenn du damit dich
einloggen könntest. Aber. Das passiert natürlich nicht, aber es wird sehr wahrscheinlich in Error gelockt und dementsprechend ist diese ganze Kette, wie du ja schon so schön sagtest, angetriggert und was am Ende dann passieren kann mit meinen schadhaften Code ist, dass ich mir echte Login Daten rausziehen könnte und dann quasi mein schadhafter Code wieder nach Hause telefoniert mit abgegriffenen Daten, also da oder oder einfach alle möglichen
Sachen auf dem Zielsystem installieren, öffnen, wie auch immer. Du bist ja dann wirklich auf dem System und kannst dementsprechend auch agieren. Das krasse ist halt das gefährliche dabei. Genau, du hast ja rein theoretisch die Möglichkeit über ne ja innerhalb einer Java Klasse, zum Beispiel.
Wenn du also diese klasse Ausführst, so diesen Code dieser Java Klasse ausführst, hast du ja die Möglichkeit zum Beispiel auch einfach Command Befehle in diese Java Klasse einzubetten und zu sagen, führe diese Command Befehle aus, was ja im Endeffekt. Durchaus zum Beispiel dazu führen kann, dass du halt wirklich auch n Remote Zugriff, also ne interaktive Shell sag ich jetzt mal zu diesem Rechner aufbauen kannst und dann interaktiv auf diesem Server arbeiten kannst. Nur mal als mal das.
Ist so schön, weil deswegen ist es auch als Log for Shell in die Geschichte eingegangen, weil genau das ist halt möglich damit genau, und das zeigt halt auch, wie gefährlich das Ganze war. Ja, und das finde ich halt auch super krass.
Also das also das ist, das ist eine Sache, die kann man sich eigentlich gar nicht vorstellen, weil du weißt nichts davon und jemand anderes hat Zugriff auf deinen Rechner sozusagen, und das ist richtig krass, also so eine kleine Analogie, die finde ich irgendwie ganz interessant, wenn man sich das jetzt vielleicht noch nicht so richtig vorstellen konnte, wie das so
passiert. Angenommen, Liebe Zora, Liebe Zora, Du gehst jetzt zum Beispiel in ein Hotel rein und möchtest dich zum Beispiel da anmelden, dann hast du. Am Ende zum Beispiel die Rezeptionistin oder den Rezeptionist. Der steht da und nimmt sozusagen deine Anfrage auf. Du sagst, ich möchte gern n Zimmer haben und das soll gerne mit einem Doppelbett sein und bitte machen Sie auch ne Suite draus.
Ich hab heute n ganz besonderen Abend, ich muss was feiern, keine Ahnung. Und dann wird das ja natürlich
irgendwo niedergeschrieben. Das heißt ne, die Rezeptionistin, der Rezeptionist ist dann irgendwo sozusagen diese Log for j und schreibt die Sachen irgendwie auf, wird irgendwie dokumentiert, es wird gesagt, OK, Kunde XY möchte gerne das und das und das haben und dann kann es halt natürlich auch noch sein, dass du vielleicht noch bestimmte andere Wünsche hast, wie zum Beispiel, bitte tragen sie auch noch
meine. Sachen hoch und die Rezeptionistin sagt Okay schreibe ich auf, gebe ich an einen Mitarbeiter oder Mitarbeiterin hier weiter. Das wird für sie gemacht, Ihre Sachen werden hochgetragen, könnten sie vielleicht auch noch eine Flasche Sekt schon mal kalt stellen und aufs Zimmer bringen? Ja machen wir auch, sondern wird im Endeffekt viele. Wünsche immer. Jetzt bin ich und dann hast du ja im Endeffekt den.
Also der Effekt ist, dass die Rezeptionistin oder der Rezeptionist sagt Okay passt auf ich. Source, das sozusagen aus und gebe diese Aufgaben an jemand anderen weiter. Ne so und jetzt ist der Knackpunkt an der Geschichte, dass du rein theoretisch selber bestimmen könntest, wer diese Dinge ausführt.
Das heißt, du könntest jetzt zum Beispiel sagen, ich möchte aber gerne, dass zum Beispiel mein Kumpel das aus, also diese Aufgabe erfüllt und zum Beispiel aber auch auf Zimmer 5 und nicht Zimmer 6. Also wenn ich jetzt zum Beispiel Zimmer 5 nicht hätte, aber Zimmer 6 gebucht hätte, dann könnte ich der Rezeptionistin sagen, schreiben Sie bitte auf, dass Kumpel von Fabian 1234 zum Beispiel.
Irgendwas bestimmtes auf Zimmer 6 bringt so und er würde dann autorisiert sein das auf Zimmer 6 zu bringen, obwohl Zimmer 6 eigentlich gar keinen Zugriff sozusagen. Er ist gar nicht autorisiert in dieses Zimmer zu gehen. Ja, geben Sie ihm einfach eine Schlüsselkarte für Zimmer 6. Genau, und das wurde halt 0,0 geprüft und das ist halt das interessante, weil dieser entsprechende Mensch konnte
natürlich dann. In Zimmer 6 gehen und alles rausholen was er wollte, obwohl eigentlich gar keine Zugriffsberechtigung dafür da war und so kann man sich das ungefähr vorstellen und dass das nicht gut ist, kann man sich vielleicht auch relativ schnell vorstellen. Also da ist halt denn der Menschenverstand noch dazwischen zwischen Angreifer und Opfer, sage ich mal in dem Zimmer in dem Zimmer, also in dem Zimmer 6 dann wahrscheinlich das heißt.
An der Rezeption werden sich die Leute wahrscheinlich denken, nein, warum so? Nein, machen wir nicht, aber wenn du das natürlich ungefiltert durchlässt und das einfach so abgearbeitet wird, so wie es jetzt hier bei Log 4 J der Fall war, dann wird es halt richtig gefährlich und wir können ja immer noch so auf andere Fälle eingehen, was ich halt auch super spannend fand ist als das rauskam gab es auch Berichte, Mutmaßungen, aber auch Berichte also.
Immer mit Vorsicht genießen, aber ich fand es halt krass, dass Staaten wollen jetzt auch nicht explizit welche benennen, aber sofort angefangen haben, das für Spionagezwecke zu nutzen. Das heißt, es wurden wieder indirekte Angriffe auf andere Länder gefahren im Sinne von der Spionage und das finde ich halt so krass, also man erkennt quasi die Sicherheitslücke und sozusagen die Chance Daten abzugreifen und es wird auch direkt ausgenutzt. Genauso gab es verschiedene Hackergruppen.
Die diese Sicherheitslücke genutzt haben, um im Kryptobereich meiner zu instanziieren auf Zielsystem, das quasi unentdeckt gemeint wurde, für verschiedene Kryptowährungen. Das find ich halt auch, ist auch so n super krasser Punkt einfach der dafür genutzt wurde, weil du halt wirklich Code ausführen konntest was du wolltest. Und deswegen wurde auch. Ja, man kann sie jetzt hinstellen und sagen, ja gut, dann wird halt da irgendwas
gemeint. Auf meinem Rechner ist ja nicht so schlimm, passiert ja nichts Schlimmes auf meinem Rechner, aber ich meine du hast am Ende arbeitet ja dein Rechner für jemand anderen, also ne unabhängig was er da tut und du hast natürlich auch noch Stromverbrauch also klar kann man sie jetzt vielleicht hinstellen, so ist jetzt so schlimm ist das jetzt nicht, aber also Alter es ist falsch. Du hast halt Zugriff auf sämtliche Systeme. Dadurch erlangt ne. Und ich find es halt auch so
spannend. Ich hab mich zum Beispiel gefragt, warum gerade eldaab als Protokoll JDNA hat ja auch die JNDA meine Güte, ich jedes Mal ne jedes Mal, hat ja auch andere Protokolle implementiert, du könntest ja auch zum Beispiel ganz normal über HTTP. Calls sind aber die werden halt oft denn einfach gefiltert oder sind eingeschränkt in der Nutzung. Und LDA ist halt einfach zu
verwenden. Es ist auch simpel so einen schadhaften Lda Server aufzusetzen, du musst da nicht viel konfigurieren oder so, du kannst einfach sagen hey wenn die Anfrage hier reinkommt, dann leite ich halt hier zu meinem schadhaften Code weiter, liefert das aus die Referenz und fertig das war es schon, das heißt das konnte man halt wirklich auch schnell umsetzen. Weil dieses Protokoll adap so Leichtgewichtig. Ist das.
Heißt was eigentlich, was der Vorteil dabei ist, war hier absolut der Nachteil, weil es so einfach ausgenutzt werden konnte und dass er nicht mal Schuld des Protokolls ist an der Stelle. Das Interessante ist, du kannst rein theoretisch diese Sicherheitslücke auch relativ einfach nachstellen und du brauchst auch nicht viel Code dafür, also kannst rein theoretisch um es auszuprobieren, brauchst du sozusagen diesen adap Server mit dem mit dem Code.
Der da hinterlegt so diese Java Klasse und du brauchst halt irgendwie ein sagen wir mal einen Server der dann sozusagen log 4 J nutzt Wichtigerweise dabei auch ist zu sagen, dass es natürlich eine bestimmte Log 4 j Version sein muss, weil diese Log 4 j, also diese Sicherheitslücke wurde dann natürlich als es aufgetreten ist gefixt und gepatcht mit der Version 2 Punkt 15 und. Und vorher wurde es halt. Oder war es halt möglich, die Sicherheitslücke auszunutzen, ja. Aber das war sehr viele
Versionen lang möglich. Genau also die Wahrscheinlichkeit. Ist halt groß, dass viele Server sich nicht sofort geupdatet haben in der Log 4 j Version deswegen weil du anfangs meintest, du kannst dich noch erinnern, wie da der Aufschrei war auf Arbeit kann ich mich auch dran erinnern bei meiner Arbeit damals aber. Deswegen war ja der Aufschrei da.
Guckt bitte nach, wir müssen das updaten, wenn das irgendwo so unerkannt auf alter Version bleibt, dann haben wir halt echt n Problem und es sind 100 pro lange viele Server auf dieser alten Version hängen geblieben. Ja, ja, das ist halt das, das Halt das krasse, also man man sagt man, man weiß nicht genau, ob dieses ob dieser Fehler schon immer drin war oder erst ab einer bestimmten Version, aber definitiv in der Version 2 Punkt 14. Davor sehr wahrscheinlich auch.
Und aber wie gesagt ab der Version 215 wurde das dann mehr oder weniger gefixt. Ich glaube ab der Version 216 oder so gab es dann gar nicht mehr diese jndi Funktionalität, die wurde da komplett rausgenommen, wenn ich da richtig informiert bin, aber. Das ist einfach schon gut.
Dazu stimmt zu sagen updated. Auf 215 war ja damals so der Fix, das heißt, alle Betroffene mit ihren Servern oder wo auch immer sie diese Log 4 j verwendet haben, konnten im Prinzip durch einen Software Update oder beziehungsweise Library Update das fixen auf ihrer Seite. Das heißt wie kann man sowas verhindern. Ey bleibt aktuell wenn irgendwelche Sicherheitspatches rauskommen. Installiert sie auch, verwendet
sie auch. Es ist super bequem auf alten Versionen zu bleiben, das kennen wir selbst und auch wir selbst machen das, das passiert, aber es ist halt immer ratsam, wirklich aktuell zu bleiben, gerade wenn sowas mal wieder auftritt und wie gesagt, Ende 21 ist noch nicht lange her, das ist auf jeden Fall n wichtiger Punkt was ich hätte man Zweiter verhindern können. Genau da wollte ich gerade drauf eingehen, weil ich fand das auch interessant, weil es wurde ja erstmal unglaublich krass gehypt.
Bei uns zum Beispiel. Also ich hab das halt wie gesagt, du meinst. Ich auch am Anfang gesagt hab, ich hab es ja echt richtig erfahren, dass da auch Druck drauf kam auf das ganze und das interessante dabei ist und ich find das ist ja manchmal auch NN wichtiger Punkt, dass man nicht sofort völlig die Nerven verliert, weil man hat ja manchmal gibt es Bibliotheken die man nutzt, wo man um eine Sicherheitslücke nicht drumherum kommt, wenn man sie nicht patcht. Wenn man sie nicht updatet.
In dem Fall war es aber nicht zwangsläufig so, dass das Ganze auch wirklich passiert ist. Es gab 2 verschiedene Sachen, einmal, wenn du sie nicht verwendet hast, diese Bibliothek, dann konnte es auch nicht passieren. Wichtig dabei ist, dass diese Bibliothek aber auch nicht versteckt in anderen Bibliotheken war und da quasi verwendet wurde, das war ein wichtiger Punkt, den man checken musste, aber wenn du zum Beispiel diese Bibliothek nicht
verwendet hast, dann. Dann konnte es natürlich nicht
auftreten und genauso. Das ist zum Beispiel auch noch ein Fall, nur weil diese Sicherheitslücke da war, heißt das noch lange nicht, dass sie ausgenutzt werden konnte, weil beispielsweise, wenn du zum Beispiel deinen Usernamen Lockst, mit diesem Beispiel, was ich vorhin meinte bei der Anmeldemaske und du aber zum Beispiel, und ich weiß, die Leute lieben es, Rex nutzt zum Beispiel, um deinen Usernamen zu validieren, ob er überhaupt valide ist oder nicht, es kann
ja zum Beispiel sein, dass du beispielsweise. Wenn du angenommen, du hast einen Usernamen oder so, musst du ja nicht zwangsläufig in deinem Usernamen geschweifte klammern, sage ich jetzt mal zulassen, um zumindest mal eine gewisse Sicherheit reinzubringen. Du hast natürlich da noch die Möglichkeit das Ganze zu entkrypten und so weiter ne, also es gibt noch Möglichkeiten daran trotzdem vorbei zu Schiffen.
Aber es ist halt eben die Frage, wie validierst du deine Daten, um zum Beispiel überhaupt zuzulassen, dass du diesen diese diese Möglichkeit überhaupt zulässt. Dass genau dieser String dann geloggt wird am Ende ne, das ist halt der Punkt. Das ist natürlich auch schwierig, wenn du dann am Ende wieder n Lock hast. Username is not valid und dann schreibst du den Username da rein oder so, dann hast du mich genau das gleiche erreicht am Ende, aber ich weiß worauf du hinaus möchtest.
Du kannst natürlich auf Implementierungs auf deiner Implementierungsseite. Schon Sicherheitsmechanismen integrieren aber sagen wir mal so, man geht nicht davon aus, dass wenn ich was logge so was Schlimmes passieren kann. Deswegen keine Schande, wenn Leute das nicht abgefangen haben, sondern gesagt haben, ey, ich logge jetzt einfach, dass das nicht geht, ne definitiv also was ich halt interessant finde ist, dass Log for J standardmäßig einfach dieses
JNDA aktiviert hatte. Du kannst es auch abschalten. Du kannst auch sagen, ich möchte das gar nicht machen. Diese lookup Funktion wäre der erste Punkt, also finde ich, dass man so was standardmäßig auch deaktivieren könnte. Der nächste Punkt ist, dass natürlich in J NDA selbst überhaupt nicht gefiltert wurde, was da eigentlich angefragt wird, das finde ich halt auch krass, also das wäre eigentlich die erste Instanz so was quasi zu überprüfen.
Also du hattest jetzt eigentlich mehrere Stufen, sage ich mal. Wo man hätte es verhindern können, also auch als alle haben es aber nicht getan am Ende und das finde ich halt krass. Was zum Beispiel es? Ist ja wieder ne Verkettung am Ende wie bei allen Big Fails die wir hatten ne Verkettung von verschiedenen, in diesem Fall Funktionalitäten und Libraries, die aber im gesamten so eine krasse Sicherheitslücke
aufgemacht haben. Und was ich zum Beispiel auch sehr, sehr interessant finde, und ich glaube, das ist auch ne
Sache, die generell. Damals, aber auch heute noch sehr stiefmütterlich behandelt wird, ist zum Beispiel Firewall Konfiguration, weil man muss natürlich davon ausgehen, dass am Ende hast du ja über diesen Lookup an diesen Lda Server irgendwo eine Kommunikation, die irgendwo hingeht, die du ja rein theoretisch mit einer richtigen Firewall Konfiguration eigentlich von Default auch sowieso blocken solltest, weil du in einer schönen heilen Welt. Konfigurierst du ja eigentlich
dein System so, dass du sagst, da darf ich hin, da darf ich nicht hin, weil wir haben ja vielleicht sehr, sehr sensible und wichtige Informationen und Daten auf unserem System und deswegen sollte man gucken, dass man da nicht irgendwie solche
Sachen zulässt. Und da sollten auch nicht irgendwie aus Versehen irgendwelche Kommunikation in irgendwo hingehen, wo wir es gar nicht erlauben ne, also das wäre auf jeden Fall auch ein sehr, sehr wichtiger und also wichtiger Punkt, den man hätte machen können. Einfach schon präventiv, egal ob man diese Library benutzt oder nicht. Einfach generell, aber erfahrungsgemäß wird das so nicht immer umgesetzt.
Ich habe noch einen Punkt, bevor die Folge abschließen können, weil ich finde, wir haben es jetzt schon wieder sehr ausführlich besprochen. Ist halt auch einfach ein spannendes Thema, aber was mir auch wieder gezeigt hat, was
geht eigentlich bei Menschen ab? Das also ich frage mich immer, wie komme ich auf die Idee oder warum habe ich so eine böse Intention dahinter, weil als das bekannt wurde, wurden sofort Bots entwickelt, die das ganze Netz quasi gescannt haben nach anfälligen Servern die noch die falsche Log Vj Version verwenden, weil du kannst auch über dieses dynamische Lan dir
die Version ausgeben lassen. Beispielsweise auf jeden Fall wurden Bots entwickelt, die Scannen nach anfälligen Servern, damit diese dann gezielt angegriffen werden können. Und da siehst du diese, diese, diese Motivation dahinter finde ich einfach so krass zu sagen, haha, hier ist ne riesen Sicherheitslücke, jetzt geht es los und das das fand ich halt auch wieder so erstaunlich im negativen Sinne, da ist schon schon heftig, oder? Also das Ding ist, und das ist
ja auch krass, also. Also das das Scannen und das Einschleusen davon ist ja auch wirklich. Also wir hatten jetzt 2 Beispiele genannt, aber um auch noch mal das Ausmaß noch mal weiter noch mal bisschen zu dramatisieren, du kannst ja rein theoretisch auch versuchen über ein HTTP header in einem Header quasi da auch so was einzuschleusen, also du kannst es über so viele versuchen, also so viele sag mal Vektoren versuchen wo irgendwo. Wahrscheinlich irgendwas gelockt wird.
Also du hast ja bestimmte, also bestimmte, du kannst ja erfahrungsgemäß sagen, okay, das wird wahrscheinlich gelockt und das wird wahrscheinlich gelockt und das wird wahrscheinlich gelockt und über diese Möglichkeiten, wo häufig irgendwelche Server Logs sozusagen stattfinden, an den entsprechenden Punkten, da wurde es natürlich versucht und da wurde natürlich versucht, genau dieser Code einzuschleusen, aber ich finde einfach, wenn man sich das noch mal, wenn man das noch
mal wirklich sich vor Augen hält, dann. Finde ich das schon krass und dann nur weil ich das auch sehr beeindruckend fand, war, dass du ja auch relativ schnell in der Lage bist zu sagen, wenn du so einen Server kompromittiert hast, kannst du ja zum Beispiel ein Skript auf diesem Server installieren, der regelmäßig fragt, also ein Ping sozusagen macht und an deinen bösen Angriffsserver anfragt, ob es
irgendwas auszuführen hat. Das heißt, du kannst rein theoretisch konntest in diesem Moment alle Server, die du kompromittiert hast dann. Regelmäßig mit einem Skript versorgen und sagen, für das aus, sekündlich und. Dann auch wieder Angriffe von eh schon eingenommenen Servern quasi ausführen. Genau das heißt im Endeffekt hast du, könntest du genau du könntest dann sozusagen schon fast ein Bot. Also eigentlich kannst du ein
Botnetz damit aufbauen und das. Eigentlich noch mehr verschleiern halt, wo der eigentliche Angriff herkommt. Also das sind super Spannende. Themen kann man sich auch mal überlegen, ob wir da mal ne Podcast folge drüber machen über diese Strategien. Ansonsten würde ich sagen hat wieder Mega Spaß gemacht, super cooles Thema, wie gesagt noch nicht lange her, vielen Dank dafür. Fabi ebenso. So so. Und ja, liebe, zuhören, Liebe zuhören.
Falls du Fragen zu dem Thema hast oder dir vielleicht etwas nicht ganz klar geworden ist dabei, das ist gar kein Problem, dann schreibt uns gerne, auch wenn du Feedback hast. Die Podcast Mail findest du in den Show Notes.
Wir freuen uns über jede Nachricht und werden sie auch sehr, sehr gerne beantworten, falls Dir der Podcast gefallen hat und besonders die Folge, dann lass es doch auch deine Freunde wissen und empfiehlt den Podcast weiter, vielleicht so 23 Leuten, das wäre super das auch gerne eine Bewertung da, das hilft uns enorm und. Schau auch gerne bei unseren anderen Plattformen vorbei oder auf unserem Discord Server.
Die Links findest du wie immer in den Shownotes und ansonsten würde ich sagen, hören wir uns alle beim nächsten Mal wieder. Ich wünsche euch eine gute Zeit bis dahin ciao ciao deine Corning. Bodys gemeinsam am besten.