SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

Programmierer erobern Sicherheitsinfrastruktur als Code-Serie: Fehlende Zugriffskontrolle auf Funktionsebene

Matias Madou, Ph.D.
Veröffentlicht Mai 11, 2020
Zuletzt aktualisiert am 09. März 2026

Es ist Zeit für den nächsten Teil unserer Reihe „Infrastructure as Code“, die Blogs, die Entwickler wie Sie bei der Bereitstellung sicherer Infrastrukturen in Ihrem eigenen Unternehmen auf ein völlig neues Niveau des Sicherheitsbewusstseins heben werden.

Oh, übrigens... wie ist es Ihnen mit der Sicherheitsfehlkonfiguration im vorherigen Blog ergangen? Wenn Sie sofort eine Sicherheitslücke in der Zugriffskontrolle auf Funktionsebene beheben möchten, besuchen Sie die Plattform:

(Der obige Link führt Sie zur Kubernetes-Herausforderung, aber sobald Sie auf der Plattform sind, verwenden Sie das Drop-down-Menü, um auch zwischen Ansible, CloudFormation, Terraform oder Docker auszuwählen. Deine Wahl.)

Fast jede heute eingesetzte Anwendung verfügt über eine Art Zugriffskontrollmechanismus, der überprüft, ob ein Benutzer die Berechtigung hat, die angeforderten Funktionen auszuführen oder nicht. Dies ist so ziemlich der Eckpfeiler guter Sicherheit und Funktionalität bei der Erstellung einer Anwendung. Tatsächlich benötigen alle Webanwendungen Zugriffskontrollen, damit Benutzer mit unterschiedlichen Rechten das Programm verwenden können.

Probleme können jedoch auftreten, wenn dieselben Überprüfungsfunktionen für die Zugriffskontrolle nicht auf Infrastrukturebene ausgeführt werden oder falsch konfiguriert sind. Wenn die Zugriffskontrolle auf Infrastrukturebene nicht in einwandfreiem Zustand ist, ist ein ganzes Unternehmen Hackern ausgesetzt, die diese Sicherheitslücke als Einfallstor für unbefugtes Ausspionieren oder für einen vollständigen Angriff nutzen können.

Tatsächlich ist es extrem einfach, fehlende oder falsch konfigurierte Sicherheitslücken bei der Funktionskontrolle auszunutzen. Angreifer müssen nicht einmal übermäßig geschult sein. Sie müssen nur wissen, welche Befehle Funktionen innerhalb des Frameworks ausführen, das die Anwendung unterstützt. Wenn sie das tun, ist es nur eine Frage von Versuch und Irrtum. Sie können kontinuierlich Anfragen stellen, die nicht zugelassen werden sollten, und sobald eine solche Anfrage erfolgreich ist, könnte die Zielwebsite, die Anwendung, der Server oder sogar das gesamte Netzwerk gefährdet sein.

Wie funktionieren fehlende Zugriffskontroll-Exploits auf Funktionsebene?

Es gibt verschiedene Möglichkeiten, wie sich Zugriffskontrollen auf Funktionsebene in ein Unternehmen einschleichen können. Beispielsweise kann der Zugriff auf Funktionsebene einer Anwendung überlassen werden und nicht von der zugrunde liegenden Infrastruktur verifiziert werden. Oder die Zugriffskontrolle auf Infrastrukturebene kann falsch konfiguriert werden. In einigen Fällen gehen Administratoren davon aus, dass nicht autorisierte Benutzer nicht wissen, wie sie zu Infrastrukturressourcen gelangen, die nur für Benutzer auf höherer Ebene sichtbar sein sollten, und verwenden ein „Security by Obscurity“ -Modell, das selten funktioniert.

Ein Beispiel für Security by Obscurity: Die folgende URL ist wahrscheinlich anfällig für Angriffe:

http://companywebsite.com/app/NormalUserHomepage

Wenn ein authentifizierter Benutzer eine Technik namens Forced URL Browsing verwendet, könnte er versuchen, eine Seite zu erreichen, die nur Administratoren angezeigt wird. Ein Beispiel könnte sein:

http://companywebsite.com/app/AdminPages

Wenn keine serverseitige Überprüfung existiert, werden ihnen einfach die Admin-Seiten angezeigt (falls ihr Name mit der Anfrage übereinstimmt) und haben dann Zugriff auf alle zusätzlichen Funktionen, die Administratoren von der neuen Seite aus ausführen. Wenn der Server den Fehler „Seite nicht gefunden“ an den Angreifer zurückgibt, kann er es einfach so lange versuchen, bis er herausgefunden hat, welchen Namen die Admin-Seite erhalten hat.

Für Angreifer, Ausnutzen fehlende Zugriffskontrollen auf Funktionsebene ist ein ähnlicher Prozess. Anstatt zu versuchen, unautorisierte Seiten zu durchsuchen, senden sie stattdessen Funktionsanfragen ein. Beispielsweise könnten sie versuchen, einen neuen Benutzer mit Administratorrechten zu erstellen. Ihre Anfrage würde also je nach Framework ungefähr so aussehen:

Beitrag/Aktion/CreateUsername=Hacker&pw=password&role=admin

Wenn keine Zugriffskontrolle auf Funktionsebene vorhanden ist, wäre das obige Beispiel erfolgreich und ein neues Administratorkonto würde erstellt. Sobald sich der Angreifer wieder als neuer Administrator anmeldet, hätte er denselben Zugriff und dieselben Berechtigungen wie jeder andere Administrator in diesem Netzwerk oder Server.

Die Lösung für fehlende Zugriffskontrollen auf Funktionsebene

Da es für Angreifer so einfach ist, fehlende Sicherheitslücken bei der Zugriffskontrolle auf Funktionsebene auszunutzen, ist es wichtig, dass sie gefunden, behoben und verhindert werden. Zum Glück ist das mit etwas Fachwissen und einer grundlegenden Infrastruktur nicht allzu schwierig Schulung zur Codesicherheit.

Der Hauptschutz wird durch die Implementierung einer rollenbasierten Autorisierung auf Infrastrukturebene gewährleistet. Vertrauen Sie niemals darauf, dass Anwendungen diese Funktion ausführen. Selbst wenn dies der Fall ist, stellt eine infrastrukturseitige Autorisierung sicher, dass nichts übersehen wird. Idealerweise sollte die Autorisierung von einer zentralen Stelle aus erfolgen (z. B. AWS IAM, Azure IAM usw.), die in die Routine Ihres Unternehmens integriert ist und auf jede neue Anwendung angewendet wird. Diese Autorisierungsprozesse können vom Framework selbst oder aus einer beliebigen Anzahl benutzerfreundlicher externer Module stammen.

Schließlich sollte sich Ihr Unternehmen das Konzept der geringsten Privilegien zu eigen machen. Alle Aktionen und Funktionen sollten standardmäßig verweigert werden, wobei der Autorisierungsprozess verwendet wird, um gültigen Benutzern die Erlaubnis zu geben, alles zu tun, was sie benötigen. Sie sollten nur genügend Berechtigungen erhalten, um die erforderliche Funktion auszuführen, und zwar nur so lange wie erforderlich.

Fehlende Zugriffskontrollen auf Funktionsebene können verheerend sein. Aber glücklicherweise können Sie dieses Problem ganz einfach verhindern, indem Sie in Ihrem Unternehmen gute Autorisierungspraktiken auf Infrastrukturebene integrieren.

Denken Sie, Sie sind bereit, einen Zugangskontrollfehler in freier Wildbahn zu entdecken? Vergleichen Sie diese Docker-Codefragmente; einer ist verwundbar, einer sicher:


Verwundbar:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER root
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Sicher:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER niemand
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Erfahre mehr, fordere dich selbst heraus

Schauen Sie sich das an Sicherer Codekrieger Blogseiten mit weiteren Informationen zu dieser Sicherheitslücke und dazu, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken und Sicherheitslücken schützen können.

Und wenn du es früher verpasst hast, kannst du probieren Sie eine IaC Gamified Security Challenge aus auf der Secure Code Warrior-Plattform, um all Ihre Cybersicherheitsfähigkeiten zu verbessern und auf dem neuesten Stand zu halten.

Seien Sie gespannt auf das nächste Kapitel!

Ressource anzeigen
Ressource anzeigen

Wenn die Zugriffskontrolle auf Infrastrukturebene nicht in perfekter Ordnung ist, wird ein ganzes Unternehmen für Angreifer geöffnet, die diese Sicherheitslücke als Einfallstor für unbefugtes Ausspionieren oder für einen vollständigen Angriff nutzen können.

Interessiert an mehr?

Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

mehr erfahren

Secure Code Warrior für Ihr Unternehmen da, um Ihnen zu helfen, Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder jemand anderes sind, der sich mit Sicherheit befasst, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Eine Demo buchen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Matias Madou, Ph.D.
Veröffentlicht Mai 11, 2020

Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

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.

Teilen auf:
LinkedIn-MarkenSozialx Logo

Es ist Zeit für den nächsten Teil unserer Reihe „Infrastructure as Code“, die Blogs, die Entwickler wie Sie bei der Bereitstellung sicherer Infrastrukturen in Ihrem eigenen Unternehmen auf ein völlig neues Niveau des Sicherheitsbewusstseins heben werden.

Oh, übrigens... wie ist es Ihnen mit der Sicherheitsfehlkonfiguration im vorherigen Blog ergangen? Wenn Sie sofort eine Sicherheitslücke in der Zugriffskontrolle auf Funktionsebene beheben möchten, besuchen Sie die Plattform:

(Der obige Link führt Sie zur Kubernetes-Herausforderung, aber sobald Sie auf der Plattform sind, verwenden Sie das Drop-down-Menü, um auch zwischen Ansible, CloudFormation, Terraform oder Docker auszuwählen. Deine Wahl.)

Fast jede heute eingesetzte Anwendung verfügt über eine Art Zugriffskontrollmechanismus, der überprüft, ob ein Benutzer die Berechtigung hat, die angeforderten Funktionen auszuführen oder nicht. Dies ist so ziemlich der Eckpfeiler guter Sicherheit und Funktionalität bei der Erstellung einer Anwendung. Tatsächlich benötigen alle Webanwendungen Zugriffskontrollen, damit Benutzer mit unterschiedlichen Rechten das Programm verwenden können.

Probleme können jedoch auftreten, wenn dieselben Überprüfungsfunktionen für die Zugriffskontrolle nicht auf Infrastrukturebene ausgeführt werden oder falsch konfiguriert sind. Wenn die Zugriffskontrolle auf Infrastrukturebene nicht in einwandfreiem Zustand ist, ist ein ganzes Unternehmen Hackern ausgesetzt, die diese Sicherheitslücke als Einfallstor für unbefugtes Ausspionieren oder für einen vollständigen Angriff nutzen können.

Tatsächlich ist es extrem einfach, fehlende oder falsch konfigurierte Sicherheitslücken bei der Funktionskontrolle auszunutzen. Angreifer müssen nicht einmal übermäßig geschult sein. Sie müssen nur wissen, welche Befehle Funktionen innerhalb des Frameworks ausführen, das die Anwendung unterstützt. Wenn sie das tun, ist es nur eine Frage von Versuch und Irrtum. Sie können kontinuierlich Anfragen stellen, die nicht zugelassen werden sollten, und sobald eine solche Anfrage erfolgreich ist, könnte die Zielwebsite, die Anwendung, der Server oder sogar das gesamte Netzwerk gefährdet sein.

Wie funktionieren fehlende Zugriffskontroll-Exploits auf Funktionsebene?

Es gibt verschiedene Möglichkeiten, wie sich Zugriffskontrollen auf Funktionsebene in ein Unternehmen einschleichen können. Beispielsweise kann der Zugriff auf Funktionsebene einer Anwendung überlassen werden und nicht von der zugrunde liegenden Infrastruktur verifiziert werden. Oder die Zugriffskontrolle auf Infrastrukturebene kann falsch konfiguriert werden. In einigen Fällen gehen Administratoren davon aus, dass nicht autorisierte Benutzer nicht wissen, wie sie zu Infrastrukturressourcen gelangen, die nur für Benutzer auf höherer Ebene sichtbar sein sollten, und verwenden ein „Security by Obscurity“ -Modell, das selten funktioniert.

Ein Beispiel für Security by Obscurity: Die folgende URL ist wahrscheinlich anfällig für Angriffe:

http://companywebsite.com/app/NormalUserHomepage

Wenn ein authentifizierter Benutzer eine Technik namens Forced URL Browsing verwendet, könnte er versuchen, eine Seite zu erreichen, die nur Administratoren angezeigt wird. Ein Beispiel könnte sein:

http://companywebsite.com/app/AdminPages

Wenn keine serverseitige Überprüfung existiert, werden ihnen einfach die Admin-Seiten angezeigt (falls ihr Name mit der Anfrage übereinstimmt) und haben dann Zugriff auf alle zusätzlichen Funktionen, die Administratoren von der neuen Seite aus ausführen. Wenn der Server den Fehler „Seite nicht gefunden“ an den Angreifer zurückgibt, kann er es einfach so lange versuchen, bis er herausgefunden hat, welchen Namen die Admin-Seite erhalten hat.

Für Angreifer, Ausnutzen fehlende Zugriffskontrollen auf Funktionsebene ist ein ähnlicher Prozess. Anstatt zu versuchen, unautorisierte Seiten zu durchsuchen, senden sie stattdessen Funktionsanfragen ein. Beispielsweise könnten sie versuchen, einen neuen Benutzer mit Administratorrechten zu erstellen. Ihre Anfrage würde also je nach Framework ungefähr so aussehen:

Beitrag/Aktion/CreateUsername=Hacker&pw=password&role=admin

Wenn keine Zugriffskontrolle auf Funktionsebene vorhanden ist, wäre das obige Beispiel erfolgreich und ein neues Administratorkonto würde erstellt. Sobald sich der Angreifer wieder als neuer Administrator anmeldet, hätte er denselben Zugriff und dieselben Berechtigungen wie jeder andere Administrator in diesem Netzwerk oder Server.

Die Lösung für fehlende Zugriffskontrollen auf Funktionsebene

Da es für Angreifer so einfach ist, fehlende Sicherheitslücken bei der Zugriffskontrolle auf Funktionsebene auszunutzen, ist es wichtig, dass sie gefunden, behoben und verhindert werden. Zum Glück ist das mit etwas Fachwissen und einer grundlegenden Infrastruktur nicht allzu schwierig Schulung zur Codesicherheit.

Der Hauptschutz wird durch die Implementierung einer rollenbasierten Autorisierung auf Infrastrukturebene gewährleistet. Vertrauen Sie niemals darauf, dass Anwendungen diese Funktion ausführen. Selbst wenn dies der Fall ist, stellt eine infrastrukturseitige Autorisierung sicher, dass nichts übersehen wird. Idealerweise sollte die Autorisierung von einer zentralen Stelle aus erfolgen (z. B. AWS IAM, Azure IAM usw.), die in die Routine Ihres Unternehmens integriert ist und auf jede neue Anwendung angewendet wird. Diese Autorisierungsprozesse können vom Framework selbst oder aus einer beliebigen Anzahl benutzerfreundlicher externer Module stammen.

Schließlich sollte sich Ihr Unternehmen das Konzept der geringsten Privilegien zu eigen machen. Alle Aktionen und Funktionen sollten standardmäßig verweigert werden, wobei der Autorisierungsprozess verwendet wird, um gültigen Benutzern die Erlaubnis zu geben, alles zu tun, was sie benötigen. Sie sollten nur genügend Berechtigungen erhalten, um die erforderliche Funktion auszuführen, und zwar nur so lange wie erforderlich.

Fehlende Zugriffskontrollen auf Funktionsebene können verheerend sein. Aber glücklicherweise können Sie dieses Problem ganz einfach verhindern, indem Sie in Ihrem Unternehmen gute Autorisierungspraktiken auf Infrastrukturebene integrieren.

Denken Sie, Sie sind bereit, einen Zugangskontrollfehler in freier Wildbahn zu entdecken? Vergleichen Sie diese Docker-Codefragmente; einer ist verwundbar, einer sicher:


Verwundbar:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER root
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Sicher:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER niemand
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Erfahre mehr, fordere dich selbst heraus

Schauen Sie sich das an Sicherer Codekrieger Blogseiten mit weiteren Informationen zu dieser Sicherheitslücke und dazu, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken und Sicherheitslücken schützen können.

Und wenn du es früher verpasst hast, kannst du probieren Sie eine IaC Gamified Security Challenge aus auf der Secure Code Warrior-Plattform, um all Ihre Cybersicherheitsfähigkeiten zu verbessern und auf dem neuesten Stand zu halten.

Seien Sie gespannt auf das nächste Kapitel!

Ressource anzeigen
Ressource anzeigen

Füllen Sie das unten stehende Formular aus, um den Bericht herunterzuladen.

Wir bitten um Ihre Erlaubnis, Ihnen Informationen zu unseren Produkten und/oder verwandten Themen rund um sichere Codierung zuzusenden. Wir behandeln Ihre persönlichen Daten stets mit größter Sorgfalt und verkaufen sie niemals zu Marketingzwecken an andere Unternehmen.

Einreichen
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular abzusenden, aktivieren Sie bitte „Analytics“-Cookies. Wenn Sie fertig sind, können Sie sie jederzeit wieder deaktivieren.

Es ist Zeit für den nächsten Teil unserer Reihe „Infrastructure as Code“, die Blogs, die Entwickler wie Sie bei der Bereitstellung sicherer Infrastrukturen in Ihrem eigenen Unternehmen auf ein völlig neues Niveau des Sicherheitsbewusstseins heben werden.

Oh, übrigens... wie ist es Ihnen mit der Sicherheitsfehlkonfiguration im vorherigen Blog ergangen? Wenn Sie sofort eine Sicherheitslücke in der Zugriffskontrolle auf Funktionsebene beheben möchten, besuchen Sie die Plattform:

(Der obige Link führt Sie zur Kubernetes-Herausforderung, aber sobald Sie auf der Plattform sind, verwenden Sie das Drop-down-Menü, um auch zwischen Ansible, CloudFormation, Terraform oder Docker auszuwählen. Deine Wahl.)

Fast jede heute eingesetzte Anwendung verfügt über eine Art Zugriffskontrollmechanismus, der überprüft, ob ein Benutzer die Berechtigung hat, die angeforderten Funktionen auszuführen oder nicht. Dies ist so ziemlich der Eckpfeiler guter Sicherheit und Funktionalität bei der Erstellung einer Anwendung. Tatsächlich benötigen alle Webanwendungen Zugriffskontrollen, damit Benutzer mit unterschiedlichen Rechten das Programm verwenden können.

Probleme können jedoch auftreten, wenn dieselben Überprüfungsfunktionen für die Zugriffskontrolle nicht auf Infrastrukturebene ausgeführt werden oder falsch konfiguriert sind. Wenn die Zugriffskontrolle auf Infrastrukturebene nicht in einwandfreiem Zustand ist, ist ein ganzes Unternehmen Hackern ausgesetzt, die diese Sicherheitslücke als Einfallstor für unbefugtes Ausspionieren oder für einen vollständigen Angriff nutzen können.

Tatsächlich ist es extrem einfach, fehlende oder falsch konfigurierte Sicherheitslücken bei der Funktionskontrolle auszunutzen. Angreifer müssen nicht einmal übermäßig geschult sein. Sie müssen nur wissen, welche Befehle Funktionen innerhalb des Frameworks ausführen, das die Anwendung unterstützt. Wenn sie das tun, ist es nur eine Frage von Versuch und Irrtum. Sie können kontinuierlich Anfragen stellen, die nicht zugelassen werden sollten, und sobald eine solche Anfrage erfolgreich ist, könnte die Zielwebsite, die Anwendung, der Server oder sogar das gesamte Netzwerk gefährdet sein.

Wie funktionieren fehlende Zugriffskontroll-Exploits auf Funktionsebene?

Es gibt verschiedene Möglichkeiten, wie sich Zugriffskontrollen auf Funktionsebene in ein Unternehmen einschleichen können. Beispielsweise kann der Zugriff auf Funktionsebene einer Anwendung überlassen werden und nicht von der zugrunde liegenden Infrastruktur verifiziert werden. Oder die Zugriffskontrolle auf Infrastrukturebene kann falsch konfiguriert werden. In einigen Fällen gehen Administratoren davon aus, dass nicht autorisierte Benutzer nicht wissen, wie sie zu Infrastrukturressourcen gelangen, die nur für Benutzer auf höherer Ebene sichtbar sein sollten, und verwenden ein „Security by Obscurity“ -Modell, das selten funktioniert.

Ein Beispiel für Security by Obscurity: Die folgende URL ist wahrscheinlich anfällig für Angriffe:

http://companywebsite.com/app/NormalUserHomepage

Wenn ein authentifizierter Benutzer eine Technik namens Forced URL Browsing verwendet, könnte er versuchen, eine Seite zu erreichen, die nur Administratoren angezeigt wird. Ein Beispiel könnte sein:

http://companywebsite.com/app/AdminPages

Wenn keine serverseitige Überprüfung existiert, werden ihnen einfach die Admin-Seiten angezeigt (falls ihr Name mit der Anfrage übereinstimmt) und haben dann Zugriff auf alle zusätzlichen Funktionen, die Administratoren von der neuen Seite aus ausführen. Wenn der Server den Fehler „Seite nicht gefunden“ an den Angreifer zurückgibt, kann er es einfach so lange versuchen, bis er herausgefunden hat, welchen Namen die Admin-Seite erhalten hat.

Für Angreifer, Ausnutzen fehlende Zugriffskontrollen auf Funktionsebene ist ein ähnlicher Prozess. Anstatt zu versuchen, unautorisierte Seiten zu durchsuchen, senden sie stattdessen Funktionsanfragen ein. Beispielsweise könnten sie versuchen, einen neuen Benutzer mit Administratorrechten zu erstellen. Ihre Anfrage würde also je nach Framework ungefähr so aussehen:

Beitrag/Aktion/CreateUsername=Hacker&pw=password&role=admin

Wenn keine Zugriffskontrolle auf Funktionsebene vorhanden ist, wäre das obige Beispiel erfolgreich und ein neues Administratorkonto würde erstellt. Sobald sich der Angreifer wieder als neuer Administrator anmeldet, hätte er denselben Zugriff und dieselben Berechtigungen wie jeder andere Administrator in diesem Netzwerk oder Server.

Die Lösung für fehlende Zugriffskontrollen auf Funktionsebene

Da es für Angreifer so einfach ist, fehlende Sicherheitslücken bei der Zugriffskontrolle auf Funktionsebene auszunutzen, ist es wichtig, dass sie gefunden, behoben und verhindert werden. Zum Glück ist das mit etwas Fachwissen und einer grundlegenden Infrastruktur nicht allzu schwierig Schulung zur Codesicherheit.

Der Hauptschutz wird durch die Implementierung einer rollenbasierten Autorisierung auf Infrastrukturebene gewährleistet. Vertrauen Sie niemals darauf, dass Anwendungen diese Funktion ausführen. Selbst wenn dies der Fall ist, stellt eine infrastrukturseitige Autorisierung sicher, dass nichts übersehen wird. Idealerweise sollte die Autorisierung von einer zentralen Stelle aus erfolgen (z. B. AWS IAM, Azure IAM usw.), die in die Routine Ihres Unternehmens integriert ist und auf jede neue Anwendung angewendet wird. Diese Autorisierungsprozesse können vom Framework selbst oder aus einer beliebigen Anzahl benutzerfreundlicher externer Module stammen.

Schließlich sollte sich Ihr Unternehmen das Konzept der geringsten Privilegien zu eigen machen. Alle Aktionen und Funktionen sollten standardmäßig verweigert werden, wobei der Autorisierungsprozess verwendet wird, um gültigen Benutzern die Erlaubnis zu geben, alles zu tun, was sie benötigen. Sie sollten nur genügend Berechtigungen erhalten, um die erforderliche Funktion auszuführen, und zwar nur so lange wie erforderlich.

Fehlende Zugriffskontrollen auf Funktionsebene können verheerend sein. Aber glücklicherweise können Sie dieses Problem ganz einfach verhindern, indem Sie in Ihrem Unternehmen gute Autorisierungspraktiken auf Infrastrukturebene integrieren.

Denken Sie, Sie sind bereit, einen Zugangskontrollfehler in freier Wildbahn zu entdecken? Vergleichen Sie diese Docker-Codefragmente; einer ist verwundbar, einer sicher:


Verwundbar:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER root
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Sicher:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER niemand
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Erfahre mehr, fordere dich selbst heraus

Schauen Sie sich das an Sicherer Codekrieger Blogseiten mit weiteren Informationen zu dieser Sicherheitslücke und dazu, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken und Sicherheitslücken schützen können.

Und wenn du es früher verpasst hast, kannst du probieren Sie eine IaC Gamified Security Challenge aus auf der Secure Code Warrior-Plattform, um all Ihre Cybersicherheitsfähigkeiten zu verbessern und auf dem neuesten Stand zu halten.

Seien Sie gespannt auf das nächste Kapitel!

Webinar ansehen
Fangen Sie an
mehr erfahren

Klicken Sie auf den untenstehenden Link und laden Sie das PDF dieser Ressource herunter.

Secure Code Warrior für Ihr Unternehmen da, um Ihnen zu helfen, Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder jemand anderes sind, der sich mit Sicherheit befasst, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Bericht ansehenEine Demo buchen
Ressource anzeigen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Interessiert an mehr?

Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Matias Madou, Ph.D.
Veröffentlicht Mai 11, 2020

Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

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.

Teilen auf:
LinkedIn-MarkenSozialx Logo

Es ist Zeit für den nächsten Teil unserer Reihe „Infrastructure as Code“, die Blogs, die Entwickler wie Sie bei der Bereitstellung sicherer Infrastrukturen in Ihrem eigenen Unternehmen auf ein völlig neues Niveau des Sicherheitsbewusstseins heben werden.

Oh, übrigens... wie ist es Ihnen mit der Sicherheitsfehlkonfiguration im vorherigen Blog ergangen? Wenn Sie sofort eine Sicherheitslücke in der Zugriffskontrolle auf Funktionsebene beheben möchten, besuchen Sie die Plattform:

(Der obige Link führt Sie zur Kubernetes-Herausforderung, aber sobald Sie auf der Plattform sind, verwenden Sie das Drop-down-Menü, um auch zwischen Ansible, CloudFormation, Terraform oder Docker auszuwählen. Deine Wahl.)

Fast jede heute eingesetzte Anwendung verfügt über eine Art Zugriffskontrollmechanismus, der überprüft, ob ein Benutzer die Berechtigung hat, die angeforderten Funktionen auszuführen oder nicht. Dies ist so ziemlich der Eckpfeiler guter Sicherheit und Funktionalität bei der Erstellung einer Anwendung. Tatsächlich benötigen alle Webanwendungen Zugriffskontrollen, damit Benutzer mit unterschiedlichen Rechten das Programm verwenden können.

Probleme können jedoch auftreten, wenn dieselben Überprüfungsfunktionen für die Zugriffskontrolle nicht auf Infrastrukturebene ausgeführt werden oder falsch konfiguriert sind. Wenn die Zugriffskontrolle auf Infrastrukturebene nicht in einwandfreiem Zustand ist, ist ein ganzes Unternehmen Hackern ausgesetzt, die diese Sicherheitslücke als Einfallstor für unbefugtes Ausspionieren oder für einen vollständigen Angriff nutzen können.

Tatsächlich ist es extrem einfach, fehlende oder falsch konfigurierte Sicherheitslücken bei der Funktionskontrolle auszunutzen. Angreifer müssen nicht einmal übermäßig geschult sein. Sie müssen nur wissen, welche Befehle Funktionen innerhalb des Frameworks ausführen, das die Anwendung unterstützt. Wenn sie das tun, ist es nur eine Frage von Versuch und Irrtum. Sie können kontinuierlich Anfragen stellen, die nicht zugelassen werden sollten, und sobald eine solche Anfrage erfolgreich ist, könnte die Zielwebsite, die Anwendung, der Server oder sogar das gesamte Netzwerk gefährdet sein.

Wie funktionieren fehlende Zugriffskontroll-Exploits auf Funktionsebene?

Es gibt verschiedene Möglichkeiten, wie sich Zugriffskontrollen auf Funktionsebene in ein Unternehmen einschleichen können. Beispielsweise kann der Zugriff auf Funktionsebene einer Anwendung überlassen werden und nicht von der zugrunde liegenden Infrastruktur verifiziert werden. Oder die Zugriffskontrolle auf Infrastrukturebene kann falsch konfiguriert werden. In einigen Fällen gehen Administratoren davon aus, dass nicht autorisierte Benutzer nicht wissen, wie sie zu Infrastrukturressourcen gelangen, die nur für Benutzer auf höherer Ebene sichtbar sein sollten, und verwenden ein „Security by Obscurity“ -Modell, das selten funktioniert.

Ein Beispiel für Security by Obscurity: Die folgende URL ist wahrscheinlich anfällig für Angriffe:

http://companywebsite.com/app/NormalUserHomepage

Wenn ein authentifizierter Benutzer eine Technik namens Forced URL Browsing verwendet, könnte er versuchen, eine Seite zu erreichen, die nur Administratoren angezeigt wird. Ein Beispiel könnte sein:

http://companywebsite.com/app/AdminPages

Wenn keine serverseitige Überprüfung existiert, werden ihnen einfach die Admin-Seiten angezeigt (falls ihr Name mit der Anfrage übereinstimmt) und haben dann Zugriff auf alle zusätzlichen Funktionen, die Administratoren von der neuen Seite aus ausführen. Wenn der Server den Fehler „Seite nicht gefunden“ an den Angreifer zurückgibt, kann er es einfach so lange versuchen, bis er herausgefunden hat, welchen Namen die Admin-Seite erhalten hat.

Für Angreifer, Ausnutzen fehlende Zugriffskontrollen auf Funktionsebene ist ein ähnlicher Prozess. Anstatt zu versuchen, unautorisierte Seiten zu durchsuchen, senden sie stattdessen Funktionsanfragen ein. Beispielsweise könnten sie versuchen, einen neuen Benutzer mit Administratorrechten zu erstellen. Ihre Anfrage würde also je nach Framework ungefähr so aussehen:

Beitrag/Aktion/CreateUsername=Hacker&pw=password&role=admin

Wenn keine Zugriffskontrolle auf Funktionsebene vorhanden ist, wäre das obige Beispiel erfolgreich und ein neues Administratorkonto würde erstellt. Sobald sich der Angreifer wieder als neuer Administrator anmeldet, hätte er denselben Zugriff und dieselben Berechtigungen wie jeder andere Administrator in diesem Netzwerk oder Server.

Die Lösung für fehlende Zugriffskontrollen auf Funktionsebene

Da es für Angreifer so einfach ist, fehlende Sicherheitslücken bei der Zugriffskontrolle auf Funktionsebene auszunutzen, ist es wichtig, dass sie gefunden, behoben und verhindert werden. Zum Glück ist das mit etwas Fachwissen und einer grundlegenden Infrastruktur nicht allzu schwierig Schulung zur Codesicherheit.

Der Hauptschutz wird durch die Implementierung einer rollenbasierten Autorisierung auf Infrastrukturebene gewährleistet. Vertrauen Sie niemals darauf, dass Anwendungen diese Funktion ausführen. Selbst wenn dies der Fall ist, stellt eine infrastrukturseitige Autorisierung sicher, dass nichts übersehen wird. Idealerweise sollte die Autorisierung von einer zentralen Stelle aus erfolgen (z. B. AWS IAM, Azure IAM usw.), die in die Routine Ihres Unternehmens integriert ist und auf jede neue Anwendung angewendet wird. Diese Autorisierungsprozesse können vom Framework selbst oder aus einer beliebigen Anzahl benutzerfreundlicher externer Module stammen.

Schließlich sollte sich Ihr Unternehmen das Konzept der geringsten Privilegien zu eigen machen. Alle Aktionen und Funktionen sollten standardmäßig verweigert werden, wobei der Autorisierungsprozess verwendet wird, um gültigen Benutzern die Erlaubnis zu geben, alles zu tun, was sie benötigen. Sie sollten nur genügend Berechtigungen erhalten, um die erforderliche Funktion auszuführen, und zwar nur so lange wie erforderlich.

Fehlende Zugriffskontrollen auf Funktionsebene können verheerend sein. Aber glücklicherweise können Sie dieses Problem ganz einfach verhindern, indem Sie in Ihrem Unternehmen gute Autorisierungspraktiken auf Infrastrukturebene integrieren.

Denken Sie, Sie sind bereit, einen Zugangskontrollfehler in freier Wildbahn zu entdecken? Vergleichen Sie diese Docker-Codefragmente; einer ist verwundbar, einer sicher:


Verwundbar:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER root
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Sicher:

VON quay.io/prometheus/busybox:latest
ARG-VERSION = 0.12.1
ARG-Dateiname=mysqld_exporter-$ {VERSION} .linux-amd64
ARG URL= https://github.com/prometheus/mysqld_exporter/releases/download/v
RUN wget $URL$VERSION/$filename.tar.gz &&\
tar -xf $dateiname.tar.gz &&\
mv $Dateiname/mysqld_exporter /bin/mysqld_exporter
KOPIERE .my.cnf /home/.my.cnf
KOPIEREN. /scripts/entrypoint.sh ~/entrypoint.sh
BENUTZER niemand
AUSSETZEN 9104
EINSTIEGSPUNKT ["sh“, "~/entrypoint.sh"]
CMD [„/bin/mysqld_exporter“]

Erfahre mehr, fordere dich selbst heraus

Schauen Sie sich das an Sicherer Codekrieger Blogseiten mit weiteren Informationen zu dieser Sicherheitslücke und dazu, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken und Sicherheitslücken schützen können.

Und wenn du es früher verpasst hast, kannst du probieren Sie eine IaC Gamified Security Challenge aus auf der Secure Code Warrior-Plattform, um all Ihre Cybersicherheitsfähigkeiten zu verbessern und auf dem neuesten Stand zu halten.

Seien Sie gespannt auf das nächste Kapitel!

Inhaltsverzeichnis

PDF herunterladen
Ressource anzeigen
Interessiert an mehr?

Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

mehr erfahren

Secure Code Warrior für Ihr Unternehmen da, um Ihnen zu helfen, Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder jemand anderes sind, der sich mit Sicherheit befasst, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Eine Demo buchenHerunterladen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Ressourcen-Hub

Ressourcen für den Einstieg

Weitere Beiträge
Ressourcen-Hub

Ressourcen für den Einstieg

Weitere Beiträge