SCW 아이콘
영웅 배경, 구분선 없음
블로그

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

마티아스 마두, Ph.
2020년 5월 11일 게시
마지막 업데이트: 2026년 3월 9일

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!

리소스 보기
리소스 보기

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.

더 알고 싶으신가요?

Matias Madou, Ph.D. ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent in Anwendungssicherheit mit Schwerpunkt auf statischen Analyselösungen. Später kam er zu Fortify in den USA, wo er feststellte, dass es nicht ausreichte, ausschließlich Codeprobleme zu erkennen, ohne Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, die Sicherheitslast verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht als Teil von Team Awesome an seinem Schreibtisch sitzt, steht er gerne auf der Bühne und präsentiert auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

더 알아보세요

Secure Code Warrior 소프트웨어 개발 주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 귀사를 Secure Code Warrior . 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 담당하는 분이라면 누구든, 저희는 귀사가 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

데모 예약하기
공유하기:
링크드인 브랜드사회적x 로고
저자
마티아스 마두, Ph.
게시일: 2020년 5월 11일

Matias Madou, Ph.D. ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent in Anwendungssicherheit mit Schwerpunkt auf statischen Analyselösungen. Später kam er zu Fortify in den USA, wo er feststellte, dass es nicht ausreichte, ausschließlich Codeprobleme zu erkennen, ohne Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, die Sicherheitslast verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht als Teil von Team Awesome an seinem Schreibtisch sitzt, steht er gerne auf der Bühne und präsentiert auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

Matias ist Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung in 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 verfügt über mehr als 10 Patente. Wenn er nicht an seinem Schreibtisch ist, war Matias als Ausbilder für fortgeschrittene Schulungen zur Anwendungssicherheit 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 an der Universität Gent in Computertechnik promoviert, wo er Anwendungssicherheit durch Programmverschleierung studierte, um das Innenleben einer Anwendung zu verbergen.

공유하기:
링크드인 브랜드사회적x 로고

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!

리소스 보기
리소스 보기

아래 양식을 작성하여 보고서를 다운로드하십시오.

귀하의 허락을 받아 당사 제품 및 안전한 코딩과 관련된 주제에 대한 정보를 보내드리고자 합니다. 당사는 귀하의 개인정보를 항상 세심하게 처리하며, 마케팅 목적으로 타사에 판매하지 않습니다.

제출
scw 성공 아이콘
scw 오류 아이콘
양식을 제출하려면 '분석' 쿠키를 활성화해 주십시오. 완료 후에는 언제든지 다시 비활성화할 수 있습니다.

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!

웨비나 시청하기
시작하세요
더 알아보세요

아래 링크를 클릭하여 이 자료의 PDF를 다운로드하십시오.

Secure Code Warrior 소프트웨어 개발 주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 귀사를 Secure Code Warrior . 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 담당하는 분이라면 누구든, 저희는 귀사가 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

보고서 보기데모 예약하기
리소스 보기
공유하기:
링크드인 브랜드사회적x 로고
더 알고 싶으신가요?

공유하기:
링크드인 브랜드사회적x 로고
저자
마티아스 마두, Ph.
게시일: 2020년 5월 11일

Matias Madou, Ph.D. ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent in Anwendungssicherheit mit Schwerpunkt auf statischen Analyselösungen. Später kam er zu Fortify in den USA, wo er feststellte, dass es nicht ausreichte, ausschließlich Codeprobleme zu erkennen, ohne Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, die Sicherheitslast verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht als Teil von Team Awesome an seinem Schreibtisch sitzt, steht er gerne auf der Bühne und präsentiert auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

Matias ist Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung in 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 verfügt über mehr als 10 Patente. Wenn er nicht an seinem Schreibtisch ist, war Matias als Ausbilder für fortgeschrittene Schulungen zur Anwendungssicherheit 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 an der Universität Gent in Computertechnik promoviert, wo er Anwendungssicherheit durch Programmverschleierung studierte, um das Innenleben einer Anwendung zu verbergen.

공유하기:
링크드인 브랜드사회적x 로고

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!

목차

PDF 다운로드
리소스 보기
더 알고 싶으신가요?

Matias Madou, Ph.D. ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent in Anwendungssicherheit mit Schwerpunkt auf statischen Analyselösungen. Später kam er zu Fortify in den USA, wo er feststellte, dass es nicht ausreichte, ausschließlich Codeprobleme zu erkennen, ohne Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, die Sicherheitslast verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht als Teil von Team Awesome an seinem Schreibtisch sitzt, steht er gerne auf der Bühne und präsentiert auf Konferenzen wie der RSA Conference, BlackHat und DefCon.

더 알아보세요

Secure Code Warrior 소프트웨어 개발 주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 귀사를 Secure Code Warrior . 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 담당하는 분이라면 누구든, 저희는 귀사가 안전하지 않은 코드로 인한 위험을 줄일 수 있도록 돕습니다.

데모 예약하기다운로드
공유하기:
링크드인 브랜드사회적x 로고
자원 허브

시작을 위한 자료

더 많은 글
자원 허브

시작을 위한 자료

더 많은 글