ADC

Site-übergreifende Scripting-Überprüfung von XML

Die XML-Cross-Site-Scripting-Prüfung untersucht die Benutzeranforderungen auf mögliche Cross-Site-Scripting-Angriffe in der XML-Payload. Findet es einen möglichen Cross-Site-Scripting-Angriff, blockiert es die Anfrage.

Um den Missbrauch der Skripts in Ihren geschützten Webdiensten zu verhindern, um die Sicherheit Ihrer Webdienste zu verletzen, blockiert die XML Cross-Site Scripting-Prüfung Skripts, die gegen dieselbe Ursprungsregel verstoßen, und besagt, dass Skripts auf keinem Server, sondern auf dem Server, auf dem sie sich befinden, zugreifen oder diese ändern dürfen. Jedes Skript, das gegen dieselbe Ursprungsregel verstößt, wird als siteübergreifendes Skript bezeichnet, und die Praxis, Skripts zum Zugriff auf oder Ändern von Inhalten auf einem anderen Server zu verwenden, wird als siteübergreifende Skripts bezeichnet. Der Grund, warum Cross-Site Scripting ein Sicherheitsproblem darstellt, besteht darin, dass ein Webserver, der Cross-Site Scripting ermöglicht, mit einem Skript angegriffen werden kann, das sich nicht auf diesem Webserver befindet, sondern auf einem anderen Webserver, z. B. einem, der dem Angreifer gehört und von diesem kontrolliert wird.

Die Web App Firewall bietet verschiedene Aktionsoptionen zur Implementierung des XML Cross-Site Scripting-Schutzes. Sie haben die Möglichkeit, die Aktionen Block, Logund Stats zu konfigurieren.

Die Web App Firewall XML Cross-Site Scripting Check wird anhand der Payload der eingehenden Anfragen durchgeführt, und Angriffszeichenfolgen werden identifiziert, auch wenn sie über mehrere Zeilen verteilt sind. Die Prüfung sucht nach Zeichenketten für Cross-Site-Scripting-Angriffe im Element und in den Attributwerten . Unter bestimmten Bedingungen können Sie Lockerungen anwenden, um die Sicherheitskontrolle zu Bypass. Die Protokolle und Statistiken können Ihnen helfen, die erforderlichen Lockerungen zu identifizieren.

Der CDATA Abschnitt der XML-Nutzlast könnte ein attraktiver Schwerpunkt für die Hacker sein, da die Skripts außerhalb des CDATA Abschnitts nicht ausführbar sind. Ein CDATA-Abschnitt wird für Inhalte verwendet, die ausschließlich als Zeichendaten behandelt werden sollen. Die HTML-Markup-Tag-Trennzeichen <, **und **/ veranlassen den Parser nicht, den Code als HTML-Elemente zu interpretieren. Das folgende Beispiel zeigt einen CDATA-Abschnitt mit einer Zeichenfolge für Cross-Site-Scripting-Angriffe:

    <![CDATA[rn
    <script language="Javascript" type="text/javascript">alert ("Got you")</script>rn
    ]]>
<!--NeedCopy-->

Optionen für Aktionen

Eine Aktion wird angewendet, wenn die XML Cross-Site Scripting-Überprüfung in der Anfrage einen Cross-Site-Scripting-Angriff erkennt. Die folgenden Optionen stehen zur Optimierung des XML Cross-Site Scripting-Schutzes für Ihre Anwendung zur Verfügung:

  • Blockieren— Die Aktion Blockieren wird ausgelöst, wenn die Cross-Site-Scripting-Tags in der Anfrage erkannt werden.
  • Log— Generiert Protokollmeldungen, in denen die Aktionen angegeben sind, die bei der XML Cross-Site Scripting-Überprüfung ausgeführt wurden. Wenn der Block deaktiviert ist, wird für jede Stelle (ELEMENT, ATTRIBUTE), an der die Cross-Site-Scripting-Verletzung erkannt wurde, eine separate Lognachricht generiert. Allerdings wird nur eine Nachricht generiert, wenn die Anforderung blockiert wird. Sie können die Protokolle überwachen, um festzustellen, ob Antworten auf legitime Anfragen blockiert werden. Ein starker Anstieg der Anzahl der Protokollmeldungen kann auf Versuche hinweisen, einen Angriff zu starten.
  • Statistiken— Erfassen Sie Statistiken über Verstöße und Protokolle. Ein unerwarteter Anstieg im Statistikzähler deutet möglicherweise darauf hin, dass Ihre Anwendung angegriffen wird. Wenn legitime Anfragen blockiert werden, müssen Sie möglicherweise die Konfiguration erneut aufrufen, um zu sehen, ob Sie neue Entspannungsregeln konfigurieren oder die vorhandenen ändern müssen.

Regeln für Entspannung

Wenn Ihre Anwendung verlangt, dass Sie die Cross-Site Scripting-Überprüfung auf ein bestimmtes ELEMENT oder ATTRIBUTE in der XML-Payload Bypass, können Sie eine Relaxationsregel konfigurieren. Die Relaxationsregeln für den XML Cross-Site Scripting Check haben die folgenden Parameter:

  • Name— Sie können literale Zeichenketten oder reguläre Ausdrücke verwenden, um den Namen des ELEMENTS oder des Attributs zu konfigurieren. Der folgende Ausdruck schließt alle ELEMENTE aus, die mit der Zeichenfolge name_ beginnen, gefolgt von einer Zeichenfolge aus Groß- oder Kleinbuchstaben oder Zahlen, die mindestens zwei und nicht mehr als fünfzehn Zeichen lang ist:

    ^name_[0-9A-Za-z]{2,15}$

Hinweis

Bei den Namen wird Groß- und Kleinschreibung erkannt. Doppelte Einträge sind nicht zulässig, aber Sie können die Groß- und Kleinschreibung der Namen und Ortsunterschiede verwenden, um ähnliche Einträge zu erstellen. Zum Beispiel ist jede der folgenden Entspannungsregeln einzigartig:

  1. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  2. XMLcross-site scripting: ABC IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  3. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ELEMENT State: ENABLED

  4. XMLcross-site scripting: abc IsRegex: NOTREGEX Location: ATTRIBUTE State: ENABLED

  • Standort— Sie können den Speicherort der Cross-Site Scripting Check-Ausnahme in Ihrer XML-Payload angeben. Die Option ELEMENT ist standardmäßig ausgewählt. Sie können es in ATTRIBUTEändern.
  • Kommentar—Dies ist ein optionales Feld. Sie können eine bis zu 255 Zeichen lange Zeichenfolge verwenden, um den Zweck dieser Entspannungsregel zu beschreiben.

Warnung

Reguläre Ausdrücke sind leistungsstark. Vor allem, wenn Sie mit regulären Ausdrücken im PCRE-Format nicht genau vertraut sind, überprüfen Sie alle regulären Ausdrücke, die Sie schreiben. Stellen Sie sicher, dass sie genau den Namen definieren, den Sie als Ausnahme hinzufügen möchten, und nichts anderes. Die unvorsichtige Verwendung regulärer Ausdrücke kann zu unerwünschten Ergebnissen führen, z. B. die Sperrung des Zugriffs auf Webinhalte, die Sie nicht blockieren wollten, oder das Zulassen eines Angriffs, den die XML Cross-Site Scripting-Überprüfung andernfalls blockiert hätte.

Konfiguration des XML Cross-Site Scripting-Checks über die Befehlszeile

Um XML Cross-Site Scripting zu konfigurieren, überprüfen Sie Aktionen und andere Parameter mithilfe der Befehlszeile.

Wenn Sie die Befehlszeilenschnittstelle verwenden, können Sie die folgenden Befehle eingeben, um den XML Cross-Site Scripting Check zu konfigurieren:

> set appfw profile <name> -XMLcross-site scriptingAction (([block] [log] [stats]) | [none])

Um ein XML Cross-Site Scripting zu konfigurieren, überprüfen Sie die Relaxationsregel mithilfe der Befehlszeile.

Sie können Lockerungsregeln hinzufügen, um die Überprüfung von Cross-Site-Scripting-Skriptangriffen an einer bestimmten Stelle zu Bypass. Verwenden Sie den Befehl bind oder unbind, um die Relaxationsregelbindung wie folgt hinzuzufügen oder zu löschen:

> bind appfw profile <name> -XMLcross-site scripting <string> [isRegex (REGEX | NOTREGEX)] [-location ( ELEMENT | ATTRIBUTE )] –comment <string> [-state ( ENABLED | DISABLED )]

> unbind appfw profile <name> -XMLcross-site scripting <String>

Beispiel:

> bind appfw profile test_pr -XMLcross-site scripting ABC

Nach dem Ausführen des obigen Befehls wird die folgende Relaxationsregel konfiguriert. Die Regel ist aktiviert, der Name wird als Literal behandelt (NOTREGEX) und ELEMENT wird als Standardspeicherort ausgewählt:

1)      XMLcross-site scripting:  ABC             IsRegex:  NOTREGEX

        Location:  ELEMENT       State:  ENABLED

`> unbind appfw profile test_pr -XMLcross-site scripting abc`

ERROR: No such XMLcross-site scripting check

`> unbind appfw profile test_pr -XMLcross-site scripting ABC`

 Done
<!--NeedCopy-->

Konfiguration des XML Cross-Site Scripting-Checks mithilfe der GUI

In der GUI können Sie den XML Cross-Site Scripting-Check im Bereich für das mit Ihrer Anwendung verknüpfte Profil konfigurieren.

Um das XML Cross-Site Scripting zu konfigurieren oder zu ändern, überprüfen Sie dies mithilfe der GUI

  1. Navigieren Sie zu Web App Firewall > Profile, markieren Sie das Zielprofil und klicken Sie auf Bearbeiten.
  2. Klicken Sie im Bereich Erweiterte Einstellungen auf Sicherheitsprüfungen.

In der Tabelle zur Sicherheitsüberprüfung werden die aktuell konfigurierten Aktionseinstellungen für alle Sicherheitsüberprüfungen angezeigt. Sie haben 2 Möglichkeiten für die Konfiguration:

a) Wenn Sie nur die Aktionen Block, Logund Stats für die XML Cross-Site Scripting-Überprüfungaktivieren oder deaktivieren möchten, können Sie die Kontrollkästchen in der Tabelle aktivieren oder deaktivieren, auf OKklicken und dann auf Speichern und Schließen klicken, um den Bereich Sicherheitsprüfung zu schließen.

b) Sie können auf XML Cross-Site Scriptingdoppelklicken oder die Zeile auswählen und auf Aktionseinstellungenklicken, um die Aktionsoptionen anzuzeigen. Nachdem Sie eine der Aktionseinstellungen geändert haben, klicken Sie auf OK, um die Änderungen zu speichern und zur Tabelle Sicherheitsprüfungen zurückzukehren.

Sie können bei Bedarf weitere Sicherheitsprüfungen konfigurieren. Klicken Sie auf OK, um alle Änderungen zu speichern, die Sie im Abschnitt Sicherheitsprüfungen vorgenommen haben, und klicken Sie dann auf Speichern und schließen, um den Bereich Sicherheitsüberprüfung zu schließen.

So konfigurieren Sie eine Relaxationsregel für XML Cross-Site Scripting mithilfe der GUI

  1. Navigieren Sie zu Web App Firewall > Profile, markieren Sie das Zielprofil und klicken Sie auf Bearbeiten.
  2. Klicken Sie im Bereich Erweiterte Einstellungen auf Relaxationsregeln.
  3. Doppelklicken Sie in der Tabelle Relaxation Rules auf den EintragXML Cross-Site Scripting, oder wählen Sie ihn aus und klicken Sie auf Bearbeiten.
  4. Führen Sie im Dialogfeld Relaxationsregeln für XML Cross-Site Scripting die Operationen Hinzufügen, Bearbeiten, Löschen, Aktivierenoder Deaktivieren für Relaxationsregeln aus.

So verwalten Sie die Relaxationsregeln für XML Cross-Site Scripting mithilfe des Visualizers

Für eine konsolidierte Ansicht aller Relaxationsregeln können Sie die ZeileXML Cross-Site Scriptingin der Tabelle Relaxation Rules markieren und auf Visualizer klicken. Der Visualizer für bereitgestellte Relaxationen bietet Ihnen die Möglichkeit, eine neue Regel hinzuzufügen oder eine vorhandene zu bearbeiten . Sie können auch eine Gruppe von Regeln aktivieren oder deaktivieren, indem Sie einen Knoten auswählen und auf die entsprechenden Schaltflächen im Relaxationsvisualizer klicken.

So zeigen Sie die Cross-Site Scripting-Muster über die GUI an oder passen sie an

Sie können die GUI verwenden, um die Standardliste der für das Cross-Site Scripting zulässigen Attribute oder zulässigen Tags anzuzeigen oder anzupassen. Sie können auch die Standardliste der Site-übergreifenden Scripting-Muster anzeigen oder anpassen.

Die Standardlisten sind unter Web App Firewall > Signaturen > Standardsignaturenangegeben. Wenn Sie kein Signaturobjekt an Ihr Profil binden, wird das Profil für die Verarbeitung der Cross-Site Scripting-Sicherheitsprüfung die im Objekt Standardsignaturen angegebene Standardliste für Cross-Site Scripting verwendet. Die im Standardsignaturobjekt angegebenen Tags, Attributes und Patterns sind schreibgeschützt. Sie können sie nicht bearbeiten oder ändern. Wenn Sie diese ändern oder ändern möchten, erstellen Sie eine Kopie des Default Signatures -Objekts, um ein benutzerdefiniertes Signaturobjekt zu erstellen. Nehmen Sie Änderungen an den Listen „Zulässig“ oder „Abgelehnt“ im neuen benutzerdefinierten Signaturobjekt vor und verwenden Sie dieses Signaturobjekt in dem Profil, das den Datenverkehr verarbeitet, für den Sie diese benutzerdefinierten Listen für zulässige und abgelehnte Dateien verwenden möchten.

Weitere Hinweise zu Signaturen finden Sie unter http://support.citrix.com/proddocs/topic/ns-security-10-map/appfw-signatures-con.html.

Um standardmäßige Cross-Site-Scripting-Muster anzuzeigen:

  1. Navigieren Sie zu Web App Firewall > Signaturen, wählen Sie *Standardsignaturenaus und klicken Sie auf Bearbeiten. Klicken Sie anschließend auf SQL/Cross-Site-Scripting-Muster verwalten.

Die Tabelle „ SQL/Cross-Site Scripting-Pfade verwalten“ enthält die folgenden drei Zeilen, die sich auf Cross-Site Scripting beziehen:

           xss/allowed/attribute

           xss/allowed/tag

           xss/denied/pattern
<!--NeedCopy-->

Wählen Sie eine Zeile aus und klicken Sie auf Elemente verwalten, um die entsprechenden Cross-Site-Scripting-Elemente (Tag, Attribut, Muster) anzuzeigen, die vom Cross-Site Scripting-Check der Web App Firewall verwendet werden.

So passen Sie Cross-Site-Scripting-Elementean: Sie können das benutzerdefinierte Signaturobjekt bearbeiten, um das zulässige Tag, die zulässigen Attribute und die abgelehnten Muster anzupassen. Sie können neue Einträge hinzufügen oder vorhandene entfernen.

  1. Navigieren Sie zu Web App Firewall > Signaturen, markieren Sie die benutzerdefinierte Zielsignatur und klicken Sie auf Bearbeiten. Klicken Sie auf SQL/Cross-Site-Scripting-Musterverwalten, um die Tabelle SQL/Cross-Site-Scripting-Pfade verwalten anzuzeigen.
  2. Wählen Sie die Cross-Site-Scripting-Zielzeile aus.

a) Klicken Sie auf Elemente verwalten, um das entsprechende Cross-Site-Scripting-Element hinzuzufügen, zu bearbeiten oder zu entfernen .

b) Klicken Sie auf Entfernen, um die ausgewählte Zeile zu entfernen.

Warnung

Seien Sie sehr vorsichtig, wenn Sie ein standardmäßiges Cross-Site-Scripting-Element entfernen oder ändern oder den Cross-Site-Scripting-Pfad löschen, um die gesamte Zeile zu entfernen. Die Signaturen, die Sicherheitsüberprüfung für HTML Cross-Site Scripting und die Sicherheitsüberprüfung für XML Cross-Site Scripting verlassen sich auf diese Elemente, um Angriffe zu erkennen und Ihre Anwendungen zu schützen. Das Anpassen der Cross-Site-Scripting-Elemente kann Ihre Anwendung anfällig für Cross-Site-Scripting-Angriffe machen, wenn das erforderliche Pattern während der Bearbeitung entfernt wird.

Verwendung der Log-Funktion mit dem XML Cross-Site Scripting-Check

Wenn die Protokollaktion aktiviert ist, werden die Verstöße gegen die XML Cross-Site Scripting-Sicherheitsprüfung im Audit-Log als Appfw_XML_Cross-Site Scripting-Verstöße protokolliert. Die Web App Firewall unterstützt sowohl native als auch CEF-Protokollformate. Sie können die Protokolle auch an einen Remote-Syslog-Server senden.

So greifen Sie mit der Befehlszeile auf die Protokollmeldungen zu

Wechseln Sie zur Shell und verfolgen Sie die ns.logs im Ordner /var/log/, um auf die Protokollmeldungen zuzugreifen, die sich auf die Verstöße gegen XML Cross-Site Scripting beziehen:

> \*\*Shell\*\*

> \*\*tail -f /var/log/ns.log | grep APPFW_XML_cross-site scripting\*\*
<!--NeedCopy-->

Beispiel für eine Protokollmeldung zur Verletzung der Sicherheitsüberprüfung durch XML Cross-Site Scripting im systemeigenen Protokollformat mit Aktion <blocked>

Oct  7 01:44:34 <local0.warn> 10.217.31.98 10/07/2015:01:44:34 GMT ns 0-PPE-1 : default APPFW APPFW_XML_cross-site scripting 1154 0 :  10.217.253.69 3466-PPE1 - owa_profile http://10.217.31.101/FFC/login.html Cross-site script check failed for field script="Bad tag: script" <\*\*blocked\*\*>
<!--NeedCopy-->

Beispiel für eine Protokollmeldung zur Verletzung der Sicherheitsüberprüfung durch XML Cross-Site Scripting im CEF-Protokollformat, die die Aktion anzeigt <not blocked>

Oct  7 01:46:52 <local0.warn> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|APPFW_XML_cross-site scripting|4|src=10.217.30.17 geolocation=Unknown spt=33141 method=GET request=http://10.217.31.101/FFC/login.html msg=Cross-site script check failed for field script="Bad tag: script" cn1=1607 cn2=3538 cs1=owa_profile cs2=PPE0 cs4=ERROR cs5=2015 act=\*\*not blocked\*\*
<!--NeedCopy-->

So greifen Sie mit der GUI auf die Protokollmeldungen zu

Die GUI enthält ein nützliches Tool (Syslog Viewer) zur Analyse der Logmeldungen. Sie haben mehrere Optionen für den Zugriff auf den Syslog Viewer:

  • Navigieren Sie zur Web App Firewall > Profile, wählen Sie das Zielprofil aus und klicken Sie auf Security Checks. Markieren Sie die ZeileXML Cross-Site Scriptingund klicken Sie auf Logs. Wenn Sie direkt von der XML Cross-Site Scripting-Überprüfung des Profils aus auf die Protokolle zugreifen, filtert die GUI die Protokollmeldungen heraus und zeigt nur die Protokolle an, die sich auf diese Sicherheitsüberprüfungsverstöße beziehen.

  • Sie können auch auf den Syslog Viewer zugreifen, indem Sie zu NetScaler > System > Auditing navigieren. Klicken Sie im Abschnitt Prüfmeldungen auf den Link Syslog-Meldungen, um den Syslog-Viewer aufzurufen, in dem alle Protokollmeldungen angezeigt werden, einschließlich anderer Protokolle von Verstößen gegen die Sicherheitsüberprüfung. Dies ist nützlich für das Debuggen, wenn während der Anforderungsverarbeitung mehrere Sicherheitsüberprüfungen ausgelöst werden können.

  • Navigieren Sie zu Web App Firewall > Richtlinien > Auditing. Klicken Sie im Abschnitt Prüfmeldungen auf den Link Syslog-Meldungen, um den Syslog-Viewer aufzurufen, in dem alle Protokollmeldungen angezeigt werden, einschließlich anderer Protokolle von Verstößen gegen die Sicherheitsüberprüfung.

Der XML-basierte Syslog-Viewer bietet verschiedene Filteroptionen, um nur die Protokollmeldungen auszuwählen, die für Sie von Interesse sind. Um Protokollnachrichten für denXML Cross-Site Scripting-Checkauszuwählen, filtern Sie, indem Sie in den Dropdownoptionen für ModulAPPFWauswählen. Die Liste Ereignistyp bietet eine Reihe von Optionen, um Ihre Auswahl weiter zu verfeinern. Wenn Sie beispielsweise das Kontrollkästchen Appfw_XML_Cross-Site Scripting aktivieren und auf die Schaltfläche Anwenden klicken, werden im Syslog Viewer nur Protokollmeldungen angezeigt, die sich auf Verstöße gegen die Sicherheitsüberprüfung von XML Cross-Site Scripting beziehen.

Wenn Sie den Cursor in die Zeile für eine bestimmte Protokollnachricht setzen, werden mehrere Optionen wie Modul, Ereignistyp, Ereignis-ID, Client-IP usw. unterhalb der Protokollmeldung angezeigt. Sie können eine dieser Optionen auswählen, um die entsprechenden Informationen in der Protokollmeldung hervorzuheben.

Statistiken zu den Verstößen gegen XML Cross-Site Scripting

Wenn die Statistikaktion aktiviert ist, wird der Zähler für die XML Cross-Site Scripting-Überprüfung erhöht, wenn die Web App Firewall eine Aktion für diese Sicherheitsüberprüfung ergreift. Die Statistiken werden für Rate und Gesamtanzahl für Traffic, Verletzungen und Protokolle gesammelt. Die Größe eines Inkrements des Protokollzählers kann abhängig von den konfigurierten Einstellungen variieren. Wenn beispielsweise die Aktion Blockieren aktiviert ist, erhöht eine Anfrage für eine Seite, die drei Verstöße gegen XML Cross-Site Scripting enthält, den Statistikzähler um eins, da die Seite blockiert wird, sobald der erste Verstoß erkannt wird. Wenn der Block jedoch deaktiviert ist, erhöht die Verarbeitung derselben Anforderung den Statistikindikator für Verletzungen und Protokolle um drei, da jede Verletzung eine separate Protokollmeldung generiert.

Um XML Cross-Site Scripting anzuzeigen, überprüfen Sie die Statistiken mithilfe der Befehlszeile.

Geben Sie in der Befehlszeile Folgendes ein:

> **sh appfw stats**

Verwenden Sie den folgenden Befehl, um Statistiken für ein bestimmtes Profil anzuzeigen:

> **stat appfw profile** <profile name>

So zeigen Sie XML Cross-Site Scripting-Statistiken mithilfe der GUI an

  1. Navigieren Sie zu System > Sicherheit > Web App Firewall.
  2. Greifen Sie im rechten Bereich auf den Statistik-Link zu.
  3. Verwenden Sie die Scrollleiste, um die Statistiken zu Verstößen und Protokollen gegen XML Cross-Site Scripting einzusehen. Die Statistiktabelle enthält Echtzeitdaten und wird alle 7 Sekunden aktualisiert.