Sicherheitslücken beim Datei-Upload
Von Idego Group

Das Hochladen von Dateien ist eine häufige Funktion von Webanwendungen. Viele Entwickler glauben jedoch fälschlicherweise, dass die Aufgabe abgeschlossen ist, sobald eine Datei erfolgreich den Server erreicht. Dieses Versäumnis schafft Sicherheitslücken, die Bedrohungsakteure ausnutzen. Echte Vollständigkeit erfordert zwei Bedingungen: Der Upload ist erfolgreich UND findet sicher statt.
Erweiterungsbasierte Umgehungen
Entwickler validieren Dateitypen häufig durch Erweiterungsprüfung mittels Whitelists oder Blacklists. Diese Ansätze haben jedoch Schwachstellen. Groß-/Kleinschreibungssensitive Regex-Muster ermöglichen Uploads wie shell.pHp, um Einschränkungen zu umgehen. Unzureichend verankerte Muster erlauben Dateien wie shell.php.jpg. Die Kürzung von Dateinamen kann dazu führen, dass eine Datei auf .php statt .jpg endet.
Null-Byte-Injektion
Das Umbenennen von Dateien als shell.php%00.jpg nutzt aus, wie bestimmte Sprachen Null-Bytes als Terminatoren behandeln, und ermöglicht die PHP-Ausführung trotz scheinbarer Endung auf .jpg.
SVG- und XML-Bedrohungen
SVG-Dateien sind XML-Daten, die für gespeicherte Cross-Site-Scripting-Angriffe anfällig sind. In SVG-Dateien eingebettetes bösartiges JavaScript wird ausgeführt, wenn Benutzer sie herunterladen.
Verzeichnisdurchquerung
Dateinamen wie ../../../etc/passwd können kritische Serverdateien überschreiben. Die Abhilfe erfordert die Verwendung zufällig generierter Dateinamen, wobei die Originalnamen separat als Metadaten gespeichert werden.
Denial of Service
Gleichzeitige Uploads großer Dateien erschöpfen Serverressourcen oder Festplattenspeicher. Die Dateigrößenvalidierung bietet wesentlichen Schutz.
Content-Type-Spoofing
Der Content-Type-Header lässt sich durch Abfangtools leicht manipulieren. Die Serverinterpretation stützt sich auf den tatsächlichen Dateiinhalt, nicht auf Header.
Magic-Number-Umgehung
Angreifer stellen gültigen Dateisignaturen wie GIF89a bösartigen Dateien voran, um Magic-Number-Validierungssysteme zu täuschen.
Befehlsinjektion
Wenn Dateinamen an Systembinärdateien übergeben werden, ermöglichen Namen wie file;whoami;pwd.jpg die Befehlsausführung. Zufällige Dateinamen eliminieren dieses Risiko.
Sicherheitsempfehlungen
Entwickler sollten Benutzereingaben grundsätzlich nicht vertrauen. Die Implementierung spezialisierter Validierungssoftware, die Pflege aktualisierter Abhängigkeiten und die Bewertung mehrerer Validierungsfaktoren stärken die Abwehrmaßnahmen.