Blog

Sichere Codierungstechnik: Das Standardverhalten von Zip-Bibliotheken kann zur Remotecodeausführung führen

November 13, 2017
Pieter De Cremer

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, sind im ZIP-Format, das ist sinnvoll. Komprimierte Daten sind kleiner, sodass sie schneller heruntergeladen werden und weniger Bandbreite verbrauchen.

Wenn Sie konkretere Beispiele wünschen: Texturen für Spiele, Sprachpakete für die automatische Vervollständigung in Tastaturen,... Viele Ressourcen werden nicht automatisch mit der Anwendung gebündelt, sondern erst später heruntergeladen.

Seien Sie jedoch vorsichtig, wenn Sie diese Funktion verwenden, da Dateinamen in ZIP-Archiven Pfadinformationen enthalten können. Beim Extrahieren führt dies dazu, dass Dateien außerhalb des vorgesehenen Verzeichnisses erstellt werden. Dies geschieht oft mit der Absicht, vorhandene Dateien zu überschreiben.

Zip Archives

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 es erwarten, im Unzip-Verzeichnis. Datei2 wurde jedoch ein Verzeichnis höher geschrieben als dort, wo 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, kann ein Angreifer eine beliebige Datei in das System 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 überprüfen müssen.

Lassen Sie uns die Konsequenzen demonstrieren, wenn dieser Fall in Android nicht richtig behandelt wird. In Android wird die Java-Zip-Bibliothek (java.util.zip) verwendet. Die Bibliothek ermöglicht standardmäßig das Durchlaufen von Pfaden, wie oben erläutert.

Das Dalvik Executable Format (.dex) von Android hat Einschränkungen hinsichtlich 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 mithilfe eines schädlichen ZIP-Archivs überschreibt. Schlimmer noch, diese Datei wird geladen und ausgeführt, was zu einer Sicherheitsanfälligkeit bei der Remotecodeausführung führt. Dies ist nicht nur ein theoretisches Beispiel, sondern wurde in der App My Talking Tom demonstriert, die im App Store über 100 Millionen Mal heruntergeladen wurde. Hier ist ein Video des Exploits, der auf Black Hat vorgestellt wurde.

Talking Tom

Überprüfen Sie immer das Verhalten Ihrer Zip-Bibliothek, damit Sie sich ihrer Unsicherheiten bewusst sind. Wenn Sie die Pfaddurchquerung 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 werden und der resultierende Pfad sollte sich in dem Verzeichnis befinden, in dem Sie das Archiv extrahieren möchten. Wenn wir schon dabei sind, solltest du auch die Gesamtgröße des entpackten Archivs überprüfen, um Zip-Bomben zu verhindern, aber das ist ein Beitrag für eine weitere Woche.

Wenn du willst spiele einige Herausforderungen bei der Pfadüberquerung oder wenn Sie Ihre Fähigkeiten zum sicheren Programmieren testen möchten, schauen Sie sich unsere Plattform an.

Bis zum nächsten Mal und denk dran, Sicherheitscode oder kein Code!

- Wir können eine Datei in eine Zip-Datei einfügen, deren Namen eine beliebige Zahl von "../“ vorangestellt ist
- Wenn die Zip-Bibliothek nicht darauf achtet, diesen Fall richtig zu behandeln, können wir außerhalb des vorgesehenen Extraktionsverzeichnisses schreiben
- Wenn die Zip-Datei nicht vertrauenswürdig ist, besteht für den Angreifer eine Schwachstelle beim willkürlichen Schreiben

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

Slogan

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
Slogan

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Enabler 7: Developer Recognition

Recognition fuels participation. Enabler 7 celebrates developer achievement loudly, with rewards and exclusive swag that mark real, earned secure coding wins.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Named in the Gartner® Hype Cycle™ for Application Security 2026

Secure Code Warrior is named in the Gartner® Hype Cycle™ for Application Security, 2026 for Agentic Coding Security and Secure Coding Training. Here's why.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Are you a CISO or Engineering Leader worried about the Security and Cost of LLM code generation?

Review the SCW AI Trust Index, our proprietary LLM benchmarking data, before going all-in on an AI model.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Demo buchen
No items found.