Blog

Coders Conquer Security: Share & Learn Series - Schwachstellen in der Sitzungsverwaltung

Jaap Karan Singh
Veröffentlicht Jan 31, 2019

Sie navigieren zu einer Website und melden sich an. Wie gewohnt füllen Sie Ihren Warenkorb mit Produkten, die Sie kaufen möchten. Dann, schwupps - rutscht Ihnen die Hand ab und Sie schließen den Browser-Tab. Nach einer kleinen Panik geben Sie die URL der Seite wieder in den Browser ein und drücken die "Enter"-Taste. Sie werden zurück auf die Seite gebracht, sind eingeloggt und alle Artikel befinden sich noch im Warenkorb. Uff.

Woher wusste die Website, wer Sie waren, ohne sich erneut zu authentifizieren? Sie hat Sie identifiziert, weil sie Sitzungen verwendet hat. Sitzungen sind der Schlüssel zu einem guten Benutzererlebnis bei der Nutzung des Internets. Die falsche Verwaltung von Sitzungen kann jedoch zu Sicherheitslücken führen, die Angreifer ausnutzen können.

Lassen Sie uns nun überprüfen, was Sitzungsverwaltung bedeutet, wie eine schwache Sitzungsverwaltung Ihnen schaden kann und was Sie tun können, um Sitzungen richtig zu verwalten.

Schwachstellen im Session Management verstehen

Eine Sitzung bezieht sich auf einen auf dem Server gespeicherten Wert, der für einen einzelnen Benutzer der Anwendung spezifisch ist. Dies ist aus zwei Gründen notwendig: Erstens: HTTP ist ein zustandsloses Protokoll. Jede Anfrage ist separat und hat keine Kenntnis von Anfragen, die vor oder nach ihr gekommen sind. Eine Sitzung hilft dem Server zu verfolgen, wer die Anfrage gesendet hat. Andernfalls müssten Sie sich jedes Mal anmelden, wenn Sie auf eine Schaltfläche oder einen Link klicken.

Der zweite Grund für Sitzungen ist die Autorisierung des Benutzers. Die Sitzungskennung kann verwendet werden, um einen bestimmten Benutzer mit bestimmten Rechten innerhalb des Systems zu erkennen. Die Anwendung weiß dann, wer die Person ist und was sie tun darf.

Eine Sitzung besteht aus zwei Komponenten. Ein Datenspeicher auf der Serverseite speichert einen Sitzungsbezeichner und ordnet ihn Informationen über den Benutzer zu, wie z. B. seine Benutzerkennung oder Warenkorbinformationen. Derselbe Sitzungsbezeichner wird in einem Cookie an den Browser gesendet. Die Cookies werden vom Browser auf dem System des Benutzers gespeichert. Der Client übergibt das Cookie bei jeder Anfrage, so dass der Server weiß, dass diese Anfrage von demselben Benutzer stammt. Die meisten Anwendungen verwenden Sitzungen, um Benutzer sowohl vor als auch nach der Authentifizierung zu verfolgen.

Eine ordnungsgemäße Sitzungsverwaltung ist für die Sicherheit einer Anwendung unerlässlich. Eine gültige Sitzungs-ID hat den gleichen Vertrauensgrad wie ein Benutzername/Passwort oder sogar ein Second-Factor-Authentifizierungstoken.

Warum schlechtes Session Management gefährlich ist

Schlechte Sitzungsverwaltung kann zu einer kompletten Kontoübernahme führen. Das bedeutet, dass Kundendaten gestohlen oder Produkte in betrügerischer Absicht gekauft werden können. Es gibt mehrere Möglichkeiten für Angreifer, eine gültige Sitzungs-ID zu erhalten.

Ein Sitzungsfixierungsangriff tritt auf, wenn Sitzungen zu wichtigen Zeitpunkten nicht geändert werden, z. B. wenn sich ein Benutzer am System anmeldet, und wenn Sitzungskennungen über die URL gesetzt werden können. Das Setzen von Sitzungskennungen auf diese Weise kann verwendet werden, um Benutzer über verschiedene Anwendungen hinweg angemeldet zu halten, die die gleiche Authentifizierungsquelle verwenden. In diesem Fall kann ein Angreifer eine Website aufrufen und eine Sitzungskennung erlangen. Der Angreifer sendet dann eine URL an ein ahnungsloses Opfer per E-Mail mit der Sitzungs-ID in der URL. Das Opfer klickt auf die URL in der E-Mail und meldet sich bei der Website an. Wenn die Sitzungs-ID bei der Anmeldung nicht rotiert wird, verfügt der Angreifer nun über eine gültige, authentifizierte Sitzungs-ID. Dies ermöglicht eine vollständige Kontoübernahme.

Ein weiterer Angriff auf eine schlechte Sitzungsverwaltung ist ein Brute-Force-Rate-Angriff. Wenn Entwickler versuchen, ihre eigenen Sitzungsverwaltungssysteme zu erstellen, verwenden sie oft Sitzungs-IDs, die ziemlich einfach zu erraten sind. Diese könnten eine Sequenz (1, 2, 3) oder eine Art vorhersehbares Muster sein. Der Angreifer rät einfach so lange Sitzungs-IDs, bis er eine gültige entdeckt hat. Dies führt auch zu einer Kontoübernahme.

Sitzungen, die nach Ablauf einer bestimmten Zeit nicht automatisch ungültig gemacht werden, können ausgenutzt werden, um Benutzer anzugreifen. Ein erfolgreicher Cross-Site-Request-Forgery-Angriff hängt von Sitzungen ab, die noch gültig sind, nachdem der Benutzer die Website verlassen hat. Angenommen, ein Angreifer platziert einen Iframe oder ein Bild auf einer vom Benutzer besuchten Website. Das Attribut "src" (Quelle) wird auf die URL der verwundbaren Site gesetzt und führt eine Aktion im Namen des Benutzers aus. Zum Beispiel könnte eine verwundbare Banking-Anwendung dazu gebracht werden, ohne die Erlaubnis des Benutzers Geld auf das Konto eines Angreifers zu überweisen.

Sitzungsmanagement kann knifflig sein, und Schwächen können verheerend sein. Es ist jedoch ein bekanntes Problem und es kann gelöst werden.

Unsicheres Sitzungsmanagement besiegen

Die Sitzungsverwaltung ist ein Kernstück einer jeden Webanwendung. Daher verfügen viele Webentwicklungs-Frameworks über eine eingebaute Session-Management-Funktionalität. Diese Systeme wurden von Experten untersucht, um Probleme zu finden und auszumerzen. Verwenden Sie sie.

Einige allgemeine Eigenschaften einer guten Sitzungsverwaltung sind:

     Generierung zufälliger Sitzungs-IDs, die Angreifer nicht erraten können

     Sitzungen werden ungültig, wenn sich ein Benutzer abmeldet

     Sitzungen werden nach Ablauf einer bestimmten Zeit automatisch ungültig gemacht

     Sitzungs-IDs werden nach der Anmeldung des Benutzers geändert

     Sitzungs-IDs, die mindestens 128 Bit lang sind, um Brute-Force-Angriffe zu verhindern

Web-Frameworks wie Spring, ASP.NET Core, Rails und Django verfügen über diese Eigenschaften und sollten in diesem Fall aufgrund ihrer höheren Sicherheitsstandards verwendet werden.

Unterm Strich: Erstellen Sie Ihr eigenes Sitzungsmanagementsystem nicht von Grund auf neu.

Sobald die Sitzungs-IDs erstellt sind, müssen sie geschützt werden. Setzen Sie die Flags "Secure" und "HttpOnly" bei Sitzungscookies auf "true". Dadurch wird sichergestellt, dass ihr Wert nicht mit JavaScript abgerufen werden kann und der Browser das Cookie nur über HTTPS sendet, wodurch Angreifer daran gehindert werden, die Sitzung eines Benutzers während der Übertragung zu stehlen.

Sichern Sie Ihre Sitzungen

Sehen Sie sichunsere kostenlosen Lernressourcen an, um mehr über sicheres Sitzungsmanagement zu erfahren. Wenn Sie lernen, wie Sie Ihre Sitzungen sichern, können Sie die Übernahme von Benutzerkonten, Rufschädigung und Umsatzeinbußen aufgrund von Sicherheitsverletzungen verhindern. Sichern Sie Ihre Sitzungen und schützen Sie Ihre Benutzer.

Ressource anzeigen
Ressource anzeigen

Sitzungen sind der Schlüssel für ein gutes Benutzererlebnis bei der Nutzung des Webs. Die falsche Verwaltung von Sitzungen kann jedoch zu Sicherheitslücken führen, die Angreifer ausnutzen können.

Interessiert an mehr?

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

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 buchen
Weitergeben:
Autor
Jaap Karan Singh
Veröffentlicht Jan 31, 2019

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Weitergeben:

Sie navigieren zu einer Website und melden sich an. Wie gewohnt füllen Sie Ihren Warenkorb mit Produkten, die Sie kaufen möchten. Dann, schwupps - rutscht Ihnen die Hand ab und Sie schließen den Browser-Tab. Nach einer kleinen Panik geben Sie die URL der Seite wieder in den Browser ein und drücken die "Enter"-Taste. Sie werden zurück auf die Seite gebracht, sind eingeloggt und alle Artikel befinden sich noch im Warenkorb. Uff.

Woher wusste die Website, wer Sie waren, ohne sich erneut zu authentifizieren? Sie hat Sie identifiziert, weil sie Sitzungen verwendet hat. Sitzungen sind der Schlüssel zu einem guten Benutzererlebnis bei der Nutzung des Internets. Die falsche Verwaltung von Sitzungen kann jedoch zu Sicherheitslücken führen, die Angreifer ausnutzen können.

Lassen Sie uns nun überprüfen, was Sitzungsverwaltung bedeutet, wie eine schwache Sitzungsverwaltung Ihnen schaden kann und was Sie tun können, um Sitzungen richtig zu verwalten.

Schwachstellen im Session Management verstehen

Eine Sitzung bezieht sich auf einen auf dem Server gespeicherten Wert, der für einen einzelnen Benutzer der Anwendung spezifisch ist. Dies ist aus zwei Gründen notwendig: Erstens: HTTP ist ein zustandsloses Protokoll. Jede Anfrage ist separat und hat keine Kenntnis von Anfragen, die vor oder nach ihr gekommen sind. Eine Sitzung hilft dem Server zu verfolgen, wer die Anfrage gesendet hat. Andernfalls müssten Sie sich jedes Mal anmelden, wenn Sie auf eine Schaltfläche oder einen Link klicken.

Der zweite Grund für Sitzungen ist die Autorisierung des Benutzers. Die Sitzungskennung kann verwendet werden, um einen bestimmten Benutzer mit bestimmten Rechten innerhalb des Systems zu erkennen. Die Anwendung weiß dann, wer die Person ist und was sie tun darf.

Eine Sitzung besteht aus zwei Komponenten. Ein Datenspeicher auf der Serverseite speichert einen Sitzungsbezeichner und ordnet ihn Informationen über den Benutzer zu, wie z. B. seine Benutzerkennung oder Warenkorbinformationen. Derselbe Sitzungsbezeichner wird in einem Cookie an den Browser gesendet. Die Cookies werden vom Browser auf dem System des Benutzers gespeichert. Der Client übergibt das Cookie bei jeder Anfrage, so dass der Server weiß, dass diese Anfrage von demselben Benutzer stammt. Die meisten Anwendungen verwenden Sitzungen, um Benutzer sowohl vor als auch nach der Authentifizierung zu verfolgen.

Eine ordnungsgemäße Sitzungsverwaltung ist für die Sicherheit einer Anwendung unerlässlich. Eine gültige Sitzungs-ID hat den gleichen Vertrauensgrad wie ein Benutzername/Passwort oder sogar ein Second-Factor-Authentifizierungstoken.

Warum schlechtes Session Management gefährlich ist

Schlechte Sitzungsverwaltung kann zu einer kompletten Kontoübernahme führen. Das bedeutet, dass Kundendaten gestohlen oder Produkte in betrügerischer Absicht gekauft werden können. Es gibt mehrere Möglichkeiten für Angreifer, eine gültige Sitzungs-ID zu erhalten.

Ein Sitzungsfixierungsangriff tritt auf, wenn Sitzungen zu wichtigen Zeitpunkten nicht geändert werden, z. B. wenn sich ein Benutzer am System anmeldet, und wenn Sitzungskennungen über die URL gesetzt werden können. Das Setzen von Sitzungskennungen auf diese Weise kann verwendet werden, um Benutzer über verschiedene Anwendungen hinweg angemeldet zu halten, die die gleiche Authentifizierungsquelle verwenden. In diesem Fall kann ein Angreifer eine Website aufrufen und eine Sitzungskennung erlangen. Der Angreifer sendet dann eine URL an ein ahnungsloses Opfer per E-Mail mit der Sitzungs-ID in der URL. Das Opfer klickt auf die URL in der E-Mail und meldet sich bei der Website an. Wenn die Sitzungs-ID bei der Anmeldung nicht rotiert wird, verfügt der Angreifer nun über eine gültige, authentifizierte Sitzungs-ID. Dies ermöglicht eine vollständige Kontoübernahme.

Ein weiterer Angriff auf eine schlechte Sitzungsverwaltung ist ein Brute-Force-Rate-Angriff. Wenn Entwickler versuchen, ihre eigenen Sitzungsverwaltungssysteme zu erstellen, verwenden sie oft Sitzungs-IDs, die ziemlich einfach zu erraten sind. Diese könnten eine Sequenz (1, 2, 3) oder eine Art vorhersehbares Muster sein. Der Angreifer rät einfach so lange Sitzungs-IDs, bis er eine gültige entdeckt hat. Dies führt auch zu einer Kontoübernahme.

Sitzungen, die nach Ablauf einer bestimmten Zeit nicht automatisch ungültig gemacht werden, können ausgenutzt werden, um Benutzer anzugreifen. Ein erfolgreicher Cross-Site-Request-Forgery-Angriff hängt von Sitzungen ab, die noch gültig sind, nachdem der Benutzer die Website verlassen hat. Angenommen, ein Angreifer platziert einen Iframe oder ein Bild auf einer vom Benutzer besuchten Website. Das Attribut "src" (Quelle) wird auf die URL der verwundbaren Site gesetzt und führt eine Aktion im Namen des Benutzers aus. Zum Beispiel könnte eine verwundbare Banking-Anwendung dazu gebracht werden, ohne die Erlaubnis des Benutzers Geld auf das Konto eines Angreifers zu überweisen.

Sitzungsmanagement kann knifflig sein, und Schwächen können verheerend sein. Es ist jedoch ein bekanntes Problem und es kann gelöst werden.

Unsicheres Sitzungsmanagement besiegen

Die Sitzungsverwaltung ist ein Kernstück einer jeden Webanwendung. Daher verfügen viele Webentwicklungs-Frameworks über eine eingebaute Session-Management-Funktionalität. Diese Systeme wurden von Experten untersucht, um Probleme zu finden und auszumerzen. Verwenden Sie sie.

Einige allgemeine Eigenschaften einer guten Sitzungsverwaltung sind:

     Generierung zufälliger Sitzungs-IDs, die Angreifer nicht erraten können

     Sitzungen werden ungültig, wenn sich ein Benutzer abmeldet

     Sitzungen werden nach Ablauf einer bestimmten Zeit automatisch ungültig gemacht

     Sitzungs-IDs werden nach der Anmeldung des Benutzers geändert

     Sitzungs-IDs, die mindestens 128 Bit lang sind, um Brute-Force-Angriffe zu verhindern

Web-Frameworks wie Spring, ASP.NET Core, Rails und Django verfügen über diese Eigenschaften und sollten in diesem Fall aufgrund ihrer höheren Sicherheitsstandards verwendet werden.

Unterm Strich: Erstellen Sie Ihr eigenes Sitzungsmanagementsystem nicht von Grund auf neu.

Sobald die Sitzungs-IDs erstellt sind, müssen sie geschützt werden. Setzen Sie die Flags "Secure" und "HttpOnly" bei Sitzungscookies auf "true". Dadurch wird sichergestellt, dass ihr Wert nicht mit JavaScript abgerufen werden kann und der Browser das Cookie nur über HTTPS sendet, wodurch Angreifer daran gehindert werden, die Sitzung eines Benutzers während der Übertragung zu stehlen.

Sichern Sie Ihre Sitzungen

Sehen Sie sichunsere kostenlosen Lernressourcen an, um mehr über sicheres Sitzungsmanagement zu erfahren. Wenn Sie lernen, wie Sie Ihre Sitzungen sichern, können Sie die Übernahme von Benutzerkonten, Rufschädigung und Umsatzeinbußen aufgrund von Sicherheitsverletzungen verhindern. Sichern Sie Ihre Sitzungen und schützen Sie Ihre Benutzer.

Ressource anzeigen
Ressource anzeigen

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

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.

Sie navigieren zu einer Website und melden sich an. Wie gewohnt füllen Sie Ihren Warenkorb mit Produkten, die Sie kaufen möchten. Dann, schwupps - rutscht Ihnen die Hand ab und Sie schließen den Browser-Tab. Nach einer kleinen Panik geben Sie die URL der Seite wieder in den Browser ein und drücken die "Enter"-Taste. Sie werden zurück auf die Seite gebracht, sind eingeloggt und alle Artikel befinden sich noch im Warenkorb. Uff.

Woher wusste die Website, wer Sie waren, ohne sich erneut zu authentifizieren? Sie hat Sie identifiziert, weil sie Sitzungen verwendet hat. Sitzungen sind der Schlüssel zu einem guten Benutzererlebnis bei der Nutzung des Internets. Die falsche Verwaltung von Sitzungen kann jedoch zu Sicherheitslücken führen, die Angreifer ausnutzen können.

Lassen Sie uns nun überprüfen, was Sitzungsverwaltung bedeutet, wie eine schwache Sitzungsverwaltung Ihnen schaden kann und was Sie tun können, um Sitzungen richtig zu verwalten.

Schwachstellen im Session Management verstehen

Eine Sitzung bezieht sich auf einen auf dem Server gespeicherten Wert, der für einen einzelnen Benutzer der Anwendung spezifisch ist. Dies ist aus zwei Gründen notwendig: Erstens: HTTP ist ein zustandsloses Protokoll. Jede Anfrage ist separat und hat keine Kenntnis von Anfragen, die vor oder nach ihr gekommen sind. Eine Sitzung hilft dem Server zu verfolgen, wer die Anfrage gesendet hat. Andernfalls müssten Sie sich jedes Mal anmelden, wenn Sie auf eine Schaltfläche oder einen Link klicken.

Der zweite Grund für Sitzungen ist die Autorisierung des Benutzers. Die Sitzungskennung kann verwendet werden, um einen bestimmten Benutzer mit bestimmten Rechten innerhalb des Systems zu erkennen. Die Anwendung weiß dann, wer die Person ist und was sie tun darf.

Eine Sitzung besteht aus zwei Komponenten. Ein Datenspeicher auf der Serverseite speichert einen Sitzungsbezeichner und ordnet ihn Informationen über den Benutzer zu, wie z. B. seine Benutzerkennung oder Warenkorbinformationen. Derselbe Sitzungsbezeichner wird in einem Cookie an den Browser gesendet. Die Cookies werden vom Browser auf dem System des Benutzers gespeichert. Der Client übergibt das Cookie bei jeder Anfrage, so dass der Server weiß, dass diese Anfrage von demselben Benutzer stammt. Die meisten Anwendungen verwenden Sitzungen, um Benutzer sowohl vor als auch nach der Authentifizierung zu verfolgen.

Eine ordnungsgemäße Sitzungsverwaltung ist für die Sicherheit einer Anwendung unerlässlich. Eine gültige Sitzungs-ID hat den gleichen Vertrauensgrad wie ein Benutzername/Passwort oder sogar ein Second-Factor-Authentifizierungstoken.

Warum schlechtes Session Management gefährlich ist

Schlechte Sitzungsverwaltung kann zu einer kompletten Kontoübernahme führen. Das bedeutet, dass Kundendaten gestohlen oder Produkte in betrügerischer Absicht gekauft werden können. Es gibt mehrere Möglichkeiten für Angreifer, eine gültige Sitzungs-ID zu erhalten.

Ein Sitzungsfixierungsangriff tritt auf, wenn Sitzungen zu wichtigen Zeitpunkten nicht geändert werden, z. B. wenn sich ein Benutzer am System anmeldet, und wenn Sitzungskennungen über die URL gesetzt werden können. Das Setzen von Sitzungskennungen auf diese Weise kann verwendet werden, um Benutzer über verschiedene Anwendungen hinweg angemeldet zu halten, die die gleiche Authentifizierungsquelle verwenden. In diesem Fall kann ein Angreifer eine Website aufrufen und eine Sitzungskennung erlangen. Der Angreifer sendet dann eine URL an ein ahnungsloses Opfer per E-Mail mit der Sitzungs-ID in der URL. Das Opfer klickt auf die URL in der E-Mail und meldet sich bei der Website an. Wenn die Sitzungs-ID bei der Anmeldung nicht rotiert wird, verfügt der Angreifer nun über eine gültige, authentifizierte Sitzungs-ID. Dies ermöglicht eine vollständige Kontoübernahme.

Ein weiterer Angriff auf eine schlechte Sitzungsverwaltung ist ein Brute-Force-Rate-Angriff. Wenn Entwickler versuchen, ihre eigenen Sitzungsverwaltungssysteme zu erstellen, verwenden sie oft Sitzungs-IDs, die ziemlich einfach zu erraten sind. Diese könnten eine Sequenz (1, 2, 3) oder eine Art vorhersehbares Muster sein. Der Angreifer rät einfach so lange Sitzungs-IDs, bis er eine gültige entdeckt hat. Dies führt auch zu einer Kontoübernahme.

Sitzungen, die nach Ablauf einer bestimmten Zeit nicht automatisch ungültig gemacht werden, können ausgenutzt werden, um Benutzer anzugreifen. Ein erfolgreicher Cross-Site-Request-Forgery-Angriff hängt von Sitzungen ab, die noch gültig sind, nachdem der Benutzer die Website verlassen hat. Angenommen, ein Angreifer platziert einen Iframe oder ein Bild auf einer vom Benutzer besuchten Website. Das Attribut "src" (Quelle) wird auf die URL der verwundbaren Site gesetzt und führt eine Aktion im Namen des Benutzers aus. Zum Beispiel könnte eine verwundbare Banking-Anwendung dazu gebracht werden, ohne die Erlaubnis des Benutzers Geld auf das Konto eines Angreifers zu überweisen.

Sitzungsmanagement kann knifflig sein, und Schwächen können verheerend sein. Es ist jedoch ein bekanntes Problem und es kann gelöst werden.

Unsicheres Sitzungsmanagement besiegen

Die Sitzungsverwaltung ist ein Kernstück einer jeden Webanwendung. Daher verfügen viele Webentwicklungs-Frameworks über eine eingebaute Session-Management-Funktionalität. Diese Systeme wurden von Experten untersucht, um Probleme zu finden und auszumerzen. Verwenden Sie sie.

Einige allgemeine Eigenschaften einer guten Sitzungsverwaltung sind:

     Generierung zufälliger Sitzungs-IDs, die Angreifer nicht erraten können

     Sitzungen werden ungültig, wenn sich ein Benutzer abmeldet

     Sitzungen werden nach Ablauf einer bestimmten Zeit automatisch ungültig gemacht

     Sitzungs-IDs werden nach der Anmeldung des Benutzers geändert

     Sitzungs-IDs, die mindestens 128 Bit lang sind, um Brute-Force-Angriffe zu verhindern

Web-Frameworks wie Spring, ASP.NET Core, Rails und Django verfügen über diese Eigenschaften und sollten in diesem Fall aufgrund ihrer höheren Sicherheitsstandards verwendet werden.

Unterm Strich: Erstellen Sie Ihr eigenes Sitzungsmanagementsystem nicht von Grund auf neu.

Sobald die Sitzungs-IDs erstellt sind, müssen sie geschützt werden. Setzen Sie die Flags "Secure" und "HttpOnly" bei Sitzungscookies auf "true". Dadurch wird sichergestellt, dass ihr Wert nicht mit JavaScript abgerufen werden kann und der Browser das Cookie nur über HTTPS sendet, wodurch Angreifer daran gehindert werden, die Sitzung eines Benutzers während der Übertragung zu stehlen.

Sichern Sie Ihre Sitzungen

Sehen Sie sichunsere kostenlosen Lernressourcen an, um mehr über sicheres Sitzungsmanagement zu erfahren. Wenn Sie lernen, wie Sie Ihre Sitzungen sichern, können Sie die Übernahme von Benutzerkonten, Rufschädigung und Umsatzeinbußen aufgrund von Sicherheitsverletzungen verhindern. Sichern Sie Ihre Sitzungen und schützen Sie Ihre Benutzer.

Auf Ressource zugreifen

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 buchen
PDF herunterladen
Ressource anzeigen
Weitergeben:
Interessiert an mehr?

Weitergeben:
Autor
Jaap Karan Singh
Veröffentlicht Jan 31, 2019

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Weitergeben:

Sie navigieren zu einer Website und melden sich an. Wie gewohnt füllen Sie Ihren Warenkorb mit Produkten, die Sie kaufen möchten. Dann, schwupps - rutscht Ihnen die Hand ab und Sie schließen den Browser-Tab. Nach einer kleinen Panik geben Sie die URL der Seite wieder in den Browser ein und drücken die "Enter"-Taste. Sie werden zurück auf die Seite gebracht, sind eingeloggt und alle Artikel befinden sich noch im Warenkorb. Uff.

Woher wusste die Website, wer Sie waren, ohne sich erneut zu authentifizieren? Sie hat Sie identifiziert, weil sie Sitzungen verwendet hat. Sitzungen sind der Schlüssel zu einem guten Benutzererlebnis bei der Nutzung des Internets. Die falsche Verwaltung von Sitzungen kann jedoch zu Sicherheitslücken führen, die Angreifer ausnutzen können.

Lassen Sie uns nun überprüfen, was Sitzungsverwaltung bedeutet, wie eine schwache Sitzungsverwaltung Ihnen schaden kann und was Sie tun können, um Sitzungen richtig zu verwalten.

Schwachstellen im Session Management verstehen

Eine Sitzung bezieht sich auf einen auf dem Server gespeicherten Wert, der für einen einzelnen Benutzer der Anwendung spezifisch ist. Dies ist aus zwei Gründen notwendig: Erstens: HTTP ist ein zustandsloses Protokoll. Jede Anfrage ist separat und hat keine Kenntnis von Anfragen, die vor oder nach ihr gekommen sind. Eine Sitzung hilft dem Server zu verfolgen, wer die Anfrage gesendet hat. Andernfalls müssten Sie sich jedes Mal anmelden, wenn Sie auf eine Schaltfläche oder einen Link klicken.

Der zweite Grund für Sitzungen ist die Autorisierung des Benutzers. Die Sitzungskennung kann verwendet werden, um einen bestimmten Benutzer mit bestimmten Rechten innerhalb des Systems zu erkennen. Die Anwendung weiß dann, wer die Person ist und was sie tun darf.

Eine Sitzung besteht aus zwei Komponenten. Ein Datenspeicher auf der Serverseite speichert einen Sitzungsbezeichner und ordnet ihn Informationen über den Benutzer zu, wie z. B. seine Benutzerkennung oder Warenkorbinformationen. Derselbe Sitzungsbezeichner wird in einem Cookie an den Browser gesendet. Die Cookies werden vom Browser auf dem System des Benutzers gespeichert. Der Client übergibt das Cookie bei jeder Anfrage, so dass der Server weiß, dass diese Anfrage von demselben Benutzer stammt. Die meisten Anwendungen verwenden Sitzungen, um Benutzer sowohl vor als auch nach der Authentifizierung zu verfolgen.

Eine ordnungsgemäße Sitzungsverwaltung ist für die Sicherheit einer Anwendung unerlässlich. Eine gültige Sitzungs-ID hat den gleichen Vertrauensgrad wie ein Benutzername/Passwort oder sogar ein Second-Factor-Authentifizierungstoken.

Warum schlechtes Session Management gefährlich ist

Schlechte Sitzungsverwaltung kann zu einer kompletten Kontoübernahme führen. Das bedeutet, dass Kundendaten gestohlen oder Produkte in betrügerischer Absicht gekauft werden können. Es gibt mehrere Möglichkeiten für Angreifer, eine gültige Sitzungs-ID zu erhalten.

Ein Sitzungsfixierungsangriff tritt auf, wenn Sitzungen zu wichtigen Zeitpunkten nicht geändert werden, z. B. wenn sich ein Benutzer am System anmeldet, und wenn Sitzungskennungen über die URL gesetzt werden können. Das Setzen von Sitzungskennungen auf diese Weise kann verwendet werden, um Benutzer über verschiedene Anwendungen hinweg angemeldet zu halten, die die gleiche Authentifizierungsquelle verwenden. In diesem Fall kann ein Angreifer eine Website aufrufen und eine Sitzungskennung erlangen. Der Angreifer sendet dann eine URL an ein ahnungsloses Opfer per E-Mail mit der Sitzungs-ID in der URL. Das Opfer klickt auf die URL in der E-Mail und meldet sich bei der Website an. Wenn die Sitzungs-ID bei der Anmeldung nicht rotiert wird, verfügt der Angreifer nun über eine gültige, authentifizierte Sitzungs-ID. Dies ermöglicht eine vollständige Kontoübernahme.

Ein weiterer Angriff auf eine schlechte Sitzungsverwaltung ist ein Brute-Force-Rate-Angriff. Wenn Entwickler versuchen, ihre eigenen Sitzungsverwaltungssysteme zu erstellen, verwenden sie oft Sitzungs-IDs, die ziemlich einfach zu erraten sind. Diese könnten eine Sequenz (1, 2, 3) oder eine Art vorhersehbares Muster sein. Der Angreifer rät einfach so lange Sitzungs-IDs, bis er eine gültige entdeckt hat. Dies führt auch zu einer Kontoübernahme.

Sitzungen, die nach Ablauf einer bestimmten Zeit nicht automatisch ungültig gemacht werden, können ausgenutzt werden, um Benutzer anzugreifen. Ein erfolgreicher Cross-Site-Request-Forgery-Angriff hängt von Sitzungen ab, die noch gültig sind, nachdem der Benutzer die Website verlassen hat. Angenommen, ein Angreifer platziert einen Iframe oder ein Bild auf einer vom Benutzer besuchten Website. Das Attribut "src" (Quelle) wird auf die URL der verwundbaren Site gesetzt und führt eine Aktion im Namen des Benutzers aus. Zum Beispiel könnte eine verwundbare Banking-Anwendung dazu gebracht werden, ohne die Erlaubnis des Benutzers Geld auf das Konto eines Angreifers zu überweisen.

Sitzungsmanagement kann knifflig sein, und Schwächen können verheerend sein. Es ist jedoch ein bekanntes Problem und es kann gelöst werden.

Unsicheres Sitzungsmanagement besiegen

Die Sitzungsverwaltung ist ein Kernstück einer jeden Webanwendung. Daher verfügen viele Webentwicklungs-Frameworks über eine eingebaute Session-Management-Funktionalität. Diese Systeme wurden von Experten untersucht, um Probleme zu finden und auszumerzen. Verwenden Sie sie.

Einige allgemeine Eigenschaften einer guten Sitzungsverwaltung sind:

     Generierung zufälliger Sitzungs-IDs, die Angreifer nicht erraten können

     Sitzungen werden ungültig, wenn sich ein Benutzer abmeldet

     Sitzungen werden nach Ablauf einer bestimmten Zeit automatisch ungültig gemacht

     Sitzungs-IDs werden nach der Anmeldung des Benutzers geändert

     Sitzungs-IDs, die mindestens 128 Bit lang sind, um Brute-Force-Angriffe zu verhindern

Web-Frameworks wie Spring, ASP.NET Core, Rails und Django verfügen über diese Eigenschaften und sollten in diesem Fall aufgrund ihrer höheren Sicherheitsstandards verwendet werden.

Unterm Strich: Erstellen Sie Ihr eigenes Sitzungsmanagementsystem nicht von Grund auf neu.

Sobald die Sitzungs-IDs erstellt sind, müssen sie geschützt werden. Setzen Sie die Flags "Secure" und "HttpOnly" bei Sitzungscookies auf "true". Dadurch wird sichergestellt, dass ihr Wert nicht mit JavaScript abgerufen werden kann und der Browser das Cookie nur über HTTPS sendet, wodurch Angreifer daran gehindert werden, die Sitzung eines Benutzers während der Übertragung zu stehlen.

Sichern Sie Ihre Sitzungen

Sehen Sie sichunsere kostenlosen Lernressourcen an, um mehr über sicheres Sitzungsmanagement zu erfahren. Wenn Sie lernen, wie Sie Ihre Sitzungen sichern, können Sie die Übernahme von Benutzerkonten, Rufschädigung und Umsatzeinbußen aufgrund von Sicherheitsverletzungen verhindern. Sichern Sie Ihre Sitzungen und schützen Sie Ihre Benutzer.

Inhaltsübersicht

PDF herunterladen
Ressource anzeigen
Interessiert an mehr?

Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

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 buchenHerunterladen
Weitergeben:
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge
Ressourcendrehscheibe

Ressourcen für den Einstieg

Mehr Beiträge