Reicht es aus, [ System.Web.Configuration.HttpRuntimeSection.EnableHeaderChecking
] ( Ссылка auf true
(Standard) gesetzt, um Http Header Injection Attacken wie Response Splitting etc. zu verhindern?
Ich frage, weil ein White-Box-Penetrationstest-Tool (Fortify) auswertbare http-Header-Injection-Probleme mit HttpResponse.Redirect
und Cookies meldet, aber ich habe keine Möglichkeit gefunden, einen Angriff erfolgreich durchzuführen. ( Bearbeiten : .. und EnableHeaderChecking ist aktiviert ..)
Ich habe mich schon seit einiger Zeit damit befasst und die Schlussfolgerung gezogen, dass EnableHeaderChecking bis true
ist tatsächlich gut genug, um HTTP-Header-Injection-Angriffe zu verhindern.
Beim Betrachten des "reflektierten" ASP.NET-Codes habe ich folgendes gefunden:
HttpResponseHeader
(intern) HttpResponseHeader.MaybeEncodeHeader
(für IIS7WorkerRequests
) HttpResponseHeader
Instanzen werden vor bekannten Headern wie RedirectLocation oder ContentType werden gesendet ( HttpResponse.GenerateResponseHeaders
) HttpResponseHeader
-Konstruktor prüft die Enable headerChecking Einstellung und ruft HttpResponseHeader.MaybeEncodeHeader
auf, wenn auf true
gesetzt
HttpResponseHeader.MaybeEncodeHeader
kodiert korrekt Newline-Zeichen, die HTTP-Header-Injection-Angriffe unmöglich machen Hier ist ein Ausschnitt, um grob zu demonstrieren, wie ich getestet habe:
%Vor%Das obige funktioniert nur, wenn Sie explizit aktivieren EnableHeaderChecking aus:
%Vor%Fortify berücksichtigt die Konfiguration einfach nicht (Einstellung EnableHeaderChecking hatte explizit keine Wirkung" und immer meldet diese Art von Problemen.
AFAIK es ist genug und es sollte standardmäßig aktiviert sein.
Ich denke, Fortify denkt gerade über die Verteidigung in der Tiefe nach, als ob Sie die Konfiguration in der Bereitstellung ändern würden.
Ich nehme an, du hast es in deiner Konfiguration nicht genau festgelegt, wenn du es vielleicht getan hast, ist Fortify nicht so schlau, das zu verstehen.
Der beste Weg zur Bestätigung ist die Nutzung:
Josef, HttpResponse.AppendHeader () ist nicht der einzige Ort, an dem nicht vertrauenswürdige Daten in die HTTP Response Headers eingegeben werden können.
Alle Daten des Angreifers, die in Cookies oder HTTP-Weiterleitungen landen, können neue Header schreiben, wenn die Daten einen Wagenrücklauf enthalten (oder alles, was als Wagenrücklauf interpretiert wird).
Im Allgemeinen ist es viel besser, Ihre Zeit für die Validierung Ihrer Daten zu nutzen, als herumzusitzen und Exploits auszuarbeiten. Wahrscheinlichkeiten sind, die Hacker werden darin besser sein als du oder ich.