Es gibt viele verschiedene Arten von Sicherheitslücken in Websites, eine interessante heißt „Session Fixation“. Sitzungsfixierung ist ein Problem, bei dem ein Angreifer die Sitzungskennung, auch bekannt als die Sitzungs-ID eines Benutzers, beeinflussen und dann damit Zugang zu seinem Konto erlangen kann. Es gibt zwei Möglichkeiten, wie diese Art von Sicherheitsanfälligkeit funktionieren kann: Sie kann es dem Angreifer ermöglichen, die Sitzungs-ID eines anderen Benutzers entweder zu finden oder festzulegen.
So wird ein Sitzungsfixierungsangriff durchgeführt
Die Sitzungs-ID eines Benutzers ist oft ein wichtiger Bestandteil der Authentifizierung gegenüber der Website und ist in vielen Fällen die einzigen Daten, die den spezifischen angemeldeten Benutzer identifizieren. Das Problem dabei ist, dass ein Angreifer, wenn er die Sitzungs-ID eines anderen Benutzers festlegen oder lernen kann, das Sitzungstoken verwenden und dann als Benutzer fungieren kann.
Normalerweise geschieht dies, indem ein Benutzer dazu verleitet wird, auf eine Art Phishing-Link zu klicken. Der Link selbst ist völlig legitim, enthält jedoch eine Variable, die eine bestimmte Sitzungs-ID festlegt. Wenn sich der Benutzer dann mit der Sitzungs-ID anmeldet und der Server ihm keine neue Sitzungs-ID zuweist, Login, kann der Angreifer einfach seine Sitzungs-ID auf dieselbe einstellen und Zugriff auf die des Opfers haben Konto.
Eine andere Möglichkeit, wie der Angreifer die Sitzungs-ID des Opfers ermitteln kann, besteht darin, dass sie in einer URL erscheint. Wenn der Angreifer beispielsweise das Opfer dazu bringen kann, ihm einen Link zu senden, der die Sitzungs-ID des Opfers enthält, kann der Angreifer die Sitzungs-ID verwenden, um auf das Konto des Opfers zuzugreifen. In einigen Fällen kann dies völlig zufällig passieren. Wenn der Benutzer beispielsweise die URL mit der Sitzungs-ID kopiert und sie an einen Freund oder in ein Forum einfügt, wird jeder Benutzer, der dem Link folgt, mit dem Konto des Benutzers angemeldet.
Korrekturen der Sitzungsfixierung
Es gibt einige Lösungen für dieses Problem, und wie immer ist die beste Lösung, so viele Fixes wie möglich als Teil einer tiefgreifenden Verteidigungsstrategie zu implementieren. Die erste Lösung besteht darin, die Sitzungs-ID des Benutzers bei der Anmeldung zu ändern. Dadurch wird verhindert, dass ein Angreifer die Sitzungs-ID eines eingeloggten Benutzers jemals beeinflussen kann. Sie können den Server auch so konfigurieren, dass er immer nur die von ihm generierten Sitzungs-IDs akzeptiert und alle vom Benutzer bereitgestellten Sitzungs-IDs explizit ablehnt.
Die Website sollte so konfiguriert werden, dass keine sensiblen Benutzerdetails wie die Sitzungs-ID in die URL eingefügt werden, und sie sollte in einem GET- oder POST-Anforderungsparameter platziert werden. Dies verhindert, dass der Benutzer versehentlich seine eigene Sitzungs-ID kompromittiert. Durch die Verwendung einer Sitzungs-ID und eines separaten Authentifizierungstokens verdoppeln Sie die Menge an Informationen, die der Angreifer benötigt, um zu gewinnen und Angreifer daran zu hindern, auf Sitzungen mit bekannten Sitzungs-IDs zuzugreifen.
Es ist wichtig, dass alle gültigen Sitzungs-IDs für einen Benutzer ungültig werden, wenn auf die Schaltfläche zum Abmelden geklickt wird. Es ist möglich, die Sitzungs-ID bei jeder Anfrage neu zu generieren. Wenn vorherige Sitzungs-IDs ungültig gemacht werden, verhindert dies auch, dass Angreifer bekannte Sitzungs-IDs verwenden. Dieser Ansatz reduziert auch das Bedrohungsfenster erheblich, wenn ein Benutzer seine eigene Sitzungs-ID preisgibt.
Durch die Aktivierung mehrerer dieser Ansätze kann eine tiefgreifende Verteidigungsstrategie dieses Problem als Sicherheitsrisiko eliminieren.