Wie man die Aufzählung von Benutzernamen vermeidet | Secure Code Warrior
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.
Bei der Aufzählung von Benutzernamen verwenden Hacker Brute-Force-Angriffe, um an Informationen über Benutzernamen und Passwörter zu gelangen. Erfahren Sie, wie Sie die Aufzählung von Benutzernamen mit Secure Code Warrior vermeiden können.
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
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 buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
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.
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.
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 buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
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.
Inhaltsübersicht
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
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.