Coders Conquer Security OWASP Top 10 API Series - Gebrochene Authentifizierung
Es ist kein Wunder, dass gebrochene Authentifizierung es auf die OWASP-Liste für API-Probleme geschafft hat - Authentifizierungsmechanismen sind notorisch schwierig korrekt zu implementieren. Außerdem haben Angreifer einen kleinen Vorteil, da die meisten Authentifizierungsherausforderungen von Natur aus für die Benutzer sichtbar sein müssen, was Angreifern die Möglichkeit gibt, sie zu studieren und nach Mustern oder Schwachstellen zu suchen, die sie ausnutzen können.
Da die Authentifizierung häufig als Tor zu einer Anwendung und möglicherweise auch zum restlichen Netzwerk fungiert, sind sie ein verlockendes Ziel für Angreifer. Wenn ein Authentifizierungsprozess fehlerhaft oder anfällig ist, besteht eine gute Chance, dass Angreifer diese Schwäche entdecken und ausnutzen.
In diesem Kapitel werden wir also lernen, wie man die bösen Jungs ausschaltet, wenn es um Authentifizierungsprobleme geht. Wenn Sie Ihre Fähigkeiten zuerst testen möchten, spielen Sie unsere spielerische Herausforderung:
Wollen Sie Ihr Ergebnis verbessern? Bleiben Sie bei mir, während wir es aufschlüsseln.
Was sind einige Beispiele für fehlerhafte oder falsch konfigurierte Authentifizierung?
Ein Beispiel, bei dem das Problem vielleicht nicht so offensichtlich ist, ist, wenn eine Authentifizierungsmethode anfällig für Credential Stuffing ist, also die Verwendung von Listen mit bekannten Benutzernamen und Passwörtern, um die Sicherheit zu umgehen. Selbst eine normalerweise sehr sichere Autorisierungsmethode, wie die Multifaktor-Authentifizierung, kann anfällig sein, wenn Anfragen nicht begrenzt, gedrosselt oder anderweitig überwacht werden.
Ein Angreifer könnte zum Beispiel eine Passwort-Wiederherstellungsanfrage auslösen, indem er eine POST-Anfrage an /api/system/verification-codes sendet und einen Benutzernamen im Anfragetext angibt. Wenn eine App eine SMS-Challenge verwendet, bei der ein sechsstelliger Code an das Telefon eines Benutzers gesendet wird, das Eingabefeld aber nicht begrenzt ist, kann die Anwendung in wenigen Minuten geknackt werden. Ein Angreifer muss einfach jede mögliche sechsstellige Kombination in die Anwendung senden, bis er die richtige trifft.
In diesem Szenario sieht es oberflächlich betrachtet so aus, als ob die Zwei-Faktor-Authentifizierung eine Anwendung sicher machen würde. Aber da die Benutzereingabe nicht ratenbegrenzt ist, ist die Authentifizierung fehlerhaft und angreifbar.
In einem anderen Beispiel könnte eine Anwendung verschlüsselte Benutzerobjekte als Authentifizierungs-Cookies verwenden. Wenn jedoch ein Angreifer mit Low-Level-Benutzerzugriff dieses Cookie mit Base64 dekodiert, könnte er herausfinden, wie das Cookie Sitzungen und Benutzer für die Anwendung definiert. Nach der Dekodierung könnte er zum Beispiel folgendes JSON sehen:
{
"username" : "ShadyGuy",
"role" : "user"
{
An diesem Punkt könnte der böswillige Benutzer seinen Benutzernamen, seine Rolle oder beides ändern. Er könnte ein anderer Benutzer mit einer höheren Berechtigungsstufe werden, indem er ein paar Werte ändert:
{
"username" : "GoodGuy",
"role" : "admin"
{
Wenn der Angreifer zu diesem Zeitpunkt die Informationen umkodiert und als Cookie-Wert einstellt, wird er im Wesentlichen zum neuen Benutzer mit einer höheren Berechtigungsstufe. Wenn keine Methoden vorhanden sind, um eine solche Änderung zu verhindern, besteht eine gute Chance, dass die Anwendung die Umwandlung akzeptiert.
Eliminieren von fehlerhafter oder falsch konfigurierter Authentifizierung
Wenn die Authentifizierung fehlschlägt, ist die Wahrscheinlichkeit groß, dass die Sicherheit in der gesamten Anwendung beeinträchtigt wird. Aber das Befolgen einiger wichtiger Richtlinien beim Codieren von Anwendungen kann dazu beitragen, dass alles sicher bleibt.
Zunächst einmal sollten Sie sicherstellen, dass überall dort, wo Benutzer auf Programmfunktionen zugreifen können, Authentifizierungsprüfungen vorhanden sind. Wenn die Authentifizierungsprüfung überhaupt nicht vorhanden ist, dann ist die Schlacht von vornherein verloren.
In Bezug auf Best Practices ist eine gute Sache, die man im Hinterkopf behalten sollte, zu vermeiden, dass Sitzungs-IDs in der URL, die für Benutzer zugänglich ist, offengelegt werden. Im zweiten Beispiel oben bezüglich der gebrochenen Authentifizierung ist es viel einfacher, einen Angreifer davon abzuhalten, zu versuchen, das Sitzungs-Cookie zu entschlüsseln, wenn es ihm niemals offengelegt wird.
Es ist auch eine gute Idee, eine Multifaktor-Authentifizierung zu implementieren. Dies kann sicher mit Hardware-Tokens erfolgen, die Passwörter nach einem festen Zeitplan algorithmisch generieren. Wenn Sie Ihren Benutzern solche Geräte nicht zur Verfügung stellen können, können auch SMS-Textnachrichten funktionieren. Sie müssen jedoch sicherstellen, dass die Benutzeranfragen auf etwas Vernünftiges wie drei oder vier Versuche in einem Zeitraum von 30 Sekunden beschränkt sind und dass die Codes insgesamt nach wenigen Minuten ablaufen. Die Verwendung eines alphanumerischen Codes kann auch die Sicherheit erhöhen, indem Buchstaben und Zahlen zu potenziellen Passwörtern hinzugefügt werden.
Vermeiden Sie schließlich nach Möglichkeit die Abhängigkeit von Benutzernamen oder vorhersehbaren sequentiellen Werten als Sitzungs-IDs. Verwenden Sie stattdessen einen sicheren serverseitigen Sitzungsmanager, der jedes Mal eine zufällige Sitzungs-ID erzeugt.
Die Implementierung sicherer Authentifizierungsmethoden ist ein wenig kniffliger als die Bekämpfung einer durchschnittlichen Schwachstelle. Aber da die Autorisierung für jede Anwendung, jedes Programm und jede API so wichtig ist, lohnt es sich, sich extra Zeit zu nehmen, um sicherzustellen, dass Sie es richtig machen.
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.
Die Authentifizierung fungiert oft als Tor sowohl zu einer Anwendung als auch potenziell zum Rest eines Netzwerks, sodass sie ein verlockendes Ziel für Angreifer darstellt. Wenn ein Authentifizierungsprozess fehlerhaft oder anfällig ist, besteht eine gute Chance, dass Angreifer diese Schwäche entdecken und ausnutzen.
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.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenMatias 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.
Es ist kein Wunder, dass gebrochene Authentifizierung es auf die OWASP-Liste für API-Probleme geschafft hat - Authentifizierungsmechanismen sind notorisch schwierig korrekt zu implementieren. Außerdem haben Angreifer einen kleinen Vorteil, da die meisten Authentifizierungsherausforderungen von Natur aus für die Benutzer sichtbar sein müssen, was Angreifern die Möglichkeit gibt, sie zu studieren und nach Mustern oder Schwachstellen zu suchen, die sie ausnutzen können.
Da die Authentifizierung häufig als Tor zu einer Anwendung und möglicherweise auch zum restlichen Netzwerk fungiert, sind sie ein verlockendes Ziel für Angreifer. Wenn ein Authentifizierungsprozess fehlerhaft oder anfällig ist, besteht eine gute Chance, dass Angreifer diese Schwäche entdecken und ausnutzen.
In diesem Kapitel werden wir also lernen, wie man die bösen Jungs ausschaltet, wenn es um Authentifizierungsprobleme geht. Wenn Sie Ihre Fähigkeiten zuerst testen möchten, spielen Sie unsere spielerische Herausforderung:
Wollen Sie Ihr Ergebnis verbessern? Bleiben Sie bei mir, während wir es aufschlüsseln.
Was sind einige Beispiele für fehlerhafte oder falsch konfigurierte Authentifizierung?
Ein Beispiel, bei dem das Problem vielleicht nicht so offensichtlich ist, ist, wenn eine Authentifizierungsmethode anfällig für Credential Stuffing ist, also die Verwendung von Listen mit bekannten Benutzernamen und Passwörtern, um die Sicherheit zu umgehen. Selbst eine normalerweise sehr sichere Autorisierungsmethode, wie die Multifaktor-Authentifizierung, kann anfällig sein, wenn Anfragen nicht begrenzt, gedrosselt oder anderweitig überwacht werden.
Ein Angreifer könnte zum Beispiel eine Passwort-Wiederherstellungsanfrage auslösen, indem er eine POST-Anfrage an /api/system/verification-codes sendet und einen Benutzernamen im Anfragetext angibt. Wenn eine App eine SMS-Challenge verwendet, bei der ein sechsstelliger Code an das Telefon eines Benutzers gesendet wird, das Eingabefeld aber nicht begrenzt ist, kann die Anwendung in wenigen Minuten geknackt werden. Ein Angreifer muss einfach jede mögliche sechsstellige Kombination in die Anwendung senden, bis er die richtige trifft.
In diesem Szenario sieht es oberflächlich betrachtet so aus, als ob die Zwei-Faktor-Authentifizierung eine Anwendung sicher machen würde. Aber da die Benutzereingabe nicht ratenbegrenzt ist, ist die Authentifizierung fehlerhaft und angreifbar.
In einem anderen Beispiel könnte eine Anwendung verschlüsselte Benutzerobjekte als Authentifizierungs-Cookies verwenden. Wenn jedoch ein Angreifer mit Low-Level-Benutzerzugriff dieses Cookie mit Base64 dekodiert, könnte er herausfinden, wie das Cookie Sitzungen und Benutzer für die Anwendung definiert. Nach der Dekodierung könnte er zum Beispiel folgendes JSON sehen:
{
"username" : "ShadyGuy",
"role" : "user"
{
An diesem Punkt könnte der böswillige Benutzer seinen Benutzernamen, seine Rolle oder beides ändern. Er könnte ein anderer Benutzer mit einer höheren Berechtigungsstufe werden, indem er ein paar Werte ändert:
{
"username" : "GoodGuy",
"role" : "admin"
{
Wenn der Angreifer zu diesem Zeitpunkt die Informationen umkodiert und als Cookie-Wert einstellt, wird er im Wesentlichen zum neuen Benutzer mit einer höheren Berechtigungsstufe. Wenn keine Methoden vorhanden sind, um eine solche Änderung zu verhindern, besteht eine gute Chance, dass die Anwendung die Umwandlung akzeptiert.
Eliminieren von fehlerhafter oder falsch konfigurierter Authentifizierung
Wenn die Authentifizierung fehlschlägt, ist die Wahrscheinlichkeit groß, dass die Sicherheit in der gesamten Anwendung beeinträchtigt wird. Aber das Befolgen einiger wichtiger Richtlinien beim Codieren von Anwendungen kann dazu beitragen, dass alles sicher bleibt.
Zunächst einmal sollten Sie sicherstellen, dass überall dort, wo Benutzer auf Programmfunktionen zugreifen können, Authentifizierungsprüfungen vorhanden sind. Wenn die Authentifizierungsprüfung überhaupt nicht vorhanden ist, dann ist die Schlacht von vornherein verloren.
In Bezug auf Best Practices ist eine gute Sache, die man im Hinterkopf behalten sollte, zu vermeiden, dass Sitzungs-IDs in der URL, die für Benutzer zugänglich ist, offengelegt werden. Im zweiten Beispiel oben bezüglich der gebrochenen Authentifizierung ist es viel einfacher, einen Angreifer davon abzuhalten, zu versuchen, das Sitzungs-Cookie zu entschlüsseln, wenn es ihm niemals offengelegt wird.
Es ist auch eine gute Idee, eine Multifaktor-Authentifizierung zu implementieren. Dies kann sicher mit Hardware-Tokens erfolgen, die Passwörter nach einem festen Zeitplan algorithmisch generieren. Wenn Sie Ihren Benutzern solche Geräte nicht zur Verfügung stellen können, können auch SMS-Textnachrichten funktionieren. Sie müssen jedoch sicherstellen, dass die Benutzeranfragen auf etwas Vernünftiges wie drei oder vier Versuche in einem Zeitraum von 30 Sekunden beschränkt sind und dass die Codes insgesamt nach wenigen Minuten ablaufen. Die Verwendung eines alphanumerischen Codes kann auch die Sicherheit erhöhen, indem Buchstaben und Zahlen zu potenziellen Passwörtern hinzugefügt werden.
Vermeiden Sie schließlich nach Möglichkeit die Abhängigkeit von Benutzernamen oder vorhersehbaren sequentiellen Werten als Sitzungs-IDs. Verwenden Sie stattdessen einen sicheren serverseitigen Sitzungsmanager, der jedes Mal eine zufällige Sitzungs-ID erzeugt.
Die Implementierung sicherer Authentifizierungsmethoden ist ein wenig kniffliger als die Bekämpfung einer durchschnittlichen Schwachstelle. Aber da die Autorisierung für jede Anwendung, jedes Programm und jede API so wichtig ist, lohnt es sich, sich extra Zeit zu nehmen, um sicherzustellen, dass Sie es richtig machen.
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.
Es ist kein Wunder, dass gebrochene Authentifizierung es auf die OWASP-Liste für API-Probleme geschafft hat - Authentifizierungsmechanismen sind notorisch schwierig korrekt zu implementieren. Außerdem haben Angreifer einen kleinen Vorteil, da die meisten Authentifizierungsherausforderungen von Natur aus für die Benutzer sichtbar sein müssen, was Angreifern die Möglichkeit gibt, sie zu studieren und nach Mustern oder Schwachstellen zu suchen, die sie ausnutzen können.
Da die Authentifizierung häufig als Tor zu einer Anwendung und möglicherweise auch zum restlichen Netzwerk fungiert, sind sie ein verlockendes Ziel für Angreifer. Wenn ein Authentifizierungsprozess fehlerhaft oder anfällig ist, besteht eine gute Chance, dass Angreifer diese Schwäche entdecken und ausnutzen.
In diesem Kapitel werden wir also lernen, wie man die bösen Jungs ausschaltet, wenn es um Authentifizierungsprobleme geht. Wenn Sie Ihre Fähigkeiten zuerst testen möchten, spielen Sie unsere spielerische Herausforderung:
Wollen Sie Ihr Ergebnis verbessern? Bleiben Sie bei mir, während wir es aufschlüsseln.
Was sind einige Beispiele für fehlerhafte oder falsch konfigurierte Authentifizierung?
Ein Beispiel, bei dem das Problem vielleicht nicht so offensichtlich ist, ist, wenn eine Authentifizierungsmethode anfällig für Credential Stuffing ist, also die Verwendung von Listen mit bekannten Benutzernamen und Passwörtern, um die Sicherheit zu umgehen. Selbst eine normalerweise sehr sichere Autorisierungsmethode, wie die Multifaktor-Authentifizierung, kann anfällig sein, wenn Anfragen nicht begrenzt, gedrosselt oder anderweitig überwacht werden.
Ein Angreifer könnte zum Beispiel eine Passwort-Wiederherstellungsanfrage auslösen, indem er eine POST-Anfrage an /api/system/verification-codes sendet und einen Benutzernamen im Anfragetext angibt. Wenn eine App eine SMS-Challenge verwendet, bei der ein sechsstelliger Code an das Telefon eines Benutzers gesendet wird, das Eingabefeld aber nicht begrenzt ist, kann die Anwendung in wenigen Minuten geknackt werden. Ein Angreifer muss einfach jede mögliche sechsstellige Kombination in die Anwendung senden, bis er die richtige trifft.
In diesem Szenario sieht es oberflächlich betrachtet so aus, als ob die Zwei-Faktor-Authentifizierung eine Anwendung sicher machen würde. Aber da die Benutzereingabe nicht ratenbegrenzt ist, ist die Authentifizierung fehlerhaft und angreifbar.
In einem anderen Beispiel könnte eine Anwendung verschlüsselte Benutzerobjekte als Authentifizierungs-Cookies verwenden. Wenn jedoch ein Angreifer mit Low-Level-Benutzerzugriff dieses Cookie mit Base64 dekodiert, könnte er herausfinden, wie das Cookie Sitzungen und Benutzer für die Anwendung definiert. Nach der Dekodierung könnte er zum Beispiel folgendes JSON sehen:
{
"username" : "ShadyGuy",
"role" : "user"
{
An diesem Punkt könnte der böswillige Benutzer seinen Benutzernamen, seine Rolle oder beides ändern. Er könnte ein anderer Benutzer mit einer höheren Berechtigungsstufe werden, indem er ein paar Werte ändert:
{
"username" : "GoodGuy",
"role" : "admin"
{
Wenn der Angreifer zu diesem Zeitpunkt die Informationen umkodiert und als Cookie-Wert einstellt, wird er im Wesentlichen zum neuen Benutzer mit einer höheren Berechtigungsstufe. Wenn keine Methoden vorhanden sind, um eine solche Änderung zu verhindern, besteht eine gute Chance, dass die Anwendung die Umwandlung akzeptiert.
Eliminieren von fehlerhafter oder falsch konfigurierter Authentifizierung
Wenn die Authentifizierung fehlschlägt, ist die Wahrscheinlichkeit groß, dass die Sicherheit in der gesamten Anwendung beeinträchtigt wird. Aber das Befolgen einiger wichtiger Richtlinien beim Codieren von Anwendungen kann dazu beitragen, dass alles sicher bleibt.
Zunächst einmal sollten Sie sicherstellen, dass überall dort, wo Benutzer auf Programmfunktionen zugreifen können, Authentifizierungsprüfungen vorhanden sind. Wenn die Authentifizierungsprüfung überhaupt nicht vorhanden ist, dann ist die Schlacht von vornherein verloren.
In Bezug auf Best Practices ist eine gute Sache, die man im Hinterkopf behalten sollte, zu vermeiden, dass Sitzungs-IDs in der URL, die für Benutzer zugänglich ist, offengelegt werden. Im zweiten Beispiel oben bezüglich der gebrochenen Authentifizierung ist es viel einfacher, einen Angreifer davon abzuhalten, zu versuchen, das Sitzungs-Cookie zu entschlüsseln, wenn es ihm niemals offengelegt wird.
Es ist auch eine gute Idee, eine Multifaktor-Authentifizierung zu implementieren. Dies kann sicher mit Hardware-Tokens erfolgen, die Passwörter nach einem festen Zeitplan algorithmisch generieren. Wenn Sie Ihren Benutzern solche Geräte nicht zur Verfügung stellen können, können auch SMS-Textnachrichten funktionieren. Sie müssen jedoch sicherstellen, dass die Benutzeranfragen auf etwas Vernünftiges wie drei oder vier Versuche in einem Zeitraum von 30 Sekunden beschränkt sind und dass die Codes insgesamt nach wenigen Minuten ablaufen. Die Verwendung eines alphanumerischen Codes kann auch die Sicherheit erhöhen, indem Buchstaben und Zahlen zu potenziellen Passwörtern hinzugefügt werden.
Vermeiden Sie schließlich nach Möglichkeit die Abhängigkeit von Benutzernamen oder vorhersehbaren sequentiellen Werten als Sitzungs-IDs. Verwenden Sie stattdessen einen sicheren serverseitigen Sitzungsmanager, der jedes Mal eine zufällige Sitzungs-ID erzeugt.
Die Implementierung sicherer Authentifizierungsmethoden ist ein wenig kniffliger als die Bekämpfung einer durchschnittlichen Schwachstelle. Aber da die Autorisierung für jede Anwendung, jedes Programm und jede API so wichtig ist, lohnt es sich, sich extra Zeit zu nehmen, um sicherzustellen, dass Sie es richtig machen.
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.
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenMatias 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.
Es ist kein Wunder, dass gebrochene Authentifizierung es auf die OWASP-Liste für API-Probleme geschafft hat - Authentifizierungsmechanismen sind notorisch schwierig korrekt zu implementieren. Außerdem haben Angreifer einen kleinen Vorteil, da die meisten Authentifizierungsherausforderungen von Natur aus für die Benutzer sichtbar sein müssen, was Angreifern die Möglichkeit gibt, sie zu studieren und nach Mustern oder Schwachstellen zu suchen, die sie ausnutzen können.
Da die Authentifizierung häufig als Tor zu einer Anwendung und möglicherweise auch zum restlichen Netzwerk fungiert, sind sie ein verlockendes Ziel für Angreifer. Wenn ein Authentifizierungsprozess fehlerhaft oder anfällig ist, besteht eine gute Chance, dass Angreifer diese Schwäche entdecken und ausnutzen.
In diesem Kapitel werden wir also lernen, wie man die bösen Jungs ausschaltet, wenn es um Authentifizierungsprobleme geht. Wenn Sie Ihre Fähigkeiten zuerst testen möchten, spielen Sie unsere spielerische Herausforderung:
Wollen Sie Ihr Ergebnis verbessern? Bleiben Sie bei mir, während wir es aufschlüsseln.
Was sind einige Beispiele für fehlerhafte oder falsch konfigurierte Authentifizierung?
Ein Beispiel, bei dem das Problem vielleicht nicht so offensichtlich ist, ist, wenn eine Authentifizierungsmethode anfällig für Credential Stuffing ist, also die Verwendung von Listen mit bekannten Benutzernamen und Passwörtern, um die Sicherheit zu umgehen. Selbst eine normalerweise sehr sichere Autorisierungsmethode, wie die Multifaktor-Authentifizierung, kann anfällig sein, wenn Anfragen nicht begrenzt, gedrosselt oder anderweitig überwacht werden.
Ein Angreifer könnte zum Beispiel eine Passwort-Wiederherstellungsanfrage auslösen, indem er eine POST-Anfrage an /api/system/verification-codes sendet und einen Benutzernamen im Anfragetext angibt. Wenn eine App eine SMS-Challenge verwendet, bei der ein sechsstelliger Code an das Telefon eines Benutzers gesendet wird, das Eingabefeld aber nicht begrenzt ist, kann die Anwendung in wenigen Minuten geknackt werden. Ein Angreifer muss einfach jede mögliche sechsstellige Kombination in die Anwendung senden, bis er die richtige trifft.
In diesem Szenario sieht es oberflächlich betrachtet so aus, als ob die Zwei-Faktor-Authentifizierung eine Anwendung sicher machen würde. Aber da die Benutzereingabe nicht ratenbegrenzt ist, ist die Authentifizierung fehlerhaft und angreifbar.
In einem anderen Beispiel könnte eine Anwendung verschlüsselte Benutzerobjekte als Authentifizierungs-Cookies verwenden. Wenn jedoch ein Angreifer mit Low-Level-Benutzerzugriff dieses Cookie mit Base64 dekodiert, könnte er herausfinden, wie das Cookie Sitzungen und Benutzer für die Anwendung definiert. Nach der Dekodierung könnte er zum Beispiel folgendes JSON sehen:
{
"username" : "ShadyGuy",
"role" : "user"
{
An diesem Punkt könnte der böswillige Benutzer seinen Benutzernamen, seine Rolle oder beides ändern. Er könnte ein anderer Benutzer mit einer höheren Berechtigungsstufe werden, indem er ein paar Werte ändert:
{
"username" : "GoodGuy",
"role" : "admin"
{
Wenn der Angreifer zu diesem Zeitpunkt die Informationen umkodiert und als Cookie-Wert einstellt, wird er im Wesentlichen zum neuen Benutzer mit einer höheren Berechtigungsstufe. Wenn keine Methoden vorhanden sind, um eine solche Änderung zu verhindern, besteht eine gute Chance, dass die Anwendung die Umwandlung akzeptiert.
Eliminieren von fehlerhafter oder falsch konfigurierter Authentifizierung
Wenn die Authentifizierung fehlschlägt, ist die Wahrscheinlichkeit groß, dass die Sicherheit in der gesamten Anwendung beeinträchtigt wird. Aber das Befolgen einiger wichtiger Richtlinien beim Codieren von Anwendungen kann dazu beitragen, dass alles sicher bleibt.
Zunächst einmal sollten Sie sicherstellen, dass überall dort, wo Benutzer auf Programmfunktionen zugreifen können, Authentifizierungsprüfungen vorhanden sind. Wenn die Authentifizierungsprüfung überhaupt nicht vorhanden ist, dann ist die Schlacht von vornherein verloren.
In Bezug auf Best Practices ist eine gute Sache, die man im Hinterkopf behalten sollte, zu vermeiden, dass Sitzungs-IDs in der URL, die für Benutzer zugänglich ist, offengelegt werden. Im zweiten Beispiel oben bezüglich der gebrochenen Authentifizierung ist es viel einfacher, einen Angreifer davon abzuhalten, zu versuchen, das Sitzungs-Cookie zu entschlüsseln, wenn es ihm niemals offengelegt wird.
Es ist auch eine gute Idee, eine Multifaktor-Authentifizierung zu implementieren. Dies kann sicher mit Hardware-Tokens erfolgen, die Passwörter nach einem festen Zeitplan algorithmisch generieren. Wenn Sie Ihren Benutzern solche Geräte nicht zur Verfügung stellen können, können auch SMS-Textnachrichten funktionieren. Sie müssen jedoch sicherstellen, dass die Benutzeranfragen auf etwas Vernünftiges wie drei oder vier Versuche in einem Zeitraum von 30 Sekunden beschränkt sind und dass die Codes insgesamt nach wenigen Minuten ablaufen. Die Verwendung eines alphanumerischen Codes kann auch die Sicherheit erhöhen, indem Buchstaben und Zahlen zu potenziellen Passwörtern hinzugefügt werden.
Vermeiden Sie schließlich nach Möglichkeit die Abhängigkeit von Benutzernamen oder vorhersehbaren sequentiellen Werten als Sitzungs-IDs. Verwenden Sie stattdessen einen sicheren serverseitigen Sitzungsmanager, der jedes Mal eine zufällige Sitzungs-ID erzeugt.
Die Implementierung sicherer Authentifizierungsmethoden ist ein wenig kniffliger als die Bekämpfung einer durchschnittlichen Schwachstelle. Aber da die Autorisierung für jede Anwendung, jedes Programm und jede API so wichtig ist, lohnt es sich, sich extra Zeit zu nehmen, um sicherzustellen, dass Sie es richtig machen.
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.
Inhaltsübersicht
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.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
DigitalOcean verringert Sicherheitsverschuldung mit Secure Code Warrior
DigitalOceans Einsatz von Secure Code Warrior hat die Sicherheitsverschuldung deutlich reduziert, so dass sich die Teams stärker auf Innovation und Produktivität konzentrieren können. Die verbesserte Sicherheit hat die Produktqualität und den Wettbewerbsvorteil des Unternehmens gestärkt. Mit Blick auf die Zukunft wird der SCW Trust Score dem Unternehmen helfen, seine Sicherheitspraktiken weiter zu verbessern und Innovationen voranzutreiben.
Ressourcen für den Einstieg
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.
Die Vorteile eines Benchmarking der Sicherheitskompetenzen von Entwicklern
Der zunehmende Fokus auf sicheren Code und Secure-by-Design-Prinzipien erfordert, dass Entwickler von Beginn des SDLC an in Cybersicherheit geschult werden, wobei Tools wie Secure Code Warrior's Trust Score dabei helfen, ihre Fortschritte zu messen und zu verbessern.
Wesentlicher Erfolg für Enterprise Secure-by-Design-Initiativen
Unser jüngstes Forschungspapier „Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise“ ist das Ergebnis einer umfassenden Analyse echter Secure-by-Design-Initiativen auf Unternehmensebene und der Ableitung von Best-Practice-Ansätzen auf Grundlage datengesteuerter Erkenntnisse.