CWE ID: 426
Name: Untrusted Search Path
Das Produkt sucht nach kritischen Ressourcen mithilfe eines extern bereitgestellten Suchpfads, der auf Ressourcen verweisen kann, die sich nicht unter der direkten Kontrolle des Produkts befinden.
Effektivität: Unknown
Beschreibung: Der Suchpfad sollte hartkodiert auf eine Menge bekannter, sicherer Werte (wie z.B. Systemverzeichnisse) festgelegt werden, oder ausschließlich vom Administrator in einer Konfigurationsdatei erlaubt sein. Diese Einstellungen dürfen nicht durch externe Parteien modifiziert werden. Achten Sie dabei sorgfältig darauf, verwandte Schwachstellen wie CWE-426 und CWE-428 zu vermeiden.
Effektivität: Unknown
Beschreibung: Beim Aufruf anderer Programme sollten diese Programme mit vollständig qualifizierten Pfadangaben (fully-qualified pathnames) angegeben werden. Obwohl dies ein effektiver Ansatz ist, kann Code, der vollständig qualifizierte Pfadangaben verwendet, möglicherweise nicht auf andere Systeme portiert werden, die nicht die gleichen Pfadangaben verwenden. Die Portierbarkeit kann verbessert werden, indem die vollständig qualifizierten Pfade an einer zentralen, leicht modifizierbaren Stelle im Quellcode gespeichert und der Code auf diese Pfade referenziert.
Effektivität: Unknown
Beschreibung: Entfernen oder beschränken Sie alle Umgebungsvariablen vor dem Aufruf anderer Programme. Dies umfasst die PATH-Umgebungsvariable, LD_LIBRARY_PATH und andere Einstellungen, die den Speicherort von Code-Bibliotheken identifizieren, sowie alle anwendungsspezifischen Suchpfade.
Effektivität: Unknown
Beschreibung: Überprüfen Sie Ihren Suchpfad vor der Verwendung und entfernen Sie alle Elemente, die wahrscheinlich unsicher sind, wie beispielsweise das aktuelle Arbeitsverzeichnis oder ein temporäres Verzeichnis.
Effektivität: Unknown
Beschreibung: Nutzen Sie stattdessen Funktionen, die explizite Pfade erfordern. Die Verwendung anderer, leicht verfügbarer Funktionen, die explizite Pfade benötigen, ist eine sichere Methode, um dieses Problem zu umgehen. Beispielsweise benötigt system()
in C keinen vollständigen Pfad, da die Shell dies übernimmt, während execl()
und execv()
einen vollständigen Pfad erfordern.