• CWE-434: Unrestricted Upload of File with Dangerous Type

Das Produkt ermöglicht das Hochladen oder Übertragen gefährlicher Dateitypen, die innerhalb seiner Umgebung automatisch verarbeitet werden. Dies birgt das Risiko von malware-Infektionen oder exploitation durch bösartige payloads. Eine strikte file type validation und sandboxing sind unerlässlich, um diese Risiken zu minimieren.

CWE-434: Unrestricted Upload of File with Dangerous Type

CWE ID: 434
Name: Unrestricted Upload of File with Dangerous Type

Beschreibung

Das Produkt ermöglicht das Hochladen oder Übertragen gefährlicher Dateitypen, die innerhalb seiner Umgebung automatisch verarbeitet werden. Dies birgt das Risiko von malware-Infektionen oder exploitation durch bösartige payloads. Eine strikte file type validation und sandboxing sind unerlässlich, um diese Risiken zu minimieren.

Risikominderungsmaßnahmen

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Generiere einen neuen, eindeutigen Dateinamen für die hochgeladene Datei anstelle des vom Benutzer angegebenen Namens, sodass überhaupt keine externe Eingabe verwendet wird. Dies reduziert das Risiko von file injection-Angriffen und verbessert die security posture. Die generierten Namen sollten idealerweise cryptographically secure und frei von Informationen sein, die für eine exploitation genutzt werden könnten.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Wenn der Satz akzeptabler Objekte, wie beispielsweise Dateinamen oder URLs, begrenzt oder bekannt ist, erstelle eine Zuordnung von einem Satz fester Eingabewerte (z. B. numerische IDs) zu den tatsächlichen Dateinamen oder URLs und lehne alle anderen Eingaben ab. Dieser Ansatz, oft als whitelisting bezeichnet, bietet eine robuste defense-in-depth-Strategie und minimiert das Risiko von injection vulnerabilities. Es ist eine effektive Methode, um die attack surface zu reduzieren und die data integrity zu gewährleisten.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Erwägen Sie, die hochgeladenen Dateien außerhalb des Web-Document-Root vollständig zu speichern. Nutzen Sie anschließend andere Mechanismen, um die Dateien dynamisch auszuliefern. [REF-423] Dies bietet eine zusätzliche Ebene der isolation und erschwert Angreifern den direkten Zugriff auf die assets. Die Verwendung von dynamic serving kann die security posture erheblich verbessern.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Definieren Sie einen sehr begrenzten Satz erlaubter Dateiendungen und generieren Sie ausschließlich Dateinamen, die mit diesen Endungen enden. Berücksichtigen Sie die Möglichkeit von XSS (CWE-79), bevor Sie Dateitypen wie .html oder .htm erlauben. Eine strikte file type validation ist essenziell, um potenzielle vulnerabilities zu minimieren und die attack surface zu reduzieren. Die Implementierung einer robusten input sanitization ist hierbei unerlässlich.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Stellen Sie sicher, dass nur eine Dateiendung im Dateinamen verwendet wird. Einige Webserver, darunter auch bestimmte Versionen von Apache, verarbeiten Dateien basierend auf inneren Dateiendungen, sodass beispielsweise “filename.php.gif” an den PHP-Interpreter übergeben werden kann. [REF-422] [REF-423] Dies kann zu unerwünschten execution paths führen und sollte durch eine strikte filename parsing und validation verhindert werden. Eine korrekte file extension handling ist hierbei kritisch.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Bei der Ausführung auf einem Webserver, der case-insensitive Dateinamen unterstützt, führen Sie case-insensitive Bewertungen der bereitgestellten Dateiendungen durch. Dies stellt sicher, dass die file type detection unabhängig von der Groß- und Kleinschreibung korrekt erfolgt und potenzielle vulnerabilities durch falsche Interpretation der Dateiendung vermieden werden. Eine konsistente case sensitivity handling ist essentiell für die security posture.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Für alle Sicherheitsprüfungen, die clientseitig durchgeführt werden, stellen Sie sicher, dass diese Prüfungen serverseitig dupliziert werden, um CWE-602 zu vermeiden. Angreifer können clientseitige Prüfungen umgehen, indem sie Werte nach Durchführung der Prüfungen modifizieren oder den Client so verändern, dass die clientseitigen Prüfungen vollständig entfernt werden. Anschließend würden diese modifizierten Werte an den Server übermittelt. Eine serverseitige Validierung ist daher unerlässlich, um die integrity der Daten zu gewährleisten und eine robuste defense-in-depth zu implementieren.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verlassen Sie sich nicht ausschließlich auf die Überprüfung der Inhaltlichkeit von Dateien, um sicherzustellen, dass die Datei den erwarteten Typ und die erwartete Größe aufweist. Es ist möglich, dass ein Angreifer Code in bestimmten Dateisegmenten verstecken kann, der dennoch vom Server ausgeführt wird. Beispielsweise können GIF-Bilder ein freies Kommentarfeld enthalten. Eine umfassende file type validation ist daher notwendig, um potenzielle exploitation vectors zu minimieren.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verlassen Sie sich nicht ausschließlich auf den MIME-Inhaltstyp oder das Dateinamensattribut bei der Bestimmung, wie eine Datei gerendert werden soll. Die Validierung des MIME-Inhaltstyps und die Sicherstellung, dass dieser mit der Dateiendung übereinstimmt, stellt lediglich eine partielle Lösung dar. Eine gründlichere content inspection ist erforderlich, um potenzielle vulnerabilities zu identifizieren.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Führen Sie Ihren Code mit den minimal erforderlichen Berechtigungen aus, um die notwendigen Aufgaben zu erledigen [REF-76]. Wenn möglich, erstellen Sie isolierte Konten mit eingeschränkten Berechtigungen, die ausschließlich für eine einzelne Aufgabe verwendet werden. Auf diese Weise gewährt ein erfolgreicher Angriff dem Angreifer nicht unmittelbar Zugriff auf den Rest der Software oder deren environment. Beispielsweise benötigen Datenbankanwendungen selten die Ausführung als Datenbankadministrator, insbesondere im Rahmen des täglichen Betriebs. Dies reduziert das attack surface erheblich.