Direkt zum Inhalt

Warum blockiert AWS WAF meine legitime Upload-Anfrage?

Lesedauer: 7 Minute
0

Ich möchte eine Datei hochladen (POST), die eine Erweiterung verwendet, die von AWS WAF blockiert wird.

Kurzbeschreibung

AWS WAF blockiert möglicherweise eine POST-Anfrage aus einem der folgenden Gründe:

  • Deine Datei ist größer als die maximale Größe des Anfragentexts, die AWS WAF überprüfen kann. AWS WAF hat feste Größenkontingente für Texteinsichten.
  • Die Regeln für SQL-Injektion und Cross-Site-Scripting (XSS) reagieren empfindlich auf Dateien mit zufälligen Zeichen in ihren Metadaten. Diese zufälligen Zeichen können Regeln für Web Access Control List (Web ACL) aufrufen. Dies liegt an ihrer Ähnlichkeit mit einer tatsächlichen XSS- oder SQL-Injektions-Signatur in AWS WAF.

Sieh dir zunächst die allgemeinen Regeln an, die Dateiuploads blockieren könnten. Wenn eine allgemeine Regel den Upload nicht blockiert, solltest du zusätzliche Optionen in Betracht ziehen, um blockierte Dateien zuzulassen.

Die folgenden Regeln blockieren häufig Datei-Uploads:

  • SQLi_BODY
  • CrossSiteScripting_BODY
  • WindowsShellCommands_BODY
  • GenericLFI_BODY
  • SizeRestrictions_BODY

Lösung

Dateiuploads, die durch die Regeln SQLi_BODY und CrossSiteScripting_BODY blockiert werden

Die Regelinformationen findest du im Feld terminatingRuleMatchDetails in deinen umfassenden Protokollen von AWS WAF.

Hinweis: Das Feld terminatingRuleMatchDetails wird nur für SQLi\ _BODY- und CrossSiteScripting\ _BODY-Angriffe ausgefüllt.

Das Folgende ist ein Beispiel für matchedData für CrossSiteScripting\ _BODY:

"terminatingRuleMatchDetails": [{        
        "conditionType": "XSS",        
        "location": "BODY",
        "matchedData": [
            "

Das Folgende ist ein Beispiel für matchedData für SQLi_BODY:

"terminatingRuleMatchDetails": [{        
        "conditionType": "SQL_INJECTION",        
        "location": "BODY",
        "matchedData": [
            ")",
            "*",
            "(",
            "0"
        ]

Um blockierte Uploads von SQLi_BODY oder CrossSiteScripting_BODY zu beheben, wähle eine der folgenden Optionen:

Bekannte IP-Adressen zu einer sicheren Liste hinzufügen

Wenn du den IP-Adressbereich kennst, der auf deine Anwendung zugreift, verwende IP-Übereinstimmungsbedingungen. Dadurch werden die IP-Adressen einer Regel für sichere Listen hinzugefügt.

Verwenden einer sicheren Liste mit einer Übereinstimmungsbedingung

Verwende eine sichere Liste mit einer Übereinstimmungsbedingung für eine Zeichenfolge oder einen regulären Ausdruck (Regex), um die Anfrage zuzulassen. Erstelle eine sichere Liste, die auf einer URI, HTTP-Überschriften oder einer Phrase basiert, die mit dem Text der AWS-WAF-Dateien verknüpft ist.

Verwende eindeutige Identifikatoren in deiner sicheren Liste, um Anfragen zu identifizieren, die als legitim angesehen werden können.

Um deine sichere Liste zu erstellen, erstelle eine neue benutzerdefinierte Regel. Diese Regel blockiert XSS- oder SQLi-Vektoren mit einer Ausnahmebedingung. Die Bedingung basiert auf den übereinstimmenden Daten gültiger Anfrageattribute für den Upload. Setze die Aktion für die spezifischen Regeln in den verwalteten Regelgruppen außer Kraft, die zu Fehlalarmen führen. Setze für diese SQLi_BODY und CrossSiteScripting_BODY auf Count.

Gehe wie folgt vor, um diese benutzerdefinierte Regel zu erstellen:

  1. Öffne die AWS-WAF-Konsole.
  2. Wähle im Navigationsbereich AWS WAF aus.
  3. Wähle Ressourcen und Schutzpakete aus.
  4. Suche das Schutzpaket und wähle neben Regeln die Option Anzeigen und Bearbeiten aus.
  5. Wähle im rechten Bereich Regeln hinzufügen aus.
    Wähle Benutzerdefinierte Regel aus und klicke auf Weiter.
    Wähle erneut Benutzerdefinierte Regel aus und klicke auf Weiter.
  6. Aktualisiere die Regel Aktion zu BLOCKIEREN.
  7. Gib den Regelnamen ein.
  8. Erweitere für Wenn eine Anfrage das Drop-down-Menü und wähle Entspricht allen Anweisungen (UND).
  9. Gehe für Anweisung 1 wie folgt vor:
    Wählen für Prüfen Hat ein Label.
    Wähle für Anweisung die Option Label aus.
    Gib für Schlüssel anpassen das Label für die Regel ein, die den Falschalarm generiert.Wenn beispielsweise die Regel CrossSiteScripting_BODY einen falsch-positiven Wert erzeugt, gib awswaf:managed:aws:core-rule-set:CrossSiteScripting_Body ein.
  10. Gehe für Anweisung 2 wie folgt vor: Wähle für Prüfen die Option Text aus.
    Wähle für Anweisung die Option Handhabung von Übergrößen aus, um fortzufahren.
    Wähle für Übereinstimmungstyp die Option Enthält Zeichenfolge.
    Gib für Zeichenfolge anpassen den Wert ein, den du mit der Regel abgleichen möchtest.
    (Optional) Wähle für Texttransformation eine Texttransformation oder Keine aus.
    Erweitere die Regelkonfiguration und wähle unter Anweisung negieren (NICHT) die Option Anweisungsergebnisse negieren aus.
  11. Wähle Regel erstellen aus.
  12. Um die Regelpriorität festzulegen, wähle im rechten Bereich die Option Regelreihenfolge bearbeiten aus und ziehe diese Regel unter die verwaltete Regelgruppe, die die Anfrage blockiert. Dadurch wird die Bezeichnung der verwalteten Regel als erstes für die Überprüfung durch die Regelgruppe festgelegt. AWS WAF verwendet dann das Label innerhalb der nächsten Regelpriorität.
  13. Wähle Regelreihenfolge speichern aus.

**Hinweis:**Es hat sich bewährt, Regeln in einer Nicht-Produktionsumgebung zu testen, wobei die Aktion auf Count gesetzt ist. Um die Regel zu evaluieren, verwende Amazon-CloudWatch-Metriken in Kombination mit Stichprobenanfragen von AWS WAF oder AWS-WAF-Protokollen. Wenn die Regel erwartungsgemäß ausgeführt wird, ändere die Aktion in Blockieren.

Dateiuploads werden durch die Regeln WindowsShellCommands_BODY, GenericLFI_BODY oder SizeRestrictions_BODY blockiert

Erstelle eine HTTP-Archivdatei (HAR), wenn die Datei hochgeladen wird. Überprüfe es dann auf die Regeln WindowsShellCommands_BODY, GenericLFI_BODY oder SizeRestrictions_BODY.

Um Fehlalarme für WindowsShellCommands_BODY, GenericLFI_BODY oder SizeRestrictions_BODY zuzulassen, setze zuerst die blockierende Regel auf Count. Anleitungen findest du unter Überschreiben des Evaluierungsergebnisses einer Regelgruppe auf Count.

Erstelle dann eine benutzerdefinierte Regel für die verwaltete Regel, die den Fehlalarm verursacht:

  1. Öffne die AWS-WAF-Konsole.
  2. Wähle im Navigationsbereich AWS WAF aus.
  3. Wähle Ressourcen und Schutzpakete aus.
  4. Suche das Schutzpaket und wähle neben Regeln die Option Anzeigen und Bearbeiten aus.
  5. Wähle im rechten Bereich Regeln hinzufügen aus.
    Wähle Benutzerdefinierte Regel aus und klicke auf Weiter.
    Wähle erneut Benutzerdefinierte Regel aus und klicke auf Weiter.
  6. Aktualisiere die Regel Aktion zu BLOCKIEREN.
  7. Gib den Regelnamen ein.
  8. Erweitere für Wenn eine Anfrage das Drop-down-Menü und wähle Entspricht allen Anweisungen (UND).
  9. Gehe für Anweisung 1 wie folgt vor:
    Wählen für Prüfen Hat ein Label.
    Wähle für Anweisung die Option Label aus.
    Gib für Schlüssel anpassen das Label für die Regel ein, die den Falschalarm generiert. Wenn beispielsweise die Regel WindowsShellCommands_BODY einen Falschalarm generiert, gib awswaf:managed:aws:windows-os:WindowsShellCommands_Body ein.
  10. Gehe für Anweisung 2 wie folgt vor:
    Wähle für Prüfen den URI-Pfad aus. Wähle unter Anweisung für Übereinstimmungstyp die Option Stimmt genau mit Zeichenfolge überein aus.
    Gib für Zeichenfolge anpassen den URI-Pfad ein, unter dem zurzeit Anfragen gestellt werden.
    (Optional) Wähle für Texttransformation eine Texttransformation oder Keine aus.
    Erweitere die Regelkonfiguration und wähle unter Anweisung negieren (NICHT) die Option Anweisungsergebnisse negieren aus.
  11. Wähle Regel erstellen aus.
  12. Um die Regelpriorität festzulegen, wähle im rechten Bereich die Option Regelreihenfolge bearbeiten aus und ziehe diese Regel unter die verwaltete Regelgruppe, die die Anfrage blockiert.
  13. Wähle Regelreihenfolge speichern aus.

**Hinweis:**Es hat sich bewährt, Regeln in einer Nicht-Produktionsumgebung zu testen, wobei die Aktion auf Count gesetzt ist. Um die Regel zu evaluieren, verwende CloudWatch-Metriken in Kombination mit Stichproben-anfragen von AWS WAF oder AWS-WAF-Protokollen. Wenn die Regel erwartungsgemäß ausgeführt wird, ändere die Aktion in Blockieren.

Zusätzliche Optionen, um blockierte Dateien zuzulassen

Hinweis: Regeln werden in der Reihenfolge verarbeitet, in der sie aufgeführt sind. Ordne deine Regelprioritäten für die folgenden bewährten Methoden nach Bedarf neu an.

Wähle die beste Methode für deinen Anwendungsfall aus:

  • Wende einen selektiven Ausschluss mit einer String-Match-Regelanweisung (AWS WAF) oder einer String-Match-Bedingung (AWS WAF Classic) an. Füge bestimmte Ausdrücke, die mit dem Text der Dateien verknüpft sind, zu deiner sicheren Liste hinzu. Zum Beispiel: Wenn auf einem bestimmten URI-Pfad falsch-positive Ergebnisse auftreten, füge den Pfad zu deiner sicheren Liste hinzu.
  • Verwende eine separate Domain für Dateiuploads. Prüfe, ob dies eine kostengünstige Option für deinen Anwendungsfall ist.
  • Scanne (scrubbe) Dateien und Bilder nach eingebettetem Code und Daten. Du kannst diese Aktion auf der Kundenseite ausführen, bevor du die Dateien hochlädst. Du kannst diese Aktion, wenn du eine Ausnahmeregel erstellst, auch nach dem Hochladen der Dateien im Backend ausführen.
  • Komprimiere Dateien, bevor du sie hochlädst.
    **Hinweis:**Stelle sicher, dass du keine schädlichen Dateien komprimierst.
  • Wenn der Upload von einer Reihe bekannter IP-Adressen aus erfolgt, fügen Sie diese IP-Adressen Ihrer sicheren Liste hinzu.
  • Verwenden Sie die Base64-Codierung, um alle Bilddaten zu kodieren, sodass AWS WAF XSS oder SQLi für Bilder nicht aufruft.
    **Hinweis:**Stelle sicher, dass du keine schädlichen Bilder verschlüsselst.
  • Implementiere Bildoptimierungstechniken wie das Entfernen von Chunks oder das Randomisieren von Bits.
AWS OFFICIALAktualisiert vor 9 Monaten