• CWE-627: Dynamic Variable Evaluation

In einer Programmiersprache, in der der Benutzer den Namen einer Variable zur Laufzeit beeinflussen kann, kann ein Angreifer, wenn die Variablennamen nicht kontrolliert werden, auf beliebige Variablen lesen oder schreiben oder beliebige Funktionen aufrufen, falls die Variablennamen nicht ausreichend validiert werden. Dies stellt ein erhebliches Security Risk dar.

CWE-627: Dynamic Variable Evaluation

CWE ID: 627
Name: Dynamic Variable Evaluation

Beschreibung

In einer Programmiersprache, in der der Benutzer den Namen einer Variable zur Laufzeit beeinflussen kann, kann ein Angreifer, wenn die Variablennamen nicht kontrolliert werden, auf beliebige Variablen lesen oder schreiben oder beliebige Funktionen aufrufen, falls die Variablennamen nicht ausreichend validiert werden. Dies stellt ein erhebliches Security Risk dar.

Erweiterte Beschreibung

Die resultierenden Schwachstellen hängen vom Verhalten der Anwendung ab, sowohl am Übergangspunkt als auch in jedem Control/Data Flow, der von den betroffenen Variablen oder Funktionen erreichbar ist. Die Auswirkung kann somit stark variieren, abhängig von der spezifischen Architektur und dem Design der Anwendung.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Überarbeiten Sie den Code, um dynamische Variablenauswertung wann immer möglich zu vermeiden.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Verwenden Sie ausschließlich Zulassungslisten (allowlists) für akzeptable Variablennamen oder Funktionsnamen.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Stellen Sie sicher, dass Sie nur Funktionen aufrufen, die die korrekte Anzahl an Argumenten akzeptieren, um unerwartete Null-Argumente zu vermeiden.

Detaillierter Hintergrund

Viele interpretierte Programmiersprachen unterstützen die Verwendung einer “$$varname”-Konstruktion, um eine Variable zu setzen, deren Name durch die Variable $varname angegeben wird. In PHP werden diese als “variable variables” bezeichnet. Funktionen können ebenfalls mit ähnlicher Syntax aufgerufen werden, beispielsweise $$funcname(arg1, arg2).