• CWE-493: Critical Public Variable Without Final Modifier

“Das Produkt weist eine kritische, öffentliche Variable auf, die nicht als final deklariert ist. Dies ermöglicht die Modifikation der Variable, sodass sie unerwartete Werte enthält.”

CWE-493: Critical Public Variable Without Final Modifier

CWE ID: 493
Name: Critical Public Variable Without Final Modifier

Beschreibung

“Das Produkt weist eine kritische, öffentliche Variable auf, die nicht als final deklariert ist. Dies ermöglicht die Modifikation der Variable, sodass sie unerwartete Werte enthält.”

Erweiterte Beschreibung

“Wenn ein Feld nicht als final deklariert und öffentlich ist, kann es geändert werden, sobald ein Wert zugewiesen wurde, und zwar durch jede Funktion, die Zugriff auf die Klasse besitzt, die dieses Feld enthält. Dies kann zu einer Schwachstelle führen, wenn andere Teile des Programms Annahmen über den Inhalt dieses Feldes treffen.”

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: “Deklarieren Sie öffentliche Felder nach Möglichkeit als final, insbesondere wenn sie zur Aufrechterhaltung des internen Zustands eines Applets oder von Klassen verwendet werden, die von einem Applet genutzt werden. Wenn ein Feld öffentlich sein muss, führen Sie unbedingt alle geeigneten sanity checks durch, bevor Sie das Feld aus Ihrem Code zugreifen.”

Detaillierter Hintergrund

“Mobiler Code, wie beispielsweise ein Java Applet, bezeichnet Code, der über ein Netzwerk übertragen und auf einer entfernten Maschine ausgeführt wird. Da Entwickler von mobilem Code in der Regel wenig bis keinen Einfluss auf die Umgebung haben, in der ihr Code ausgeführt wird, werden besondere Sicherheitsaspekte relevant. Eine der größten Umgebungsbedrohungen resultiert aus dem Risiko, dass mobiler Code parallel zu anderem, potenziell bösartigem, mobilem Code ausgeführt wird. Da viele der populären Webbrowser Code aus verschiedenen Quellen gemeinsam in derselben JVM ausführen, konzentrieren sich viele der Sicherheitsrichtlinien für mobilen Code darauf, die Manipulation des Zustands und des Verhaltens Ihrer Objekte durch Angreifer zu verhindern, die Zugriff auf die gleiche virtuelle Maschine haben, auf der Ihr Programm läuft.

Final bietet Sicherheit, indem es nur die Änderung von nicht-mutierbaren Objekten nach ihrer Initialisierung erlaubt. Allerdings können nur Objekte, die nicht erweitert werden, als final deklariert werden.”