SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

Comment éviter l'énumération des noms d'utilisateur | Secure Code Warrior

Pieter De Cremer
Veröffentlicht Okt 09, 2017
Zuletzt aktualisiert am 08. März 2026

Von einem Seitenkanalangriff spricht man, wenn ein Hacker Informationen aus der physischen Implementierung eines Softwaresystems gewinnen kann und nicht aus einer theoretischen Schwäche im Algorithmus oder einem Fehler im Code der Software.

Ein Beispiel, das ich gerne verwende, um dies zu verdeutlichen, ist eine Methode zur Aufzählung von Benutzernamen. Wenn Sie wissen möchten, was die Aufzählung von Benutzernamen ist oder warum sie schlecht ist, besuchen Sie unsere Website für eine Videoerklärung oder spielen Sie eine Herausforderung, um zu sehen, ob Sie sie im Code identifizieren können.

Um nun zu verstehen, wie die Aufzählung von Benutzernamen durch einen Seitenkanalangriff durchgeführt werden kann, müssen Sie ein gewisses Verständnis dafür haben, wie Kennwörter in modernen Webanwendungen gehandhabt werden (oder zumindest gehandhabt werden sollten). Eine gute Webanwendung kennt Ihr Kennwort nicht, sie speichert Ihr Kennwort nirgendwo. Woher weiß sie also, dass das, was Sie eingegeben haben, korrekt ist und tatsächlich Ihr Passwort ist? Nun, Ihr Passwort ist gehasht.

Eine Hash-Funktion ist eine mathematische Operation, die einfach in eine Richtung ausgeführt werden kann (obwohl sie etwas rechenintensiv ist), aber sehr schwer umkehrbar ist, und bei guten Hash-Algorithmen ist die Ausgabe abhängig von der Eingabe eindeutig. Wenn Sie sich auf einer Website anmelden, wird dieser Hash sicher gespeichert, nicht Ihr Passwort selbst. Das bedeutet, dass die Webanwendung jedes Mal, wenn Sie sich anmelden, Ihre Eingabe hasht und die gehashten Ergebnisse mit dem gespeicherten Hash vergleicht. Wenn Sie mehr über die sichere Speicherung von Passwörtern erfahren möchten, können Sie das auf unserer Plattform tun.

Das Hashing von Eingaben nimmt auf einem Computer einige Zeit in Anspruch und die Entwickler versuchen immer, alles, was sie schreiben, zu optimieren, damit die Benutzer eine reibungslose Erfahrung haben. Eine Sache, die das Programm beschleunigt, ist, das Hashing zu überspringen, wenn es nicht benötigt wird. Wenn zum Beispiel der Benutzername nicht existiert (und somit kein Passwort geprüft werden muss), können sie dem Benutzer sofort antworten. Auf diese Weise können sie die langsame Berechnung des Hashes für das Passwort überspringen. Wenn der Benutzername korrekt war, wird die Kennworteingabe gehasht und mit dem gespeicherten Hashwert verglichen.

An dieser Stelle haben Sie vielleicht schon erraten, wo es schief gehen kann. Auch wenn das Hashing in Wirklichkeit nur ein paar Millisekunden dauert, kann ein Hacker diese zusätzliche Verzögerung nutzen, um herauszufinden, ob der eingegebene Benutzername richtig war oder nicht, da ein falscher Benutzername eine etwas schnellere Antwort hat, weil kein Hashing durchgeführt wurde. Diese Art von Seitenkanalangriff wird als Timing-Angriff bezeichnet und ist ein gutes Beispiel dafür, wie verschiedene nicht-funktionale Anforderungen einander entgegenwirken können. Manchmal kann Code nicht gleichzeitig schnell und sicher sein.

Auch wenn die Kennwörter perfekt verarbeitet werden und die angezeigte Meldung generisch ist und nicht angibt, ob das Kennwort oder der Benutzername falsch war, ist das System also immer noch anfällig. Die Lösung ist einfach: Verschlüsseln Sie das Kennwort immer mit einem Hash-Wert oder verzögern Sie das Senden der Antwort um die Zeit, die für den Hash-Wert erforderlich wäre.

Die erhaltenen Informationen können von einem Angreifer verwendet werden, um eine Liste der Benutzer auf dem System zu erhalten. Diese Informationen können verwendet werden, um die Webanwendung anzugreifen, z. B. durch einen Brute-Force- oder Standard-Benutzername/Passwort-Angriff.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

Ressource anzeigen
Ressource anzeigen

L'énumération des noms d'utilisateur se produit lorsque les pirates informatiques utilisent des attaques par force brute pour obtenir des informations sur le nom d'utilisateur et le mot de passe. Découvrez comment éviter l'énumération des noms d'utilisateur avec Secure Code Warrior.

Möchten Sie mehr erfahren?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

mehr erfahren

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Pieter De Cremer
Veröffentlicht Okt 09, 2017

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Teilen auf:
LinkedIn-MarkenSozialx Logo

Von einem Seitenkanalangriff spricht man, wenn ein Hacker Informationen aus der physischen Implementierung eines Softwaresystems gewinnen kann und nicht aus einer theoretischen Schwäche im Algorithmus oder einem Fehler im Code der Software.

Ein Beispiel, das ich gerne verwende, um dies zu verdeutlichen, ist eine Methode zur Aufzählung von Benutzernamen. Wenn Sie wissen möchten, was die Aufzählung von Benutzernamen ist oder warum sie schlecht ist, besuchen Sie unsere Website für eine Videoerklärung oder spielen Sie eine Herausforderung, um zu sehen, ob Sie sie im Code identifizieren können.

Um nun zu verstehen, wie die Aufzählung von Benutzernamen durch einen Seitenkanalangriff durchgeführt werden kann, müssen Sie ein gewisses Verständnis dafür haben, wie Kennwörter in modernen Webanwendungen gehandhabt werden (oder zumindest gehandhabt werden sollten). Eine gute Webanwendung kennt Ihr Kennwort nicht, sie speichert Ihr Kennwort nirgendwo. Woher weiß sie also, dass das, was Sie eingegeben haben, korrekt ist und tatsächlich Ihr Passwort ist? Nun, Ihr Passwort ist gehasht.

Eine Hash-Funktion ist eine mathematische Operation, die einfach in eine Richtung ausgeführt werden kann (obwohl sie etwas rechenintensiv ist), aber sehr schwer umkehrbar ist, und bei guten Hash-Algorithmen ist die Ausgabe abhängig von der Eingabe eindeutig. Wenn Sie sich auf einer Website anmelden, wird dieser Hash sicher gespeichert, nicht Ihr Passwort selbst. Das bedeutet, dass die Webanwendung jedes Mal, wenn Sie sich anmelden, Ihre Eingabe hasht und die gehashten Ergebnisse mit dem gespeicherten Hash vergleicht. Wenn Sie mehr über die sichere Speicherung von Passwörtern erfahren möchten, können Sie das auf unserer Plattform tun.

Das Hashing von Eingaben nimmt auf einem Computer einige Zeit in Anspruch und die Entwickler versuchen immer, alles, was sie schreiben, zu optimieren, damit die Benutzer eine reibungslose Erfahrung haben. Eine Sache, die das Programm beschleunigt, ist, das Hashing zu überspringen, wenn es nicht benötigt wird. Wenn zum Beispiel der Benutzername nicht existiert (und somit kein Passwort geprüft werden muss), können sie dem Benutzer sofort antworten. Auf diese Weise können sie die langsame Berechnung des Hashes für das Passwort überspringen. Wenn der Benutzername korrekt war, wird die Kennworteingabe gehasht und mit dem gespeicherten Hashwert verglichen.

An dieser Stelle haben Sie vielleicht schon erraten, wo es schief gehen kann. Auch wenn das Hashing in Wirklichkeit nur ein paar Millisekunden dauert, kann ein Hacker diese zusätzliche Verzögerung nutzen, um herauszufinden, ob der eingegebene Benutzername richtig war oder nicht, da ein falscher Benutzername eine etwas schnellere Antwort hat, weil kein Hashing durchgeführt wurde. Diese Art von Seitenkanalangriff wird als Timing-Angriff bezeichnet und ist ein gutes Beispiel dafür, wie verschiedene nicht-funktionale Anforderungen einander entgegenwirken können. Manchmal kann Code nicht gleichzeitig schnell und sicher sein.

Auch wenn die Kennwörter perfekt verarbeitet werden und die angezeigte Meldung generisch ist und nicht angibt, ob das Kennwort oder der Benutzername falsch war, ist das System also immer noch anfällig. Die Lösung ist einfach: Verschlüsseln Sie das Kennwort immer mit einem Hash-Wert oder verzögern Sie das Senden der Antwort um die Zeit, die für den Hash-Wert erforderlich wäre.

Die erhaltenen Informationen können von einem Angreifer verwendet werden, um eine Liste der Benutzer auf dem System zu erhalten. Diese Informationen können verwendet werden, um die Webanwendung anzugreifen, z. B. durch einen Brute-Force- oder Standard-Benutzername/Passwort-Angriff.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

Ressource anzeigen
Ressource anzeigen

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

Wir möchten Ihre Einwilligung einholen, um Ihnen Informationen zu unseren Produkten und/oder zu Themen im Zusammenhang mit sicherer Verschlüsselung zuzusenden. Wir werden Ihre personenbezogenen Daten stets mit größter Sorgfalt behandeln und niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Einreichen
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular zu senden, aktivieren Sie bitte die „Analytics“-Cookies. Sie können diese nach Abschluss des Vorgangs wieder deaktivieren.

Von einem Seitenkanalangriff spricht man, wenn ein Hacker Informationen aus der physischen Implementierung eines Softwaresystems gewinnen kann und nicht aus einer theoretischen Schwäche im Algorithmus oder einem Fehler im Code der Software.

Ein Beispiel, das ich gerne verwende, um dies zu verdeutlichen, ist eine Methode zur Aufzählung von Benutzernamen. Wenn Sie wissen möchten, was die Aufzählung von Benutzernamen ist oder warum sie schlecht ist, besuchen Sie unsere Website für eine Videoerklärung oder spielen Sie eine Herausforderung, um zu sehen, ob Sie sie im Code identifizieren können.

Um nun zu verstehen, wie die Aufzählung von Benutzernamen durch einen Seitenkanalangriff durchgeführt werden kann, müssen Sie ein gewisses Verständnis dafür haben, wie Kennwörter in modernen Webanwendungen gehandhabt werden (oder zumindest gehandhabt werden sollten). Eine gute Webanwendung kennt Ihr Kennwort nicht, sie speichert Ihr Kennwort nirgendwo. Woher weiß sie also, dass das, was Sie eingegeben haben, korrekt ist und tatsächlich Ihr Passwort ist? Nun, Ihr Passwort ist gehasht.

Eine Hash-Funktion ist eine mathematische Operation, die einfach in eine Richtung ausgeführt werden kann (obwohl sie etwas rechenintensiv ist), aber sehr schwer umkehrbar ist, und bei guten Hash-Algorithmen ist die Ausgabe abhängig von der Eingabe eindeutig. Wenn Sie sich auf einer Website anmelden, wird dieser Hash sicher gespeichert, nicht Ihr Passwort selbst. Das bedeutet, dass die Webanwendung jedes Mal, wenn Sie sich anmelden, Ihre Eingabe hasht und die gehashten Ergebnisse mit dem gespeicherten Hash vergleicht. Wenn Sie mehr über die sichere Speicherung von Passwörtern erfahren möchten, können Sie das auf unserer Plattform tun.

Das Hashing von Eingaben nimmt auf einem Computer einige Zeit in Anspruch und die Entwickler versuchen immer, alles, was sie schreiben, zu optimieren, damit die Benutzer eine reibungslose Erfahrung haben. Eine Sache, die das Programm beschleunigt, ist, das Hashing zu überspringen, wenn es nicht benötigt wird. Wenn zum Beispiel der Benutzername nicht existiert (und somit kein Passwort geprüft werden muss), können sie dem Benutzer sofort antworten. Auf diese Weise können sie die langsame Berechnung des Hashes für das Passwort überspringen. Wenn der Benutzername korrekt war, wird die Kennworteingabe gehasht und mit dem gespeicherten Hashwert verglichen.

An dieser Stelle haben Sie vielleicht schon erraten, wo es schief gehen kann. Auch wenn das Hashing in Wirklichkeit nur ein paar Millisekunden dauert, kann ein Hacker diese zusätzliche Verzögerung nutzen, um herauszufinden, ob der eingegebene Benutzername richtig war oder nicht, da ein falscher Benutzername eine etwas schnellere Antwort hat, weil kein Hashing durchgeführt wurde. Diese Art von Seitenkanalangriff wird als Timing-Angriff bezeichnet und ist ein gutes Beispiel dafür, wie verschiedene nicht-funktionale Anforderungen einander entgegenwirken können. Manchmal kann Code nicht gleichzeitig schnell und sicher sein.

Auch wenn die Kennwörter perfekt verarbeitet werden und die angezeigte Meldung generisch ist und nicht angibt, ob das Kennwort oder der Benutzername falsch war, ist das System also immer noch anfällig. Die Lösung ist einfach: Verschlüsseln Sie das Kennwort immer mit einem Hash-Wert oder verzögern Sie das Senden der Antwort um die Zeit, die für den Hash-Wert erforderlich wäre.

Die erhaltenen Informationen können von einem Angreifer verwendet werden, um eine Liste der Benutzer auf dem System zu erhalten. Diese Informationen können verwendet werden, um die Webanwendung anzugreifen, z. B. durch einen Brute-Force- oder Standard-Benutzername/Passwort-Angriff.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

Webinar anzeigen
Beginnen Sie
mehr erfahren

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

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Bericht anzeigenDemo buchen
PDF herunterladen
Ressource anzeigen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Möchten Sie mehr erfahren?

Teilen auf:
LinkedIn-MarkenSozialx Logo
Autor
Pieter De Cremer
Veröffentlicht Okt 09, 2017

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

Teilen auf:
LinkedIn-MarkenSozialx Logo

Von einem Seitenkanalangriff spricht man, wenn ein Hacker Informationen aus der physischen Implementierung eines Softwaresystems gewinnen kann und nicht aus einer theoretischen Schwäche im Algorithmus oder einem Fehler im Code der Software.

Ein Beispiel, das ich gerne verwende, um dies zu verdeutlichen, ist eine Methode zur Aufzählung von Benutzernamen. Wenn Sie wissen möchten, was die Aufzählung von Benutzernamen ist oder warum sie schlecht ist, besuchen Sie unsere Website für eine Videoerklärung oder spielen Sie eine Herausforderung, um zu sehen, ob Sie sie im Code identifizieren können.

Um nun zu verstehen, wie die Aufzählung von Benutzernamen durch einen Seitenkanalangriff durchgeführt werden kann, müssen Sie ein gewisses Verständnis dafür haben, wie Kennwörter in modernen Webanwendungen gehandhabt werden (oder zumindest gehandhabt werden sollten). Eine gute Webanwendung kennt Ihr Kennwort nicht, sie speichert Ihr Kennwort nirgendwo. Woher weiß sie also, dass das, was Sie eingegeben haben, korrekt ist und tatsächlich Ihr Passwort ist? Nun, Ihr Passwort ist gehasht.

Eine Hash-Funktion ist eine mathematische Operation, die einfach in eine Richtung ausgeführt werden kann (obwohl sie etwas rechenintensiv ist), aber sehr schwer umkehrbar ist, und bei guten Hash-Algorithmen ist die Ausgabe abhängig von der Eingabe eindeutig. Wenn Sie sich auf einer Website anmelden, wird dieser Hash sicher gespeichert, nicht Ihr Passwort selbst. Das bedeutet, dass die Webanwendung jedes Mal, wenn Sie sich anmelden, Ihre Eingabe hasht und die gehashten Ergebnisse mit dem gespeicherten Hash vergleicht. Wenn Sie mehr über die sichere Speicherung von Passwörtern erfahren möchten, können Sie das auf unserer Plattform tun.

Das Hashing von Eingaben nimmt auf einem Computer einige Zeit in Anspruch und die Entwickler versuchen immer, alles, was sie schreiben, zu optimieren, damit die Benutzer eine reibungslose Erfahrung haben. Eine Sache, die das Programm beschleunigt, ist, das Hashing zu überspringen, wenn es nicht benötigt wird. Wenn zum Beispiel der Benutzername nicht existiert (und somit kein Passwort geprüft werden muss), können sie dem Benutzer sofort antworten. Auf diese Weise können sie die langsame Berechnung des Hashes für das Passwort überspringen. Wenn der Benutzername korrekt war, wird die Kennworteingabe gehasht und mit dem gespeicherten Hashwert verglichen.

An dieser Stelle haben Sie vielleicht schon erraten, wo es schief gehen kann. Auch wenn das Hashing in Wirklichkeit nur ein paar Millisekunden dauert, kann ein Hacker diese zusätzliche Verzögerung nutzen, um herauszufinden, ob der eingegebene Benutzername richtig war oder nicht, da ein falscher Benutzername eine etwas schnellere Antwort hat, weil kein Hashing durchgeführt wurde. Diese Art von Seitenkanalangriff wird als Timing-Angriff bezeichnet und ist ein gutes Beispiel dafür, wie verschiedene nicht-funktionale Anforderungen einander entgegenwirken können. Manchmal kann Code nicht gleichzeitig schnell und sicher sein.

Auch wenn die Kennwörter perfekt verarbeitet werden und die angezeigte Meldung generisch ist und nicht angibt, ob das Kennwort oder der Benutzername falsch war, ist das System also immer noch anfällig. Die Lösung ist einfach: Verschlüsseln Sie das Kennwort immer mit einem Hash-Wert oder verzögern Sie das Senden der Antwort um die Zeit, die für den Hash-Wert erforderlich wäre.

Die erhaltenen Informationen können von einem Angreifer verwendet werden, um eine Liste der Benutzer auf dem System zu erhalten. Diese Informationen können verwendet werden, um die Webanwendung anzugreifen, z. B. durch einen Brute-Force- oder Standard-Benutzername/Passwort-Angriff.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

Inhaltsverzeichnis

PDF herunterladen
Ressource anzeigen
Möchten Sie mehr erfahren?

Chercheur en sécurité des applications - Ingénieur R&D - Candidat au doctorat

mehr erfahren

Secure Code Warrior Ihr Unternehmen dabei, den Code während des gesamten Softwareentwicklungszyklus zu sichern und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie für die Anwendungssicherheit verantwortlich sind, Entwickler, IT-Sicherheitsbeauftragter oder in einer anderen Funktion im Bereich Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.

Demo buchenHerunterladen
Teilen auf:
LinkedIn-MarkenSozialx Logo
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge
Ressourcenzentrum

Ressourcen, die Ihnen den Einstieg erleichtern

Weitere Beiträge