CWE ID: 650
Name: Trusting HTTP Permission Methods on the Server Side
Der Server enthält einen Schutzmechanismus, der davon ausgeht, dass jede URI, auf die über HTTP GET zugegriffen wird, keinen Zustandsänderung der zugehörigen Ressource verursacht. Dies könnte es Angreifern ermöglichen, beabsichtigte Zugriffsbeschränkungen zu umgehen und Ressourcenmodifikations- und Löschangriffe durchzuführen, da einige Anwendungen GET zur Zustandsänderung erlauben.
Die HTTP GET Methode und einige andere Methoden sind dazu konzipiert, Ressourcen abzurufen und nicht den Zustand der Anwendung oder der Ressourcen auf der Serverseite zu verändern. Darüber hinaus verlangt die HTTP Spezifikation, dass GET Anfragen (und andere Anfragen) keine Seiteneffekte haben sollten. In der Annahme, dass dies ausreichend ist, um unbeabsichtigte Ressourcenänderungen zu verhindern, kann eine Anwendung die HTTP Anfragen daran hindern, DELETE, PUT und POST Operationen auf die Ressourcenrepräsentation durchzuführen. Es gibt jedoch nichts im HTTP Protokoll selbst, das tatsächlich verhindert, dass die HTTP GET Methode mehr als nur eine Abfrage der Daten durchführt. Entwickler können problemlos Programme erstellen, die eine HTTP GET Anfrage akzeptieren und tatsächlich Daten auf dem Server erstellen, aktualisieren oder löschen. Es ist eine gängige Praxis bei REST-basierten Web Services, HTTP GET Anfragen zur Modifikation von Ressourcen auf der Serverseite zu verwenden. Allerdings muss in solchen Fällen die Zugriffskontrolle in der Anwendung ordnungsgemäß durchgesetzt werden. Es sollten keine Annahmen getroffen werden, dass nur HTTP DELETE, PUT, POST und andere Methoden die Macht haben, die Repräsentation der angefragten Ressource zu verändern.
Effektivität: Unknown
Beschreibung: Konfigurieren Sie ACLs (Access Control Lists) auf der Serverseite, um sicherzustellen, dass für jede zugängliche Ressourcenrepräsentation das angemessene Maß an Zugriffskontrolle definiert ist.