• CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion')

Die PHP-Anwendung empfängt Eingaben von einer vorgelagerten Komponente, schränkt diese jedoch nicht oder fehlerhaft ein, bevor sie in Funktionen wie “require”, “include” oder ähnlichen Funktionen verwendet wird. Dies birgt das Risiko einer Code-Injektion und potenzieller Sicherheitslücken.

CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion')

CWE ID: 98
Name: Improper Control of Filename for Include/Require Statement in PHP Program (‘PHP Remote File Inclusion’)

Beschreibung

Die PHP-Anwendung empfängt Eingaben von einer vorgelagerten Komponente, schränkt diese jedoch nicht oder fehlerhaft ein, bevor sie in Funktionen wie “require”, “include” oder ähnlichen Funktionen verwendet wird. Dies birgt das Risiko einer Code-Injektion und potenzieller Sicherheitslücken.

Erweiterte Beschreibung

In bestimmten Versionen und Konfigurationen von PHP kann dies einem Angreifer ermöglichen, eine URL anzugeben, von der das Produkt den Code zum Ausführen abruft. In anderen Fällen, in Verbindung mit Path Traversal, kann der Angreifer eine lokale Datei angeben, die ausführbare Statements enthalten kann, die von PHP geparst werden. Dies stellt ein erhebliches Sicherheitsrisiko dar und kann zur Kompromittierung des Systems führen.

Risikominderungsmaßnahmen

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Nutzen Sie eine geprüfte Library oder ein Framework, das diese Schwachstelle nicht zulässt oder Konstrukte bereitstellt, die die Vermeidung dieser Schwachstelle erleichtern. Dies reduziert das Risiko erheblich und fördert eine robustere Security Posture.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Für alle Security Checks, die clientseitig durchgeführt werden, stellen Sie sicher, dass diese Checks serverseitig dupliziert werden, um CWE-602 zu vermeiden. Angreifer können die clientseitigen Checks umgehen, indem sie Werte nach Durchführung der Checks modifizieren oder den Client verändern, um die clientseitigen Checks vollständig zu entfernen. Anschließend würden diese modifizierten Werte an den Server übermittelt. Dies ist ein kritischer Aspekt der robusten Application Security.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Führen Sie Ihren Code mit den minimal erforderlichen Privilegien aus, die zur Erfüllung der notwendigen Aufgaben benötigt werden [REF-76]. Wenn möglich, erstellen Sie isolierte Accounts mit eingeschränkten Privilegien, die ausschließlich für eine einzelne Aufgabe verwendet werden. Auf diese Weise erhält ein Angreifer bei erfolgreichem Angriff nicht unmittelbar Zugriff auf den Rest der Software oder deren Environment. Beispielsweise benötigen Datenbankanwendungen selten die Berechtigungen des Datenbankadministrators, insbesondere im Rahmen des täglichen Betriebs. Dies ist ein wichtiger Bestandteil der Least Privilege Strategie.

Maßnahme (Operation)

Effektivität: Moderate
Beschreibung: Setzen Sie eine Application Firewall ein, die Angriffe gegen diese Schwachstelle erkennen kann. Dies kann vorteilhaft sein, wenn der Code nicht behoben werden kann (weil er von einem Drittanbieter kontrolliert wird), als Notfallmaßnahme während umfassenderer Software Assurance Maßnahmen angewendet werden oder zur Bereitstellung einer Defense in Depth. Notizen: Eine Application Firewall deckt möglicherweise nicht alle möglichen Input-Vektoren ab. Darüber hinaus könnten Angriffs-Techniken existieren, um den Schutzmechanismus zu umgehen, beispielsweise durch die Verwendung von fehlerhaften Inputs, die dennoch von der empfangenden Komponente verarbeitet werden können. Abhängig von der Funktionalität kann eine Application Firewall unbeabsichtigt legitime Requests ablehnen oder modifizieren. Schließlich kann ein gewisser manueller Aufwand für die Customization erforderlich sein.

Maßnahme (Operation)

Effektivität: Unknown
Beschreibung: Entwickeln und führen Sie Ihren Code in den neuesten verfügbaren PHP-Versionen aus, vorzugsweise PHP 6 oder höher. Viele der hochriskanten Features in älteren PHP-Interpretern wurden in den neueren Versionen entfernt, eingeschränkt oder standardmäßig deaktiviert.

Maßnahme (Operation)

Effektivität: High
Beschreibung: Setzen Sie allow_url_fopen auf false, was die Möglichkeit, Dateien von Remote-Standorten einzubinden, einschränkt. Notizen: Beachten Sie, dass einige PHP-Versionen weiterhin ftp:// und andere URI-Schemas akzeptieren können. Darüber hinaus schützt diese Einstellung den Code nicht vor Path Traversal Attacks (CWE-22), welche häufig gegen denselben anfälligen Code erfolgreich sind, der Remote File Inclusion erlaubt.