Dies ist mehr ein browser vulnerability than a website vulnerability in Internet Explorer from 2010:
Checkmarx Research Labs eine neue kritische identifiziert Schwachstelle in Internet Explorer (andere Browser sind wahrscheinlich auf die gleiche Weise ausgesetzt), dass Hacker erlauben würde, Web-Anwendungen leicht zu kompromittieren.
Dies ist eine Verletzung der gleichen Ursprungsrichtlinie durch den Browser und es ist nicht etwas, das Sie in Ihrer Webanwendung beheben sollten. Die gemeldete Sicherheitsanfälligkeit bezieht sich wahrscheinlich auf eine Weiterleitung, die Sie basierend auf Ihrem Zustand durchführen. Es heißt, dass wenn Sie serverseitig auf der Sitzung sesStrUID
Wert umleiten, dann könnte ein Angreifer IFrame Ihre Website, und wenn es erkennt, dass Sie umleiten, kann daraus ableiten, ob sesStrUID
Null ist oder nicht.
Dies ist nur ein Problem, wenn Ihre Benutzer einen fehlerhaften Browser verwenden.
Wenn Ihre Benutzer moderne Browser verwenden, ist es nicht wert, IMO zu reparieren.
Wenn Sie besonders sicher sein und auch vor Clickjacking-Angriffen schützen möchten, können Sie den HTTP-Header X-Frame-Options: DENY
ausgeben, um Framing zu verhindern. Bitte beachten Sie, dass dies nur Sie vor der IFrame-Version des Angriffs schützen würde. Für andere Angriffsvektoren, die in der Tiefe diskutiert werden, check out this XSHM paper.
bearbeitet nach @ adar Antwort:
Adar Antwort ist sehr ähnlich wie ich und enthält viel die gleichen Informationen, es sei denn, dass das Plakat sagt, dass dies immer noch ein Problem.
Allerdings ist XSHM kein Problem, wenn Sie Server-Seite über die location
HTTP header umleiten. HTTP 3xx
redirects bewirken, dass der Wert history.length
in modernen Browsern nicht erhöht wird, sodass nicht ermittelt werden kann, ob der Benutzer an einer bestimmten Site angemeldet ist.
Wenn Sie JavaScript-Code ausgeben Umleitung nach dem
if(request.getSession().getAttribute("sesStrUID")!=null)
Code dann xshm ein Problem, wenn Sie Server-Seite umleiten
<%
String redirectURL = "http://example.com/myJSPFile.jsp";
response.sendRedirect(redirectURL);
%>
dann sind Sie nicht anfällig.
bearbeiten nach Antwort des @ adar II:
@adar ist richtig: Wenn Sie die folgende Angriffsszenario versuchen:
- öffnen
Login.jsp
in einem IFrame - Geschichte enthält Login.jsp
.
- öffnen
ShowSecretInfo.jsp
- wenn der Server dann auf Login.jsp
mit HTTP-Umleitungen 3xx, bleiben history.length
wird dann gleich, wenn ein Server zeigt ShowSecretInfo.jsp
-history.length
von 1.
Deshalb, wenn history.length
erhöht erhöht wird, können Sie bestimmen, dass der Benutzer angemeldet ist. Ich konnte das oben mit IE 11 und Firefox 33.1 unter Windows 7 neu erstellen. Chrome 39 ist auf diese Weise nicht anfällig für meine Tests, aber es ist in einem anderen:
Angenommen, dass /ShowSecretInfo.jsp
umgeleitet wird /Login.jsp
(ohne q uery), wenn der Benutzer nicht angemeldet
- öffnen
/ShowSecretInfo.jsp
in einem IFrame -. Geschichte enthält /ShowSecretInfo.jsp
.
- die iframe src zu
/Login.jsp
Set - wenn history.length
nicht erhöht, dann wissen Sie, der Benutzer angemeldet ist
Es scheint, dass Chrome nicht umgeleitet werden nicht versuchen, wenn die src
bereits auf die aktuelle URL festgelegt ist. . Ich könnte das auch in IE und Firefox neu erstellen.
Sie sagen, dass checkmarx diese Zeile als anfällig erkannt hat oder dass Sie diese Zeile verwenden, um die Sicherheitsanfälligkeit zu beheben? – developerwjk
Vergessen Sie nicht, die beste Antwort als akzeptiert zu markieren. ;) – SilverlightFox