{"id":29350,"date":"2022-10-11T14:35:13","date_gmt":"2022-10-11T12:35:13","guid":{"rendered":"https:\/\/www.kaspersky.de\/blog\/?p=29350"},"modified":"2022-10-11T14:35:13","modified_gmt":"2022-10-11T12:35:13","slug":"tarfile-15-year-old-vulnerability","status":"publish","type":"post","link":"https:\/\/www.kaspersky.de\/blog\/tarfile-15-year-old-vulnerability\/29350\/","title":{"rendered":"Die Gefahren 15 Jahre alter Schwachstellen"},"content":{"rendered":"<p>Im September 2022 ver\u00f6ffentlichte Trellix einen <a href=\"https:\/\/www.trellix.com\/en-us\/about\/newsroom\/stories\/research\/tarfile-exploiting-the-world.html\" target=\"_blank\" rel=\"noopener nofollow\">Bericht<\/a> \u00fcber eine Sicherheitsl\u00fccke im <a href=\"https:\/\/docs.python.org\/3\/library\/tarfile.html#module-tarfile\" target=\"_blank\" rel=\"noopener nofollow\">tarfile<\/a>-Modul, das Teil einer Standardbibliothek f\u00fcr die Programmiersprache Python ist und von jedermann verwendet werden kann. Die Schwachstelle erlaubt es, eine beliebige Datei in einen beliebigen Ordner auf der Festplatte zu schreiben und in einigen F\u00e4llen auch Schadcode auszuf\u00fchren. Was diese Studie so interessant macht, ist die Tatsache, dass das Problem in tarfile bereits im August 2007 <a href=\"https:\/\/mail.python.org\/pipermail\/python-dev\/2007-August\/074290.html\" target=\"_blank\" rel=\"noopener nofollow\">entdeckt<\/a> wurde \u2013 also vor etwas mehr als 15 Jahren! Damals wurde ihm jedoch keine Aufmerksamkeit geschenkt. Wir wollen herausfinden, warum das so war und welche Probleme sich f\u00fcr Python-Entwickler und ihre Benutzer daraus ergeben k\u00f6nnten.<\/p>\n<h2>Mehr \u00fcber tarfile<\/h2>\n<p>Tarfile enth\u00e4lt Code zum Umgang mit <a href=\"https:\/\/de.wikipedia.org\/wiki\/Tar_(Packprogramm)\" target=\"_blank\" rel=\"noopener nofollow\">tar<\/a>-Archiven. Dieses Format ist in Unix-\u00e4hnlichen Betriebssystemen weit verbreitet und stammt aus dem Jahr 1979. Mit tar lassen sich gro\u00dfe Mengen von Dateien und Ordnern leicht packen. Urspr\u00fcnglich wurde es zum Schreiben von Backups auf Magnetband verwendet. Heutzutage k\u00f6nnen tar-Archive eine Dateikomprimierung verwenden, die jedoch optional ist. Tarfile ist f\u00fcr die Erstellung und Dekomprimierung solcher Archive zust\u00e4ndig und wird von Python-Entwicklern als Standardwerkzeug f\u00fcr solche Aufgaben verwendet.<\/p>\n<p>Die Sicherheitsl\u00fccke in tarfile ist recht simpel und wurde im urspr\u00fcnglichen <a href=\"https:\/\/mail.python.org\/pipermail\/python-dev\/2007-August\/074290.html\" target=\"_blank\" rel=\"noopener nofollow\">Fehlerbericht<\/a> vom August 2007 ausf\u00fchrlich beschrieben. Dabei handelt es sich nicht einmal um eine Schwachstelle im eigentlichen Sinne, sondern nur darum, dass tarfile beim Entpacken die exakte Ordnerstruktur wiederherstellt, die beim Entpacken im Archiv enthalten ist. Dies gilt auch f\u00fcr F\u00e4lle, in denen der Dateiname im Archiv folgende Struktur hat: \u201e..\/..\/..\/..\/etc\/passwd\u201c. Wenn ein solches Archiv als Systemadministrator entpackt wird, wird die Datei <em>passwd<\/em> nicht in das Verzeichnis geschrieben, in dem sich das Archiv selbst befindet. Beim Durchlaufen der \/..\/-Elemente im Pfad erreicht der Entpacker zun\u00e4chst das Stammverzeichnis und \u00fcberschreibt dann die passwd-Datei im \/etc-Verzeichnis. Unter Linux bedeutet dies, dass die regul\u00e4re Datei mit den Daten aller Systembenutzer gel\u00f6scht wird.<\/p>\n<p>Die Gefahr dabei ist, dass Benutzer von Programmen, die das tarfile-Modul verwenden, nicht wissen, wie das normale Entpacken eines Archivs endet. Entweder es passiert nichts oder Dateien erscheinen pl\u00f6tzlich an unerwarteten Stellen. Au\u00dferdem k\u00f6nnen einige benutzerdefinierte Dateien \u00fcberschrieben werden. Die Autoren des Fehlerberichts verweisen auf genau dieses Problem in der tar-Archivierungssoftware selbst, das bereits 2001, also vor mehr als 20 Jahren, behoben wurde. Allerdings wurde die Sicherheitsl\u00fccke in tarfile nie geschlossen.<\/p>\n<h2>Jahrelanges Warten<\/h2>\n<p>Nach einer <a href=\"https:\/\/bugs.python.org\/issue1044#msg55464\" target=\"_blank\" rel=\"noopener nofollow\">Diskussion<\/a> \u00fcber den potenziellen Bug im Jahr 2007 wurde letztendlich beschlossen, nichts zu unternehmen, und zwar aus zwei Gr\u00fcnden. Erstens ist eine solche Dateiverarbeitung in voller \u00dcbereinstimmung mit dem Unix-POSIX-Standard (wir k\u00f6nnen das best\u00e4tigen). Zweitens \u201egibt es in der Praxis keine Exploit-M\u00f6glichkeit\u201c. Eine Warnung im Benutzerhandbuch, dass es nicht ratsam ist, Dateien aus nicht vertrauensw\u00fcrdigen Quellen mit tarfile zu entpacken, wurde als ausreichend angesehen.<\/p>\n<p>Diese Einsch\u00e4tzung wurde 2022 widerlegt, als Trellix zeigte, dass ein Exploit in der Praxis mehr als m\u00f6glich ist. Und zwar nicht nur, um Daten an beliebige Stellen zu schreiben, sondern auch, um beliebigen Code auszuf\u00fchren. Bedenken Sie erneut, dass es sich hierbei um eine Bibliothek f\u00fcr Programmierer handelt, d. h. die M\u00f6glichkeit eines Angriffs h\u00e4ngt von der spezifischen Software ab, in der das tarfile-Modul verwendet wird. Trellix nannte zwei Beispiele.<\/p>\n<div id=\"attachment_29351\" style=\"width: 1378px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-29351\" class=\"size-full wp-image-29351\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/96\/2022\/10\/11143009\/tarfile-15-year-old-vulnerability-code.jpg\" alt=\"\" width=\"1368\" height=\"444\"><p id=\"caption-attachment-29351\" class=\"wp-caption-text\">Teil des verwundbaren Codes in Universal Radio Hacker. <a href=\"https:\/\/www.trellix.com\/en-us\/about\/newsroom\/stories\/research\/tarfile-exploiting-the-world.html\" target=\"_blank\" rel=\"noopener nofollow\">Quelle<\/a>.<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Das erste ist <a href=\"https:\/\/github.com\/jopohl\/urh\" target=\"_blank\" rel=\"noopener nofollow\">Universal Radio Hacker<\/a>, ein Programm zur Analyse von unbekannten Funkprotokollen. Das Programm speichert Daten als ein Projekt, das aus mehreren tar-komprimierten Dateien besteht. Die Forscher haben nachgewiesen, dass eine ausf\u00fchrbare Datei in das Windows-Auto-Run-Verzeichnis geschrieben wird, wenn versucht wird, das vorgefertigte komprimierte Archiv zu \u00f6ffnen. Beim n\u00e4chsten Neustart des Systems wird dieser Code dann ausgef\u00fchrt. Diese Schwachstelle kann u.a. auf verschiedenen Plattformen ausgenutzt werden.<\/p>\n<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe class=\"youtube-player\" type=\"text\/html\" width=\"640\" height=\"390\" src=\"https:\/\/www.youtube.com\/embed\/jqs8S51_ENg?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent\" frameborder=\"0\" allowfullscreen=\"true\"><\/iframe><\/span><\/p>\n<p>Das zweite Beispiel, das im Video gezeigt wird, ist etwas komplexer: Die Entwicklungsumgebung Spyder IDE speichert Daten in einem tar-Archiv. Beim Importieren dieser Daten wiederholten die Forscher zun\u00e4chst das Experiment, die Datei in das System zu integrieren, taten dann aber etwas noch Cooleres: Sie programmierten beliebigen Code, der beim n\u00e4chsten Start von Spyder ausgef\u00fchrt werden sollte. Das Endergebnis dieses Experiments war eine Anfrage zur Ausf\u00fchrung von beliebigem Code, dieses Mal aber mit Systemadministrator-Rechten.<\/p>\n<h2>Unvorhersehbare Konsequenzen<\/h2>\n<p>Die Geschichte des 15 Jahre alten Bugs zeigt einmal mehr, dass man Schwachstellen, die das beliebige Schreiben von Daten erm\u00f6glichen, niemals untersch\u00e4tzen sollte \u2013 selbst wenn dies nach Vorschrift geschieht und die Exploit-M\u00f6glichkeiten nicht offensichtlich sind.<\/p>\n<p>Tarfile ist Teil der Standard-Python-Bibliothek und ist in fast allen Linux-basierten Systemen (neben anderen) enthalten. Die Gefahr liegt jedoch in der Verwendung einer bestimmten anf\u00e4lligen Funktion. Im Allgemeinen ist jedes in Python entwickelte Projekt, das ein tarfile-Modul verwendet, aus sicherheitstechnischer Sicht anf\u00e4llig. Aus der Sicht des Endnutzers ist dies eine heikle Situation, da er m\u00f6glicherweise ein potenziell gef\u00e4hrdetes Programm ausf\u00fchrt und nicht wei\u00df, dass es tar verwendet. Kaspersky-Experten empfehlen daher Folgendes:<\/p>\n<ul>\n<li>die Verarbeitung von Dateien aus nicht vertrauensw\u00fcrdigen Quellen einschr\u00e4nken;<\/li>\n<li>Programme von Drittanbietern mit minimalen Rechten auszuf\u00fchren, um die Angriffsm\u00f6glichkeiten zu reduzieren;<\/li>\n<li>Die auf wichtigen Systemen eingesetzte Software zu <a href=\"https:\/\/www.kaspersky.de\/enterprise-security\/application-security\" target=\"_blank\" rel=\"noopener\">\u00fcberpr\u00fcfen<\/a>, um m\u00f6glicherweise anf\u00e4llige Funktionen zu identifizieren.<\/li>\n<\/ul>\n<p>F\u00fcr Entwickler ist dieses Problem ein Grund, ihren eigenen Code zu \u00fcberpr\u00fcfen, um verwundbare Funktionen ausfindig zu machen und dementsprechend anzupassen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Entwickler eines handels\u00fcblichen Python-Moduls haben k\u00fcrzlich herausgefunden, warum alte, nicht gepatchte Sicherheitsl\u00fccken gef\u00e4hrlich sein k\u00f6nnen.<\/p>\n","protected":false},"author":665,"featured_media":29352,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1848,3107,3108],"tags":[938,4008,1498],"class_list":{"0":"post-29350","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-linux","11":"tag-python","12":"tag-schwachstellen"},"hreflang":[{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/tarfile-15-year-old-vulnerability\/29350\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/tarfile-15-year-old-vulnerability\/24733\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/20204\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/27190\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/tarfile-15-year-old-vulnerability\/25059\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/25362\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/tarfile-15-year-old-vulnerability\/27821\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/tarfile-15-year-old-vulnerability\/34044\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/tarfile-15-year-old-vulnerability\/11088\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/45703\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/tarfile-15-year-old-vulnerability\/19552\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/tarfile-15-year-old-vulnerability\/20133\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/tarfile-15-year-old-vulnerability\/25486\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/tarfile-15-year-old-vulnerability\/31108\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/tarfile-15-year-old-vulnerability\/30798\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.de\/blog\/tag\/schwachstellen\/","name":"Schwachstellen"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/comments?post=29350"}],"version-history":[{"count":3,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29350\/revisions"}],"predecessor-version":[{"id":29355,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29350\/revisions\/29355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media\/29352"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media?parent=29350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/categories?post=29350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/tags?post=29350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}