Überprüfung des Pufferüberlaufs
Die Pufferüberlaufprüfung erkennt Versuche, einen Pufferüberlauf auf dem Webserver zu verursachen. Wenn die Web App Firewall feststellt, dass die URL, die Cookies oder der Header länger als die konfigurierte Länge sind, blockiert sie die Anfrage, da dies zu einem Pufferüberlauf führen kann.
Die Pufferüberlaufprüfung verhindert Angriffe auf unsichere Betriebssystem- oder Webserver-Software, die abstürzen oder sich unvorhersehbar verhalten können, wenn sie eine Datenzeichenfolge empfängt, die größer ist als sie verarbeiten kann. Richtige Programmiertechniken verhindern Pufferüberläufe, indem eingehende Daten überprüft werden und überlange Zeichenketten entweder zurückgewiesen oder gekürzt werden. Viele Programme überprüfen jedoch nicht alle eingehenden Daten und sind daher anfällig für Pufferüberläufe. Dieses Problem betrifft insbesondere ältere Versionen von Web-Server-Software und Betriebssystemen, von denen viele noch verwendet werden.
Mit der Sicherheitsüberprüfung Buffer Overflow können Sie die Aktionen Block, Logund Stats konfigurieren. Darüber hinaus können Sie auch die folgenden Parameter konfigurieren:
- Maximale URL-Länge. Die maximale Länge, die die Web App Firewall in einer angeforderten URL zulässt. Anfragen mit längeren URLs werden blockiert. Mögliche Werte: 0—65535. Standard: 1024
- Maximale Cookie-Länge. Die maximale Länge, die die Web App Firewall für alle Cookies in einer Anfrage zulässt. Anfragen mit längeren Cookies lösen die Verstöße aus. Mögliche Werte: 0—65535. Standard: 4096
- Maximale Kopfzeilenlänge. Die maximale Länge, die die Web App Firewall für HTTP-Header zulässt. Anfragen mit längeren Kopfzeilen werden blockiert. Mögliche Werte: 0—65535. Standard: 4096
- Länge der Abfragezeichenfolge. Maximal zulässige Länge für eine Abfragezeichenfolge in einer eingehenden Anfrage. Anfragen mit längeren Abfragen werden blockiert. Mögliche Werte: 0—65535. Standard: 1024
- Gesamtlänge der Anfrage. Maximale Anforderungslänge für eine eingehende Anforderung. Anfragen mit längerer Länge werden blockiert. Mögliche Werte: 0—65535. Standard: 24820
Konfiguration der Buffer Overflow-Sicherheitsprüfung über die Befehlszeile
So konfigurieren Sie Buffer Overflow, Sicherheitsüberprüfungsaktionen und andere Parameter mithilfe der Befehlszeile
Geben Sie an der Eingabeaufforderung Folgendes ein:
add appfw profile <name> -bufferOverflowMaxURLLength <positive_integer> -bufferOverflowMaxHeaderLength <positive_integer> - bufferOverflowMaxCookieLength <positive_integer> -bufferOverflowMaxQueryLength <positive_integer> -bufferOverflowMaxTotalHeaderLength <positive_integer>
Beispiel:
add appfw profile profile1 –bufferOverflowMaxURLLength 7000 –bufferOverflowMaxHeaderLength 7250 – bufferOverflowMaxCookieLength 7100 –bufferOverflowMaxQueryLength 7300 –bufferOverflowMaxTotalHeaderLength 7300
Konfigurieren Sie die Sicherheitsprüfung für den Pufferüberlauf mithilfe der NetScaler-GUI
- Navigieren Sie zu Sicherheit > Web App Firewall und Profile.
- Wählen Sie auf der Seite Profile ein Profil aus, und klicken Sie auf Bearbeiten.
- Wechseln Sie auf der NetScaler Web App Firewall Profilseite zum Abschnitt Erweiterte Einstellungen und klicken Sie auf Sicherheitsprüfungen.
- Wählen Sie im Abschnitt Sicherheitsprüfungen die Option Buffer Overflow aus und klicken Sie auf Aktionseinstellungen.
- Stellen Sie auf der Seite Buffer Overflow Settings die folgenden Parameter ein. a. Aktionen. Wählen Sie eine oder mehrere Aktionen aus, die für die Sicherheitsprüfung durch Command Injection ausgeführt werden sollen. b. Maximale URL-Länge. Maximale Länge in Zeichen für URLs auf Ihren geschützten Websites. Anfragen mit längeren URLs werden blockiert. c. Maximale Cookie-Länge. Maximale Länge in Zeichen für Cookies, die an Ihre geschützten Websites gesendet werden. Anfragen mit längeren Cookies werden blockiert. d. Maximale Header-Länge. Maximale Länge in Zeichen für HTTP-Header in Anfragen, die an Ihre geschützten Websites gesendet werden. Anfragen mit längeren Kopfzeilen werden blockiert. e. Maximale Abfragelänge. Maximale Länge in Byte für eine Abfragezeichenfolge, die an Ihre geschützten Websites gesendet wird. Anfragen mit längeren Abfragezeichenfolgen werden blockiert. f. Maximale Gesamt-Header-Länge. Maximale Länge in Byte für die gesamte HTTP-Headerlänge von Anfragen, die an Ihre geschützten Websites gesendet werden. Der Mindestwert von this und maxHeaderLen in HttpProfile wird verwendet. Anfragen mit längerer Länge werden blockiert.
-
Klicken Sie auf OK und schließen.
Verwendung der Protokollfunktion mit dem Buffer Overflow Security Check
**Wenn die Protokollaktion aktiviert ist, werden die Verstöße gegen die Buffer Overflow-Sicherheitsprüfung im Audit-Log als **APPFW_BUFFEROVERFLOW_URL-, APPFW_BUFFEROVERFLOW_COOKIE- und APPFW_BUFFEROVERFLOW_HDR-Verstößeprotokolliert.** Die Web App Firewall unterstützt sowohl native als auch CEF-Protokollformate. Sie können die Protokolle auch an einen Remote-Syslog-Server senden.
Wenn Sie die Protokolle mithilfe der GUI überprüfen, können Sie die Click-to-Deploy-Funktion verwenden, um die in den Protokollen angegebenen Lockerungen vorzunehmen.
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 Logmeldungen zuzugreifen, die sich auf die Buffer Overflow-Verstöße beziehen:
> \*\*Shell\*\*
> \*\*tail -f /var/log/ns.log | grep APPFW_BUFFEROVERFLOW\*\*
<!--NeedCopy-->
Beispiel für eine CEF-Protokollmeldung, die eine BufferOverflowMaxCookieLength-Verletzung im Nichtblockmodus anzeigt
Oct 22 17:35:20 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_COOKIE\*\*|6|src=10.217.253.62 geolocation=Unknown spt=41198 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=Cookie header length(43) is greater than maximum allowed(16).\*\* cn1=119 cn2=465 cs1=owa_profile cs2=PPE1 cs3=wvOOOb+cJ2ZRbstZpyeNXIqLj7Y0001 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*
<!--NeedCopy-->
Beispiel für eine CEF-Protokollmeldung, die eine BufferOverflowMaxUrlLength-Verletzung im Nicht-Blockmodus anzeigt
Oct 22 18:39:56 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_URL\*\*|6|src=10.217.253.62 geolocation=Unknown spt=19171 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=URL length(39) is greater than maximum allowed(20).\*\* cn1=707 cn2=402 cs1=owa_profile cs2=PPE0 cs3=kW49GcKbnwKByByi3+jeNzfgWa80000 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*
<!--NeedCopy-->
Beispiel für eine Logmeldung im Native Format, die eine BufferOverflowMaxHeaderLength-Verletzung im Blockmodus anzeigt
Oct 22 18:44:00 <local0.info> 10.217.31.98 10/22/2015:18:44:00 GMT ns 0-PPE-2 : default APPFW \*\*APPFW_BUFFEROVERFLOW_HDR\*\* 155 0 : 10.217.253.62 374-PPE2 khhBEeY4DB8V2D3H2sMLkXmfWnA0002 owa_profile \*\*Header(User-Agent) length(82) is greater than maximum allowed(10)\*\* : http://aaron.stratum8.net/ \*\*<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 zu Application Firewall > Profile, wählen Sie das Zielprofil aus und klicken Sie auf Sicherheitsüberprüfungen. Markieren Sie die Zeile Buffer Overflow und klicken Sie auf Logs. Wenn Sie direkt über den Buffer Overflow Security Check des Profils 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 Audit-Meldungen auf den Link Syslog-Meldungen, um den Syslog-Viewer aufzurufen, in dem alle Protokollmeldungen einschließlich anderer Sicherheitsüberprüfungsverstöße angezeigt werden. 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 Application Firewall > Richtlinien > Überwachung. Klicken Sie im Abschnitt Audit-Meldungen auf den Link Syslog-Meldungen, um den Syslog-Viewer aufzurufen, in dem alle Protokollmeldungen einschließlich anderer Sicherheitsüberprüfungsverstöße angezeigt werden.
Der XML-basierte Syslog-Viewer bietet verschiedene Filteroptionen, um nur die Protokollmeldungen auszuwählen, die für Sie von Interesse sind. Um Protokollmeldungen für die Pufferüberlaufprüfung auszuwählen, filtern Sie, indem Sie APPFW in der Dropdownliste Optionen für Modul auswählen. Die Liste derEreignistypenbietet drei Optionen:APPFW_BUFFEROVERFLOW_URL, APPFW_BUFFEROVERFLOW_COOKIE und A PPFW_BUFFEROVERFLOW_HDR**, um alle Protokollmeldungen anzuzeigen, die sich auf die Sicherheitsüberprüfungfür den Pufferüberlauf beziehen.** Sie können eine oder mehrere Optionen auswählen, um Ihre Auswahl weiter zu verfeinern. Wenn Sie beispielsweise das Kontrollkästchen APPFW_BUFFEROVERFLOW_COOKIE aktivieren und auf die Schaltfläche Anwenden klicken, werden im Syslog-Viewer nur Protokollmeldungen angezeigt, die sich auf Verstöße gegen die Buffer Overflow-Sicherheitsprüfung für den Cookie-Header beziehen. Wenn Sie den Cursor in die Zeile für eine bestimmte Protokollmeldung setzen, werden unter der Protokollmeldung mehrere Optionen wie Modul, Ereignistyp, Ereignis-IDund Client-IPangezeigt. Sie können eine dieser Optionen auswählen, um die entsprechenden Informationen in der Protokollmeldung hervorzuheben.
Click-to-Deploy: Die GUI bietet Click-to-Deploy-Funktionen, die derzeit nur für die Pufferüberlauf-Logmeldungen unterstützt werden, die sich auf Verstöße gegen die URL-Länge beziehen.Mit dem Syslog-Viewer können Sie nicht nur die ausgelösten Verstöße einsehen, sondern auch fundierte Entscheidungen treffen, die auf der beobachteten Länge der blockierten Nachrichten basieren. Wenn der aktuelle Wert zu restriktiv ist und falsch positive Ergebnisse auslöst, können Sie eine Nachricht auswählen und sie bereitstellen, um den aktuellen Wert durch den in der Nachricht angezeigten URL-Längenwert zu ersetzen. Die Protokollmeldungen müssen für diesen Vorgang im CEF-Protokollformat vorliegen. Wenn die Lockerung für eine Protokollmeldung eingesetzt werden kann, wird am rechten Rand desSyslog-Viewer-Felds in der Zeileein Kontrollkästchen angezeigt. Markieren Sie das Kontrollkästchen und wählen Sie dann eine Option aus derAktionslisteaus, um die Entspannung bereitzustellen.“Bearbeiten und Bereitstellen”, “Bereitstellen” und “Alle bereitstellen” sind alsAktionsoptionenverfügbar. Sie können den FilterAPPFW_BUFFEROVERFLOW_URL verwenden, um alle Protokollnachrichten zu isolieren, die sich auf die konfigurierten URL-Längenverletzungen beziehen.
Wenn Sie eine einzelne Protokollnachricht auswählen, sind alle drei Aktionsoptionen Bearbeiten und Bereitstellen, Bereitstellenund Alle bereitstellen verfügbar. Wenn Sie Bearbeiten und Deploywählen, wird das Dialogfeld mit den Buffer Overflow-Einstellungen angezeigt. Die neue URL-Länge, die in der Anfrage beobachtet wurde, wird in das Eingabefeld Maximale URL-Länge eingefügt. Wenn Sie ohne Änderungen auf Schließen klicken, bleiben die aktuell konfigurierten Werte unverändert. Wenn Sie auf die Schaltfläche OK klicken, ersetzt der neue Wert der maximalen URL-Länge den vorherigen Wert.
Hinweis
Die Kontrollkästchen für Block-, Protokoll - und Statistikaktionen sind im angezeigten Einstellungsdialog für Buffer Overflow deaktiviert und müssen neu konfiguriert werden, wenn Sie die Option Bearbeiten und Bereitstellen auswählen. Stellen Sie sicher, dass diese Kontrollkästchen aktiviert sind, bevor Sie auf OKklicken. Andernfalls wird die neue URL-Länge konfiguriert, die Aktionen jedoch auf „ Keine“ gesetzt.
Wenn Sie die Kontrollkästchen für mehrere Protokollmeldungen aktivieren, können Sie die Option Bereitstellen oder Alle bereitstellen verwenden. Wenn die bereitgestellten Protokollnachrichten unterschiedliche URL-Längen haben, wird der konfigurierte Wert durch den höchsten Wert für die URL-Länge ersetzt, der in den ausgewählten Nachrichten beobachtet wurde. Die Bereitstellung der Regel führt nur dazu, dass der Wert von bufferOverflowMaxUrlLength geändert wird. Konfigurierte Aktionen werden beibehalten und bleiben unverändert.
Um die Click-to-Deploy-Funktionalität in der GUI zu verwenden
- Wählen Sie im Syslog Viewer in den ModuloptionenAPPFW aus.
- Aktivieren Sie das KontrollkästchenAPPFW_BUFFEROVERFLOW_URLals Ereignistyp, um die entsprechenden Protokollmeldungen zu filtern.
- Aktivieren Sie das Kontrollkästchen, um die Regel auszuwählen.
- Verwenden Sie die Dropdownliste Aktion mit den Optionen, um die Entspannung einzusetzen.
- Navigieren Sie zu Application Firewall > Profile, wählen Sie das Zielprofil aus und klicken Sie auf Sicherheitsprüfungen, um den Bereich mit den Einstellungen für den Buffer Overflow aufzurufen und zu überprüfen, ob der Wert für die maximale URL-Länge aktualisiert wurde.
Statistiken für die Buffer Overflow-Verstöße
Wenn die Statistikaktion aktiviert ist, wird der Zähler für die Pufferüberlauf-Sicherheitsprü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 Buffer Overflow-Verstöße enthält, den Statistikzähler um eins, da die Seite blockiert wird, wenn der erste Verstoß erkannt wird. Wenn der Block jedoch deaktiviert ist, erhöht die Verarbeitung derselben Anfrage den Statistikzähler für Verstöße, da bei jeder Verletzung eine separate Protokollmeldung generiert wird.
So zeigen Sie die Buffer Overflow Security Check-Statistiken mithilfe der Befehlszeile an
Geben Sie an der Eingabeaufforderung 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 Buffer Overflow-Statistiken mithilfe der GUI an
- Navigieren Sie zu System > Sicherheit > Anwendungsfirewall.
- Greifen Sie im rechten Bereich auf den Statistik-Link zu.
- Verwenden Sie die Scrollleiste, um die Statistiken zu Buffer Overflow-Verstößen und Protokollen einzusehen. Die Statistiktabelle enthält Echtzeitdaten und wird alle 7 Sekunden aktualisiert.
Highlights
-
Mit der Pufferüberlauf-Sicherheitsprüfung können Sie Grenzwerte konfigurieren, um die maximale Länge der zulässigen URLs, Cookies und Header durchzusetzen.
-
Mit den AktionenBlock, Log und Stats können Sie den Datenverkehr überwachen und den optimalen Schutz für Ihre Anwendung konfigurieren.
-
Mit dem Syslog-Viewer können Sie alle Protokollmeldungen filtern und anzeigen, die sich auf Verstöße gegen den Pufferüberlauf beziehen.
-
DieClick-to-Deploy-Funktion wird für die BufferOverflowMaxURLength-Verstöße unterstützt. Sie können eine einzelne Regel auswählen und implementieren, oder Sie können mehrere Protokollnachrichten auswählen, um den aktuell konfigurierten Wert der maximal zulässigen Länge der URL zu optimieren und zu lockern. Der höchste Wert der URL aus der ausgewählten Gruppe wird als neuer Wert festgelegt, um all diese Anfragen zuzulassen, die derzeit als Verstöße gekennzeichnet sind.
-
Die Web App Firewall wertet jetzt einzelne Cookies aus, wenn sie die eingehende Anfrage untersucht. Wenn die Länge eines im Cookie-Header empfangenen Cookies die konfigurierte BufferOverflowMaxCookieLength überschreitet, wird die Buffer Overflow-Verletzungausgelöst.
Wichtig
In Version 10.5.e (in einigen Versionen mit Zwischenverbesserungen vor dem Build 59.13xx.e) und in der Version 11.0 (in Builds vor 65.x) wurde die Verarbeitung des Cookie-Headers durch die Web App Firewall geändert. In diesen Versionen wird jedes Cookie einzeln ausgewertet, und wenn die Länge eines im Cookie-Header empfangenen Cookies die konfigurierte bufferOverflowMaxCookieLength überschreitet, wird die Pufferüberlaufverletzung ausgelöst. Infolge dieser Änderung sind Anforderungen, die in 10.5 und früheren Release-Builds blockiert wurden, möglicherweise zulässig, da die Länge des gesamten Cookie-Headers nicht für die Bestimmung der Cookie-Länge berechnet wird. ** In einigen Situationen ist die gesamte Cookie-Größe, die an den Server weitergeleitet wird, möglicherweise größer als der akzeptierte Wert, und der Server reagiert möglicherweise mit “400 Bad Request”.
Diese Änderung wurde rückgängig gemacht. Das Verhalten in den 10.5.e ->59.13xx.e und nachfolgenden 10.5.e-Erweiterungsversionen zusätzlich zu Version 65.x 11.0 und nachfolgenden Builds ähnelt jetzt dem der Builds ohne Erweiterung von Version 10.5. Der gesamte rohe Cookie-Header wird jetzt bei der Berechnung der Länge des Cookies berücksichtigt. Umgebende Räume und die Semikolon-Zeichen (;), die die Name-Wert-Paare trennen, werden ebenfalls bei der Bestimmung der Cookie-Länge berücksichtigt.