Sichere Kodierungstechnik: Standardverhalten von Zip-Bibliotheken kann zu Remote Code Execution führen
Diese Woche werden wir über das Standardverhalten von Zip-Bibliotheken sprechen. Wenn Sie ein Anwendungsentwickler sind, ist es sehr wahrscheinlich, dass Sie dies schon einmal verwendet haben. Die meisten Ressourcen, die über das Internet heruntergeladen werden, liegen im Zip-Format vor. Das ist sinnvoll, denn komprimierte Daten sind kleiner, sodass sie schneller heruntergeladen werden und weniger Bandbreite verbrauchen.
Wenn Sie einige konkretere Beispiele wünschen: Texturen für Spiele, Sprachpakete für die Autovervollständigung in Tastaturen, ... Viele Ressourcen werden nicht automatisch mit der Anwendung gebündelt, sondern später heruntergeladen.
Seien Sie jedoch vorsichtig, wenn Sie diese Funktionalität verwenden, denn Dateinamen in Zip-Archiven können Pfadüberquerungsinformationen enthalten. Beim Extrahieren führt dies dazu, dass Dateien außerhalb des vorgesehenen Verzeichnisses erstellt werden. Dies geschieht oft in der Absicht, bestehende Dateien zu überschreiben.
Angenommen, wir haben ein Zip-Archiv, das die folgenden zwei Dateien enthält:
Datei1
../Datei2
Wenn dieses Archiv extrahiert wird, wird Datei1 dort extrahiert, wo wir sie erwarten, nämlich im Unzip-Verzeichnis. Datei2 wurde jedoch ein Verzeichnis höher geschrieben als der Ort, an dem wir die Zip-Bibliothek gebeten haben, das Archiv zu entpacken.
Seien Sie also vorsichtig, wenn Ihre Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, ermöglicht sie einem Angreifer, eine beliebige Datei in das System zu schreiben. Prüfen Sie immer, ob Ihre Bibliothek sicher ist. Diese Faustregel gilt für jede Bibliothek, aber insbesondere wissen Sie, dass Sie das Standardverhalten Ihrer Zip-Bibliothek für diese Dateitypen prüfen sollten.
Lassen Sie uns die Folgen demonstrieren, wenn dieser Fall in Android nicht richtig behandelt wird. In Android wird die Java-Zip-Bibliothek (java.util.zip) verwendet, die standardmäßig Pfad-Traversal wie oben erklärt erlaubt.
Androids Dalvik Executable-Format (.dex) hat Einschränkungen bei der Anzahl der Klassen, die eine einzelne Datei haben kann. Apps, die mehr Klassen benötigen, können die MultiDex-Support-Bibliothek nutzen, die seit API-Level 21 (Android 5.0 Lollipop) hinzugefügt wurde. Diese Bibliothek speichert sekundäre .dex-Dateien im Datenverzeichnis der Anwendung, dieses Verzeichnis ist für den App-Benutzer beschreibbar und dieser Code wird geladen und ausgeführt, wenn die .dex-Datei benötigt wird.
Das bedeutet, dass ein Angreifer die .dex-Datei ändern kann, indem er sie mit einem bösartigen Zip-Archiv überschreibt. Im schlimmsten Fall wird diese Datei geladen und ausgeführt, was zu einer Schwachstelle für Remotecodeausführung führt. Dies ist nicht nur ein theoretisches Beispiel, sondern wurde an der App My Talking Tom demonstriert, die über 100 Millionen Downloads im App Store hat. Hier ist ein Video des Exploits, das auf der Black Hat präsentiert wurde.
Überprüfen Sie immer das Verhalten Ihrer Zip-Bibliothek, damit Sie sich über deren Unsicherheiten im Klaren sind. Wenn Sie die Pfadüberquerung in Ihrer Zip-Bibliothek nicht deaktivieren können, stellen Sie sicher, dass Sie den Namen jedes Eintrags überprüfen, bevor Sie ihn extrahieren. Der Name sollte kanonisiert sein und der resultierende Pfad sollte sich in dem Verzeichnis befinden, in das Sie das Archiv extrahieren möchten. Wenn wir schon dabei sind, sollten Sie auch die Gesamtgröße des extrahierten Archivs überprüfen, um Zip-Bomben zu vermeiden, aber das wird ein Beitrag für eine andere Woche.
Wenn Sie ein paar Herausforderungen zum Thema Pfad-Traversal spielen oder Ihre Fähigkeiten im sicheren Kodieren testen möchten, schauen Sie sich unsere Plattform an.
Bis zum nächsten Mal, und denken Sie daran, sicherer Code oder kein Code!
- Wir können eine Datei in eine Zip-Datei injizieren, deren Name eine beliebige Anzahl von " ../ " vorangestellt ist
- Wenn die Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, würde sie uns erlauben, außerhalb des vorgesehenen Extraktionsverzeichnisses zu schreiben
- Wenn die Zip-Datei nicht vertrauenswürdig ist, gibt dies dem Angreifer eine beliebige Schreibschwachstelle
Wir können eine Datei in ein Zip einfügen, deren Name mit einem vorangestellten
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Diese Woche werden wir über das Standardverhalten von Zip-Bibliotheken sprechen. Wenn Sie ein Anwendungsentwickler sind, ist es sehr wahrscheinlich, dass Sie dies schon einmal verwendet haben. Die meisten Ressourcen, die über das Internet heruntergeladen werden, liegen im Zip-Format vor. Das ist sinnvoll, denn komprimierte Daten sind kleiner, sodass sie schneller heruntergeladen werden und weniger Bandbreite verbrauchen.
Wenn Sie einige konkretere Beispiele wünschen: Texturen für Spiele, Sprachpakete für die Autovervollständigung in Tastaturen, ... Viele Ressourcen werden nicht automatisch mit der Anwendung gebündelt, sondern später heruntergeladen.
Seien Sie jedoch vorsichtig, wenn Sie diese Funktionalität verwenden, denn Dateinamen in Zip-Archiven können Pfadüberquerungsinformationen enthalten. Beim Extrahieren führt dies dazu, dass Dateien außerhalb des vorgesehenen Verzeichnisses erstellt werden. Dies geschieht oft in der Absicht, bestehende Dateien zu überschreiben.
Angenommen, wir haben ein Zip-Archiv, das die folgenden zwei Dateien enthält:
Datei1
../Datei2
Wenn dieses Archiv extrahiert wird, wird Datei1 dort extrahiert, wo wir sie erwarten, nämlich im Unzip-Verzeichnis. Datei2 wurde jedoch ein Verzeichnis höher geschrieben als der Ort, an dem wir die Zip-Bibliothek gebeten haben, das Archiv zu entpacken.
Seien Sie also vorsichtig, wenn Ihre Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, ermöglicht sie einem Angreifer, eine beliebige Datei in das System zu schreiben. Prüfen Sie immer, ob Ihre Bibliothek sicher ist. Diese Faustregel gilt für jede Bibliothek, aber insbesondere wissen Sie, dass Sie das Standardverhalten Ihrer Zip-Bibliothek für diese Dateitypen prüfen sollten.
Lassen Sie uns die Folgen demonstrieren, wenn dieser Fall in Android nicht richtig behandelt wird. In Android wird die Java-Zip-Bibliothek (java.util.zip) verwendet, die standardmäßig Pfad-Traversal wie oben erklärt erlaubt.
Androids Dalvik Executable-Format (.dex) hat Einschränkungen bei der Anzahl der Klassen, die eine einzelne Datei haben kann. Apps, die mehr Klassen benötigen, können die MultiDex-Support-Bibliothek nutzen, die seit API-Level 21 (Android 5.0 Lollipop) hinzugefügt wurde. Diese Bibliothek speichert sekundäre .dex-Dateien im Datenverzeichnis der Anwendung, dieses Verzeichnis ist für den App-Benutzer beschreibbar und dieser Code wird geladen und ausgeführt, wenn die .dex-Datei benötigt wird.
Das bedeutet, dass ein Angreifer die .dex-Datei ändern kann, indem er sie mit einem bösartigen Zip-Archiv überschreibt. Im schlimmsten Fall wird diese Datei geladen und ausgeführt, was zu einer Schwachstelle für Remotecodeausführung führt. Dies ist nicht nur ein theoretisches Beispiel, sondern wurde an der App My Talking Tom demonstriert, die über 100 Millionen Downloads im App Store hat. Hier ist ein Video des Exploits, das auf der Black Hat präsentiert wurde.
Überprüfen Sie immer das Verhalten Ihrer Zip-Bibliothek, damit Sie sich über deren Unsicherheiten im Klaren sind. Wenn Sie die Pfadüberquerung in Ihrer Zip-Bibliothek nicht deaktivieren können, stellen Sie sicher, dass Sie den Namen jedes Eintrags überprüfen, bevor Sie ihn extrahieren. Der Name sollte kanonisiert sein und der resultierende Pfad sollte sich in dem Verzeichnis befinden, in das Sie das Archiv extrahieren möchten. Wenn wir schon dabei sind, sollten Sie auch die Gesamtgröße des extrahierten Archivs überprüfen, um Zip-Bomben zu vermeiden, aber das wird ein Beitrag für eine andere Woche.
Wenn Sie ein paar Herausforderungen zum Thema Pfad-Traversal spielen oder Ihre Fähigkeiten im sicheren Kodieren testen möchten, schauen Sie sich unsere Plattform an.
Bis zum nächsten Mal, und denken Sie daran, sicherer Code oder kein Code!
- Wir können eine Datei in eine Zip-Datei injizieren, deren Name eine beliebige Anzahl von " ../ " vorangestellt ist
- Wenn die Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, würde sie uns erlauben, außerhalb des vorgesehenen Extraktionsverzeichnisses zu schreiben
- Wenn die Zip-Datei nicht vertrauenswürdig ist, gibt dies dem Angreifer eine beliebige Schreibschwachstelle
Diese Woche werden wir über das Standardverhalten von Zip-Bibliotheken sprechen. Wenn Sie ein Anwendungsentwickler sind, ist es sehr wahrscheinlich, dass Sie dies schon einmal verwendet haben. Die meisten Ressourcen, die über das Internet heruntergeladen werden, liegen im Zip-Format vor. Das ist sinnvoll, denn komprimierte Daten sind kleiner, sodass sie schneller heruntergeladen werden und weniger Bandbreite verbrauchen.
Wenn Sie einige konkretere Beispiele wünschen: Texturen für Spiele, Sprachpakete für die Autovervollständigung in Tastaturen, ... Viele Ressourcen werden nicht automatisch mit der Anwendung gebündelt, sondern später heruntergeladen.
Seien Sie jedoch vorsichtig, wenn Sie diese Funktionalität verwenden, denn Dateinamen in Zip-Archiven können Pfadüberquerungsinformationen enthalten. Beim Extrahieren führt dies dazu, dass Dateien außerhalb des vorgesehenen Verzeichnisses erstellt werden. Dies geschieht oft in der Absicht, bestehende Dateien zu überschreiben.
Angenommen, wir haben ein Zip-Archiv, das die folgenden zwei Dateien enthält:
Datei1
../Datei2
Wenn dieses Archiv extrahiert wird, wird Datei1 dort extrahiert, wo wir sie erwarten, nämlich im Unzip-Verzeichnis. Datei2 wurde jedoch ein Verzeichnis höher geschrieben als der Ort, an dem wir die Zip-Bibliothek gebeten haben, das Archiv zu entpacken.
Seien Sie also vorsichtig, wenn Ihre Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, ermöglicht sie einem Angreifer, eine beliebige Datei in das System zu schreiben. Prüfen Sie immer, ob Ihre Bibliothek sicher ist. Diese Faustregel gilt für jede Bibliothek, aber insbesondere wissen Sie, dass Sie das Standardverhalten Ihrer Zip-Bibliothek für diese Dateitypen prüfen sollten.
Lassen Sie uns die Folgen demonstrieren, wenn dieser Fall in Android nicht richtig behandelt wird. In Android wird die Java-Zip-Bibliothek (java.util.zip) verwendet, die standardmäßig Pfad-Traversal wie oben erklärt erlaubt.
Androids Dalvik Executable-Format (.dex) hat Einschränkungen bei der Anzahl der Klassen, die eine einzelne Datei haben kann. Apps, die mehr Klassen benötigen, können die MultiDex-Support-Bibliothek nutzen, die seit API-Level 21 (Android 5.0 Lollipop) hinzugefügt wurde. Diese Bibliothek speichert sekundäre .dex-Dateien im Datenverzeichnis der Anwendung, dieses Verzeichnis ist für den App-Benutzer beschreibbar und dieser Code wird geladen und ausgeführt, wenn die .dex-Datei benötigt wird.
Das bedeutet, dass ein Angreifer die .dex-Datei ändern kann, indem er sie mit einem bösartigen Zip-Archiv überschreibt. Im schlimmsten Fall wird diese Datei geladen und ausgeführt, was zu einer Schwachstelle für Remotecodeausführung führt. Dies ist nicht nur ein theoretisches Beispiel, sondern wurde an der App My Talking Tom demonstriert, die über 100 Millionen Downloads im App Store hat. Hier ist ein Video des Exploits, das auf der Black Hat präsentiert wurde.
Überprüfen Sie immer das Verhalten Ihrer Zip-Bibliothek, damit Sie sich über deren Unsicherheiten im Klaren sind. Wenn Sie die Pfadüberquerung in Ihrer Zip-Bibliothek nicht deaktivieren können, stellen Sie sicher, dass Sie den Namen jedes Eintrags überprüfen, bevor Sie ihn extrahieren. Der Name sollte kanonisiert sein und der resultierende Pfad sollte sich in dem Verzeichnis befinden, in das Sie das Archiv extrahieren möchten. Wenn wir schon dabei sind, sollten Sie auch die Gesamtgröße des extrahierten Archivs überprüfen, um Zip-Bomben zu vermeiden, aber das wird ein Beitrag für eine andere Woche.
Wenn Sie ein paar Herausforderungen zum Thema Pfad-Traversal spielen oder Ihre Fähigkeiten im sicheren Kodieren testen möchten, schauen Sie sich unsere Plattform an.
Bis zum nächsten Mal, und denken Sie daran, sicherer Code oder kein Code!
- Wir können eine Datei in eine Zip-Datei injizieren, deren Name eine beliebige Anzahl von " ../ " vorangestellt ist
- Wenn die Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, würde sie uns erlauben, außerhalb des vorgesehenen Extraktionsverzeichnisses zu schreiben
- Wenn die Zip-Datei nicht vertrauenswürdig ist, gibt dies dem Angreifer eine beliebige Schreibschwachstelle
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Diese Woche werden wir über das Standardverhalten von Zip-Bibliotheken sprechen. Wenn Sie ein Anwendungsentwickler sind, ist es sehr wahrscheinlich, dass Sie dies schon einmal verwendet haben. Die meisten Ressourcen, die über das Internet heruntergeladen werden, liegen im Zip-Format vor. Das ist sinnvoll, denn komprimierte Daten sind kleiner, sodass sie schneller heruntergeladen werden und weniger Bandbreite verbrauchen.
Wenn Sie einige konkretere Beispiele wünschen: Texturen für Spiele, Sprachpakete für die Autovervollständigung in Tastaturen, ... Viele Ressourcen werden nicht automatisch mit der Anwendung gebündelt, sondern später heruntergeladen.
Seien Sie jedoch vorsichtig, wenn Sie diese Funktionalität verwenden, denn Dateinamen in Zip-Archiven können Pfadüberquerungsinformationen enthalten. Beim Extrahieren führt dies dazu, dass Dateien außerhalb des vorgesehenen Verzeichnisses erstellt werden. Dies geschieht oft in der Absicht, bestehende Dateien zu überschreiben.
Angenommen, wir haben ein Zip-Archiv, das die folgenden zwei Dateien enthält:
Datei1
../Datei2
Wenn dieses Archiv extrahiert wird, wird Datei1 dort extrahiert, wo wir sie erwarten, nämlich im Unzip-Verzeichnis. Datei2 wurde jedoch ein Verzeichnis höher geschrieben als der Ort, an dem wir die Zip-Bibliothek gebeten haben, das Archiv zu entpacken.
Seien Sie also vorsichtig, wenn Ihre Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, ermöglicht sie einem Angreifer, eine beliebige Datei in das System zu schreiben. Prüfen Sie immer, ob Ihre Bibliothek sicher ist. Diese Faustregel gilt für jede Bibliothek, aber insbesondere wissen Sie, dass Sie das Standardverhalten Ihrer Zip-Bibliothek für diese Dateitypen prüfen sollten.
Lassen Sie uns die Folgen demonstrieren, wenn dieser Fall in Android nicht richtig behandelt wird. In Android wird die Java-Zip-Bibliothek (java.util.zip) verwendet, die standardmäßig Pfad-Traversal wie oben erklärt erlaubt.
Androids Dalvik Executable-Format (.dex) hat Einschränkungen bei der Anzahl der Klassen, die eine einzelne Datei haben kann. Apps, die mehr Klassen benötigen, können die MultiDex-Support-Bibliothek nutzen, die seit API-Level 21 (Android 5.0 Lollipop) hinzugefügt wurde. Diese Bibliothek speichert sekundäre .dex-Dateien im Datenverzeichnis der Anwendung, dieses Verzeichnis ist für den App-Benutzer beschreibbar und dieser Code wird geladen und ausgeführt, wenn die .dex-Datei benötigt wird.
Das bedeutet, dass ein Angreifer die .dex-Datei ändern kann, indem er sie mit einem bösartigen Zip-Archiv überschreibt. Im schlimmsten Fall wird diese Datei geladen und ausgeführt, was zu einer Schwachstelle für Remotecodeausführung führt. Dies ist nicht nur ein theoretisches Beispiel, sondern wurde an der App My Talking Tom demonstriert, die über 100 Millionen Downloads im App Store hat. Hier ist ein Video des Exploits, das auf der Black Hat präsentiert wurde.
Überprüfen Sie immer das Verhalten Ihrer Zip-Bibliothek, damit Sie sich über deren Unsicherheiten im Klaren sind. Wenn Sie die Pfadüberquerung in Ihrer Zip-Bibliothek nicht deaktivieren können, stellen Sie sicher, dass Sie den Namen jedes Eintrags überprüfen, bevor Sie ihn extrahieren. Der Name sollte kanonisiert sein und der resultierende Pfad sollte sich in dem Verzeichnis befinden, in das Sie das Archiv extrahieren möchten. Wenn wir schon dabei sind, sollten Sie auch die Gesamtgröße des extrahierten Archivs überprüfen, um Zip-Bomben zu vermeiden, aber das wird ein Beitrag für eine andere Woche.
Wenn Sie ein paar Herausforderungen zum Thema Pfad-Traversal spielen oder Ihre Fähigkeiten im sicheren Kodieren testen möchten, schauen Sie sich unsere Plattform an.
Bis zum nächsten Mal, und denken Sie daran, sicherer Code oder kein Code!
- Wir können eine Datei in eine Zip-Datei injizieren, deren Name eine beliebige Anzahl von " ../ " vorangestellt ist
- Wenn die Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, würde sie uns erlauben, außerhalb des vorgesehenen Extraktionsverzeichnisses zu schreiben
- Wenn die Zip-Datei nicht vertrauenswürdig ist, gibt dies dem Angreifer eine beliebige Schreibschwachstelle
Inhaltsübersicht
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
DigitalOcean verringert Sicherheitsverschuldung mit Secure Code Warrior
DigitalOceans Einsatz von Secure Code Warrior hat die Sicherheitsverschuldung deutlich reduziert, so dass sich die Teams stärker auf Innovation und Produktivität konzentrieren können. Die verbesserte Sicherheit hat die Produktqualität und den Wettbewerbsvorteil des Unternehmens gestärkt. Mit Blick auf die Zukunft wird der SCW Trust Score dem Unternehmen helfen, seine Sicherheitspraktiken weiter zu verbessern und Innovationen voranzutreiben.
Ressourcen für den Einstieg
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.
Die Vorteile eines Benchmarking der Sicherheitskompetenzen von Entwicklern
Der zunehmende Fokus auf sicheren Code und Secure-by-Design-Prinzipien erfordert, dass Entwickler von Beginn des SDLC an in Cybersicherheit geschult werden, wobei Tools wie Secure Code Warrior's Trust Score dabei helfen, ihre Fortschritte zu messen und zu verbessern.
Wesentlicher Erfolg für Enterprise Secure-by-Design-Initiativen
Unser jüngstes Forschungspapier „Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise“ ist das Ergebnis einer umfassenden Analyse echter Secure-by-Design-Initiativen auf Unternehmensebene und der Ableitung von Best-Practice-Ansätzen auf Grundlage datengesteuerter Erkenntnisse.