Citrix ADC

Streaming-Unterstützung für die Anforderungsverarbeitung

Die Citrix Web App Firewall unterstützt das anforderungsseitige Streaming, um eine signifikante Leistungssteigerung zu erzielen. Anstatt eine Anforderung zu puffern, untersucht die Appliance den eingehenden Datenverkehr auf Sicherheitsverletzungen wie SQL, Cross-Site-Scripting, Feldkonsistenz und Feldformate. Wenn die Appliance die Verarbeitung von Daten für ein Feld abgeschlossen hat, wird die Anforderung an den Back-End-Server weitergeleitet, während die Appliance weitere Felder auswertet. Diese Datenverarbeitung erheblich verbessert die Verarbeitungszeit bei der Bearbeitung von Formularen haben viele Felder.

Hinweis:

Citrix Web App Firewall unterstützt eine maximale Postgröße von 20 MB ohne Streaming. Zur besseren Ressourcennutzung empfiehlt Citrix, das Streaming nur für Nutzlasten mit mehr als 20 MB zu aktivieren. Außerdem muss der Back-End-Server die Chunked Requests akzeptieren, wenn Streaming aktiviert ist.

Obwohl der Streaming-Prozess für die Benutzer transparent ist, sind aufgrund der folgenden Änderungen kleinere Konfigurationsanpassungen erforderlich:

RegEx Pattern Match: RegEx Pattern-Übereinstimmung ist jetzt auf 4K für zusammenhängende Zeichenfolgen-Übereinstimmung beschränkt.

Feldnamenübereinstimmung: Web App Firewall Lernmodul kann nur die ersten 128 Bytes des Namens unterscheiden. Wenn ein Formular mehrere Felder mit Namen enthält, die identische Zeichenfolgenübereinstimmung für die ersten 128 Bytes aufweisen, unterscheidet die Lern-Engine diese nicht. In ähnlicher Weise kann die implementierte Relaxationsregel versehentlich alle diese Felder entspannen.

Entfernen von Leerzeichen, Prozentdekodierung, Unicode-Decodierung und Zeichensatzkonvertierung werden während der Kanonisierung durchgeführt, um die Sicherheitsprüfung zu gewährleisten. Das 128 Byte-Limit gilt für die kanonische Darstellung des Feldnamens im UTF-8-Zeichenformat. Die ASCII-Zeichen sind 1 Byte lang, aber die UTF-8-Darstellung der Zeichen in einigen internationalen Sprachen kann zwischen 1 Byte und 4 Byte liegen. Wenn jedes Zeichen in einem Namen 4 Bytes für die Konvertierung in das UTF-8-Format benötigt, können nur die ersten 32 Zeichen im Namen durch die erlernte Regel unterschieden werden.

Überprüfung der Feldkonsistenz: Wenn Sie die Feldkonsistenz aktivieren, werden alle Formulare in der Sitzung basierend auf dem Tag “as_fid” gespeichert, das von der Web App Firewall eingefügt wurde, ohne die “action_url” zu berücksichtigen.

  • Obligatorisches Formular-Tagging für die Konsistenz von Formularfeldern: Wenn die Feldkonsistenzprüfung aktiviert ist, muss auch das Formular-Tag aktiviert sein. Der Feldkonsistenzschutz funktioniert möglicherweise nicht, wenn die Formularkennzeichnung deaktiviert ist.
  • Konsistenz des sitzungslosen Formularfelds: Die Web App Firewall führt die Konvertierung von Formularen nicht mehr durch, wenn der konsistente Parameter “GET” in “POST” aktiviert ist. Das Formular-Tag ist auch für sitzungslose Feldkonsistenz erforderlich.
  • Manipulation von as_fid: Wenn ein Formular gesendet wird, nachdem as_fid manipuliert wurde, löst es eine Feldkonsistenzverletzung aus, auch wenn kein Feld manipuliert wurde. Bei Nicht-Streaming-Anforderungen war dies zulässig, da die Formulare mithilfe der in der Sitzung gespeicherten “action_url” validiert werden können.

Signaturen: Die Signaturen haben nun die folgenden Spezifikationen:

  • Ort: Es ist jetzt zwingend erforderlich, dass für jedes Muster eine Position angegeben werden muss. Alle Muster in der Regel MÜSSEN ein Tag <Location> haben.

  • Schnelle Übereinstimmung: Alle Signaturregeln müssen ein schnelles Übereinstimmungsmuster aufweisen. Wenn es kein schnelles Übereinstimmungsmuster gibt, wird versucht, ein möglichst ausgewähltes Muster auszuwählen. Schnelle Übereinstimmung ist eine literale Zeichenfolge, aber einige PCREs können für schnelle Übereinstimmung verwendet werden, wenn sie eine verwendbare Literalzeichenfolge enthalten.

  • Veraltete Speicherorte: Folgende Speicherorte werden in Signaturregeln nicht mehr unterstützt.

    • HTTP_ANY
    • HTTP_RAW_COOKIE
    • HTTP_RAW_HEADER
    • HTTP_RAW_RESP_HEADER
    • HTTP_RAW_SET_COOKIE

XSS/SQL-Transformation: Rohdaten werden für die Transformation verwendet, da die SQL-Sonderzeichen wie einfaches Anführungszeichen (‘), umgekehrter Schrägstrich () und Semikolon (;)) und siteübergreifende Skript-Tags identisch sind und keine Kanonisierung von Daten erfordern. Die Darstellung von Sonderzeichen wie HTML-Entitätskodierung, Prozentkodierung oder ASCII wird für den Transformationsvorgang ausgewertet.

Die Web App Firewall überprüft nicht mehr den Attributnamen und den Wert für den Cross-Site-Skript-Transformationsvorgang. Jetzt werden nur Cross-Site-Scripting-Attributnamen transformiert, wenn das Streaming aktiviert ist.

Verarbeitung von XSS-Tags: Als Teil der Streaming-Änderungen in NetScaler 10.5.e Build und höher hat sich die Verarbeitung der Cross-Site-Scripting-Tags geändert. In früheren Versionen wurde entweder eine offene Klammer (<), or close bracket (>) oder beide offene und geschlossene Klammern (<>) als siteübergreifende Skriptverletzung gekennzeichnet. Das Verhalten hat sich ab 10.5.e Build geändert. Das Vorhandensein nur des offenen Klammerzeichens (<), or only the close bracket character (>) wird nicht mehr als Angriff betrachtet. Dies ist, wenn ein offenes Klammerzeichen (<) is followed by a close bracket character (>), der Cross-Site-Scripting-Angriff markiert wird. Beide Zeichen müssen in der richtigen Reihenfolge (< followed by >) vorhanden sein, um Cross-Site-Skriptverstoß auszulösen.

Hinweis:

Änderung im SQL-Verstoßprotokoll Meldung: Als Teil der Streaming-Änderungen in 10.5.e ab, verarbeiten wir nun die Eingabedaten in Blöcken. RegEx Pattern-Matching ist jetzt für zusammenhängende Zeichenfolgen auf 4K beschränkt. Mit dieser Änderung können die SQL-Verstoßprotokollmeldungen andere Informationen im Vergleich zu früheren Builds enthalten. Das Schlüsselwort und das Sonderzeichen in der Eingabe sind durch viele Bytes getrennt. Die Appliance weist bei der Verarbeitung der Daten eine Spur der SQL-Schlüsselwörter und speziellen Zeichenfolgen auf, anstatt den gesamten Eingabewert zu puffern. Zusätzlich zum Feldnamen enthält die Protokollmeldung SQL-Schlüsselwort, SQL-Sonderzeichen oder sowohl das SQL-Schlüsselwort als auch das SQL-Sonderzeichen. Der Rest der Eingabe ist nicht mehr in der Protokollmeldung enthalten, wie im folgenden Beispiel gezeigt:

Beispiel:

Wenn in 10.5 die Web App Firewall die SQL-Verletzung erkennt, kann die gesamte Eingabezeichenfolge in der folgenden Protokollmeldung enthalten sein:

SQL-Schlüsselwortüberprüfung für Feld text=”Wählen Sie einen Namen aus testbed1;\(;\)”.*<blocked>

In 11.0 protokollieren wir nur den Feldnamen, das Schlüsselwort und das Sonderzeichen (falls zutreffend) in der folgenden Protokollmeldung.

SQL-Schlüsselwortüberprüfung für Feldtext="select(;)" <blocked> fehlgeschlagen Diese Änderung gilt für Anforderungen, die application/x-www-form-urlencodedoder multipart/form-dataoder text/x-gwt-rpc Inhaltstypen enthalten. Protokollmeldungen, die während der Verarbeitung von JSON- oder XML-Nutzlasten generiert werden, sind von dieser Änderung nicht betroffen.

RAW POST Body: Die Sicherheitsprüfungen werden immer auf RAW POST Body durchgeführt.

Formular-ID: Die Web App Firewall hat das Tag “as_fid” eingefügt, bei dem es sich um einen berechneten Hash des Formulars handelt, der für die Benutzersitzung länger eindeutig ist. Es handelt sich um einen identischen Wert für ein bestimmtes Formular, unabhängig vom Benutzer oder der Sitzung.

Zeichensatz: Wenn eine Anforderung keinen Zeichensatz hat, wird bei der Verarbeitung der Anforderung der Standard-Zeichensatz verwendet, der im Anwendungsprofil angegeben ist.

Zähler:

Zähler mit dem Präfix “se_” und “appfwreq_” werden hinzugefügt, um die Streaming-Engine und Streaming-Engine-Anforderungsindikatoren zu verfolgen.

nsconsmg -d statswt0 -g se_err_

nsconsmg -d statswt0 -g se_tot_

nsconsmg -d statswt0 -g se_cur_

nsconsmg -d statswt0 -g appfwreq_err_

nsconsmg -d statswt0 -g appfwreq_tot_

nsconsmg -d statswt0 -g appfwreq_cur_

_err Zähler: Geben Sie das seltene Ereignis an, das erfolgreich sein sollte, aber aufgrund eines Speicherzuordnungsproblems oder einer anderen Ressourcenknappheit fehlgeschlagen sein sollte.

_tot-Zähler: stetig zunehmende Zähler.

_cur-Leistungsindikatoren: Leistungsindikatoren, die aktuelle Werte angeben, die sich aufgrund der Verwendung aus aktuellen Transaktionen ständig ändern.

Tipps:

  • Die Sicherheitsprüfungen der Web App Firewall müssen wie zuvor funktionieren.
  • Für die Abwicklung der Sicherheitskontrollen gibt es keine festgelegte Reihenfolge.
  • Die Verarbeitung der Antwortseite wird nicht beeinträchtigt und bleibt unverändert.
  • Streaming wird nicht aktiviert, wenn CVPN verwendet wird.

Wichtig:

Berechnung der Cookie-Länge: In Release 10.5.e wurde zusätzlich zur Version 11.0 (in Builds vor 65.x) die Web App Firewall die Art der Verarbeitung des Cookie-Headers geändert. Die Appliance hat das Cookie einzeln ausgewertet, und wenn die Länge eines Cookies im Cookie-Header die konfigurierte Länge überschritten hat, wurde die Pufferüberlaufverletzung ausgelöst. Daher können Anforderungen, die in NetScaler 10.5 oder früheren Versionen blockiert wurden, zulässig sein. Die Länge des gesamten Cookie-Headers wird nicht zur Bestimmung der Cookie-Länge berechnet. In einigen Situationen kann die gesamte Cookie-Größe größer als der akzeptierte Wert sein, und der Server reagiert möglicherweise mit “400 Bad Request”.

Hinweis: Die Änderung wurde rückgängig gemacht. Das Verhalten in NetScaler Version 10.5.e auf Version 59.13xx.e und den nachfolgenden Builds ähnelt den Builds ohne Erweiterung von Release 10.5. Der gesamte rohe Cookie-Header wird nun bei der Berechnung der Länge des Cookies berücksichtigt. Umgebende Leerzeichen und Semikolon (;) Zeichen, die die Name-Wert-Paare trennen, werden ebenfalls bei der Bestimmung der Cookie-Länge berücksichtigt.

Streaming-Unterstützung für die Anforderungsverarbeitung