IT-Sicherheit Glossar

Was ist ein unsicherer Datei-Upload?

Ein unsicherer Datei-Upload erlaubt es, Dateien hochzuladen oder weiterzuverarbeiten, deren Typ, Inhalt, Name, Größe oder spätere Verwendung nicht ausreichend kontrolliert wird. Die Folgen reichen von gespeicherten XSS-Angriffen bis zur vollständigen Ausführung von Code auf dem Server.

Warum sind Datei-Uploads gefährlich?

Eine hochgeladene Datei durchläuft mehrere Systeme: Webserver, Anwendung, Virenscanner, Bild- oder Dokumentbibliothek, Objektspeicher, CDN und schließlich den Browser anderer Nutzer. Jede Komponente interpretiert Dateiname, Metadaten und Inhalt anders. Was beim Upload wie ein Bild aussieht, kann beim Abruf als HTML oder auf dem Server als ausführbares Skript behandelt werden.

Welche Angriffe sind möglich?

AngriffMögliche Folge
Webshell/Code-UploadDer Webserver führt PHP, JSP, ASPX oder andere aktive Inhalte aus.
Stored XSSHTML, SVG oder falsch ausgelieferte Dateien führen Skript im Browser aus.
Parser-AngriffManipulierte Bilder, Archive, PDFs oder Office-Dateien nutzen Fehler in Bibliotheken.
PfadmanipulationDateinamen überschreiben Dateien oder verlassen das vorgesehene Verzeichnis.
RessourcenverbrauchGroße Dateien, Zip Bombs oder Bilddimensionen erschöpfen Speicher und Rechenzeit.
Malware-VerteilungDie Anwendung wird zum vertrauenswürdig wirkenden Download-Kanal.
Unbefugter ZugriffVorhersagbare URLs oder fehlende Berechtigungen legen private Uploads offen.

Warum reichen Dateiendung und MIME-Type nicht?

Beides wird vom Client geliefert oder lässt sich leicht manipulieren. Doppelte Endungen, Groß-/Kleinschreibung, alternative Erweiterungen und unterschiedliche Serverkonfigurationen umgehen einfache Sperrlisten. Magic Bytes helfen bei der Erkennung, beweisen aber nicht, dass der gesamte Inhalt harmlos ist; polyglotte Dateien können mehrere gültige Formate gleichzeitig darstellen. Eine Allowlist und sichere Weiterverarbeitung müssen zusammenspielen.

Wie werden Uploads sicher verarbeitet?

  • Nur fachlich benötigte Dateitypen, Größen und Mengen erlauben.
  • Typ aus Inhalt und Parserergebnis bestimmen und nicht dem Client-Header vertrauen.
  • Zufällige serverseitige Namen verwenden; Pfade und Originalnamen niemals direkt übernehmen.
  • Dateien außerhalb des Webroots oder in isoliertem Objektspeicher ohne Ausführungsrechte ablegen.
  • Downloads mit festem Content-Type, Content-Disposition und X-Content-Type-Options: nosniff ausliefern.
  • Zugriff bei jedem Download autorisieren und temporäre URLs kurzlebig halten.
  • Malware-Prüfung, Quarantäne, Limits und Monitoring als zusätzliche Schichten einsetzen.

Codebeispiel: Upload in Laravel

Verwundbar: Originalname und öffentliche Ablage werden übernommen.

$file = $request->file('document');
$file->move(public_path('uploads'), $file->getClientOriginalName());

Sicherer Grundaufbau:

$validated = $request->validate([
    'document' => [
        'required',
        'file',
        'mimes:pdf',
        'max:5120',
    ],
]);

$path = $validated['document']->store('documents', 'private');

$document = $request->user()->documents()->create([
    'storage_key' => $path,
    'original_name' => $validated['document']->getClientOriginalName(),
]);

Der private Disk darf nicht ausführbar oder direkt öffentlich erreichbar sein. Autorisierte Downloads, Malware-Prüfung und sichere PDF-Verarbeitung bleiben eigene Schichten.

Was gilt für Bilder und Dokumente?

Bilder sollten mit einer gepflegten Bibliothek vollständig dekodiert und neu kodiert werden; dadurch verschwinden viele fremde Zusatzdaten, nicht aber jede Parser-Schwachstelle. SVG ist aktiver XML-Inhalt und benötigt besondere Behandlung. Office- und PDF-Dateien können Makros, Links, eingebettete Objekte und personenbezogene Metadaten enthalten. Archive werden nur mit Grenzen für Anzahl, Pfade, Verschachtelung und entpackte Gesamtgröße verarbeitet.

Wie werden Upload-Funktionen getestet?

Tester verändern Endung, MIME-Type, Signatur, Dateiname und Größe unabhängig voneinander. Sie prüfen alternative Upload-Endpunkte, Chunking, Importfunktionen, Archive und die spätere Auslieferung. Entscheidend ist, ob Inhalt ausgeführt, von anderen Nutzern gelesen, ohne Berechtigung ersetzt oder zur Belastung von Parsern genutzt werden kann. Nachweise verwenden ungefährliche Marker statt funktionsfähiger Malware.

Penetrationstests

Sicherheitslücken aufdecken

Professionelle Penetrationstests für Ihr Unternehmen

Web Apps
Netzwerke
Mobile Apps
10% Neukunden-Rabatt
Jetzt planen

Mehr Informationsmaterial

Prüfung und Schutz

Malware-Scanning ist eine zusätzliche Schicht; es ersetzt weder Typprüfung noch private, nicht ausführbare Speicherung.

Vielen Dank für dein Feedback! Wir werden es prüfen und unseren Artikel anpassen.

Hast du Feedback zum Thema Unsicherer Datei-Upload? Schreib uns!