Coders Conquer Security OWASP Top 10 API Serie - Massenzuweisung

Veröffentlicht Okt 21, 2020
von Matias Madou, Ph.D.
FALLSTUDIE

Coders Conquer Security OWASP Top 10 API Serie - Massenzuweisung

Veröffentlicht Okt 21, 2020
von Matias Madou, Ph.D.
Ressource anzeigen
Ressource anzeigen

Die Massenzuweisungs-Schwachstelle wurde geboren, weil viele moderne Frameworks Entwickler dazu ermutigen, Funktionen zu verwenden, die automatisch Eingaben von Clients in Code-Variablen und interne Objekte binden. Dies geschieht, um den Code zu vereinfachen und Abläufe zu beschleunigen.

Angreifer können mit dieser Methode Änderungen an Objekteigenschaften erzwingen, die nie von einem Client aktualisiert werden sollten. Normalerweise führt dies zu geschäftsspezifischen Problemen, z. B. wenn ein Benutzer sich selbst Administratorrechte hinzufügt, anstatt eine Website zum Absturz zu bringen oder Firmengeheimnisse zu stehlen. Angreifer müssen auch eine gewisse Vorstellung von den Beziehungen zwischen Objekten und der Geschäftslogik der Anwendung haben, die sie ausnutzen.

Nichts davon macht jedoch die Schwachstelle der Massenzuweisung in den Händen eines cleveren und böswilligen Benutzers weniger gefährlich.

Bevor wir mit der vollständigen Anleitung beginnen, spielen Sie unsere spielerische Herausforderung und sehen Sie, wie Sie abschneiden:

Wie können Angreifer die Massenzuordnungsschwachstelle ausnutzen?

Das von OWASP vorgeschlagene (und von uns leicht modifizierte) Szenario geht von einer Ride-Sharing-Anwendung aus, die verschiedene Eigenschaften enthält, die per Massenzuweisung an Objekte im Code gebunden sind. Dazu gehören erlaubnisbezogene Eigenschaften, die Benutzer ändern können, und prozessabhängige Eigenschaften, die nur intern von der Anwendung gesetzt werden sollen. Beide verwenden Massenzuweisung, um Eigenschaften an Objekte zu binden.

In diesem Szenario erlaubt die Ride-Sharing-Anwendung den Benutzern, ihre Profile zu aktualisieren, wie es in vielen benutzerorientierten Anwendungen üblich ist. Dies geschieht über einen API-Aufruf, der an PUT gesendet wird und das folgende JSON-Objekt zurückgibt:

{"user_name":"SneakySnake", "age":17, "is_admin":false}

Da der Angreifer, in diesem Fall Mr. SneakySnake, die Beziehung zwischen den Eigenschaften und den Objekten herausgefunden hat, kann er seine ursprüngliche Anfrage zur Aktualisierung seines Profils mit der folgenden Zeichenfolge erneut senden:

{"user_name":"SneakySnake","age":24,, "is_admin":true}

Da der Endpunkt anfällig für Massenzuweisungen ist, akzeptiert er die neue Eingabe als gültig. Unser Hacker hat nicht nur ein paar Jahre zu seinem Profil hinzugefügt, sondern sich auch Admin-Rechte zugewiesen.

Beseitigung der Schwachstelle der Massenzuweisung

So bequem es auch sein mag, die Massenzuweisungsfunktion in einigen Frameworks zu verwenden, sollten Sie dies vermeiden, wenn Sie Ihre APIs sicher halten wollen. Parsen Sie stattdessen Abfragewerte, anstatt sie direkt an ein Objekt zu binden. Sie können auch ein reduziertes Datenübertragungsobjekt verwenden, das fast den gleichen Komfort wie die direkte Bindung an das Objekt selbst bieten würde, nur ohne das damit verbundene Risiko.

Als zusätzliche Vorsichtsmaßnahme könnten sensible Eigenschaften wie die Admin-Rechte aus dem obigen Beispiel verweigert werden, damit sie vom Server bei einem API-Aufruf niemals akzeptiert werden. Eine noch bessere Idee wäre es, jede Eigenschaft standardmäßig zu verweigern und dann bestimmte, nicht sensible Eigenschaften zuzulassen, die Benutzer aktualisieren oder ändern können sollen. Jede dieser Maßnahmen kann dazu beitragen, APIs zu sperren und die Schwachstelle der Massenzuweisung aus Ihrer Umgebung zu entfernen.

Schauen Sie sich die Secure Code Warrior Blog-Seiten, um mehr über diese Schwachstelle zu erfahren und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Kenntnisse zu schärfen und auf dem neuesten Stand zu halten.

Ressource anzeigen
Ressource anzeigen

Autor

Matias Madou, Ph.D.

Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.

Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Coders Conquer Security OWASP Top 10 API Serie - Massenzuweisung

Veröffentlicht Okt 21, 2020
Von Matias Madou, Ph.D.

Die Massenzuweisungs-Schwachstelle wurde geboren, weil viele moderne Frameworks Entwickler dazu ermutigen, Funktionen zu verwenden, die automatisch Eingaben von Clients in Code-Variablen und interne Objekte binden. Dies geschieht, um den Code zu vereinfachen und Abläufe zu beschleunigen.

Angreifer können mit dieser Methode Änderungen an Objekteigenschaften erzwingen, die nie von einem Client aktualisiert werden sollten. Normalerweise führt dies zu geschäftsspezifischen Problemen, z. B. wenn ein Benutzer sich selbst Administratorrechte hinzufügt, anstatt eine Website zum Absturz zu bringen oder Firmengeheimnisse zu stehlen. Angreifer müssen auch eine gewisse Vorstellung von den Beziehungen zwischen Objekten und der Geschäftslogik der Anwendung haben, die sie ausnutzen.

Nichts davon macht jedoch die Schwachstelle der Massenzuweisung in den Händen eines cleveren und böswilligen Benutzers weniger gefährlich.

Bevor wir mit der vollständigen Anleitung beginnen, spielen Sie unsere spielerische Herausforderung und sehen Sie, wie Sie abschneiden:

Wie können Angreifer die Massenzuordnungsschwachstelle ausnutzen?

Das von OWASP vorgeschlagene (und von uns leicht modifizierte) Szenario geht von einer Ride-Sharing-Anwendung aus, die verschiedene Eigenschaften enthält, die per Massenzuweisung an Objekte im Code gebunden sind. Dazu gehören erlaubnisbezogene Eigenschaften, die Benutzer ändern können, und prozessabhängige Eigenschaften, die nur intern von der Anwendung gesetzt werden sollen. Beide verwenden Massenzuweisung, um Eigenschaften an Objekte zu binden.

In diesem Szenario erlaubt die Ride-Sharing-Anwendung den Benutzern, ihre Profile zu aktualisieren, wie es in vielen benutzerorientierten Anwendungen üblich ist. Dies geschieht über einen API-Aufruf, der an PUT gesendet wird und das folgende JSON-Objekt zurückgibt:

{"user_name":"SneakySnake", "age":17, "is_admin":false}

Da der Angreifer, in diesem Fall Mr. SneakySnake, die Beziehung zwischen den Eigenschaften und den Objekten herausgefunden hat, kann er seine ursprüngliche Anfrage zur Aktualisierung seines Profils mit der folgenden Zeichenfolge erneut senden:

{"user_name":"SneakySnake","age":24,, "is_admin":true}

Da der Endpunkt anfällig für Massenzuweisungen ist, akzeptiert er die neue Eingabe als gültig. Unser Hacker hat nicht nur ein paar Jahre zu seinem Profil hinzugefügt, sondern sich auch Admin-Rechte zugewiesen.

Beseitigung der Schwachstelle der Massenzuweisung

So bequem es auch sein mag, die Massenzuweisungsfunktion in einigen Frameworks zu verwenden, sollten Sie dies vermeiden, wenn Sie Ihre APIs sicher halten wollen. Parsen Sie stattdessen Abfragewerte, anstatt sie direkt an ein Objekt zu binden. Sie können auch ein reduziertes Datenübertragungsobjekt verwenden, das fast den gleichen Komfort wie die direkte Bindung an das Objekt selbst bieten würde, nur ohne das damit verbundene Risiko.

Als zusätzliche Vorsichtsmaßnahme könnten sensible Eigenschaften wie die Admin-Rechte aus dem obigen Beispiel verweigert werden, damit sie vom Server bei einem API-Aufruf niemals akzeptiert werden. Eine noch bessere Idee wäre es, jede Eigenschaft standardmäßig zu verweigern und dann bestimmte, nicht sensible Eigenschaften zuzulassen, die Benutzer aktualisieren oder ändern können sollen. Jede dieser Maßnahmen kann dazu beitragen, APIs zu sperren und die Schwachstelle der Massenzuweisung aus Ihrer Umgebung zu entfernen.

Schauen Sie sich die Secure Code Warrior Blog-Seiten, um mehr über diese Schwachstelle zu erfahren und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Kenntnisse zu schärfen und auf dem neuesten Stand zu halten.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.