Wie lade ich Dateien hoch, die von AWS WAF blockiert werden?

Lesedauer: 8 Minute
0

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

Kurzbeschreibung

Um zu verstehen, warum AWS WAF eine POST-Anfrage blockieren könnte, beachten Sie die folgenden Punkte:

  • Die von AWS WAF\ _BODY verwalteten Regeln überprüfen nur den Anforderungstext bis zur Größenbeschränkung für die Web-Zugriffssteuerungsliste (ACL). Das Limit beträgt 8 KB für regionale Web-ACLs und 16 KB für Amazon-CloudFront-Web-ACLs. Für CloudFront-Web-ACLs können Sie das Limit in Ihrer Web-ACL-Konfiguration auf bis zu 64 KB erhöhen.
  • Die Regeln für SQL-Injection und Cross-Site Scripting (XSS) reagieren empfindlich auf Dateien mit zufälligen Zeichen in ihren Metadaten. Diese zufälligen Zeichen können Web-ACL-Regeln aufrufen, da sie einer tatsächlichen XSS- oder SQL-Injection-Signatur in AWS WAF ähneln.

Sehen Sie sich zunächst die allgemeinen Regeln an, die Dateiuploads blockieren könnten. Wenn eine allgemeine Regel den Upload nicht blockiert, sollten Sie zusätzliche Optionen in Betracht ziehen, um blockierte Dateien zuzulassen.
Die folgenden Regeln blockieren häufig Dateiuploads:

  • CrossSiteScripting_BODY
  • SQLi_BODY
  • WindowsShellCommands_BODY
  • GenericLFI_BODY
  • SizeRestrictions_BODY

Lösung

Dateiuploads, die durch die Regeln SQLi\ _BODY und CrossSiteScripting\ _BODY blockiert werden

Die Regelinformationen finden Sie im Feld terminatingRuleMatchDetails in den umfassenden Protokollen von AWS WAF.

Anmerkung: 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ählen Sie eine der folgenden Optionen:

Bekannte IP-Adressen zu einer sicheren Liste hinzufügen
Wenn Sie den IP-Adressbereich kennen, der auf die Anwendung zugreift, fügen Sie bekannte IP-Adressen zu einer Regel für sichere Listen mit IP-Übereinstimmungsbedingungen hinzu. Eine Anleitung finden Sie unter Arbeiten mit IP-Übereinstimmungsbedingungen.

Verwenden einer sicheren Liste mit einer Übereinstimmungsbedingung
Verwenden Sie eine sichere Liste mit einer Übereinstimmungsbedingung für eine Zeichenfolge oder einen regulären Ausdruck (Regex), um die Anfrage zuzulassen. Sie können eine sichere Liste erstellen, die auf einer URI, HTTP-Überschriften oder einer Phrase basiert, die mit dem BODY der AWS-WAF-Dateien verknüpft ist.

Um Ihre sichere Liste zu erstellen, erstellen Sie eine neue benutzerdefinierte Regel. Diese Regel blockiert XSS- oder SQLi-Vektoren mit einer Ausnahmebedingung, die auf den übereinstimmenden Daten gültiger Anforderungsattribute für den Upload basiert. Stellen Sie sicher, dass Sie die Aktion für die spezifischen Regeln in den verwalteten Regelgruppen außer Kraft setzen, die zu Fehlalarmen führen: SQLi_BODY und CrossSiteScripting_BODY.

Gehen Sie wie folgt vor, um diese benutzerdefinierte Regel zu erstellen:

  1. Öffnen Sie die AWS-WAF-Konsole.
  2. Wählen Sie im Navigationsbereich unter AWS WAF die Option Web-ACLs aus.
  3. Wählen Sie für Region die AWS-Region aus, in der Sie Ihre Web-ACL erstellt haben.
    Anmerkung: Wählen Sie Global aus, wenn Ihre Web-ACL für Amazon CloudFront eingerichtet ist.
  4. Wählen Sie Ihre Web-ACL aus. Wählen Sie dann auf der Web-ACL-Registerkarte Regeln die Option Regeln aus.
  5. Wählen Sie Regeln hinzufügen und dann Eigene Regeln und Regelgruppen hinzufügen aus.
  6. Geben Sie für Name einen Regelnamen ein, und wählen Sie dann reguläre Regel aus.
  7. Wählen Sie für Wenn eine Anfrage die Option allen Angaben entspricht (AND).
  8. Füllen Sie Angabe 1 mit den folgenden Feldern aus:
    Wählen Sie für Prüfen die Option Hat ein Label aus.
    Wählen Sie unter Reichweite anpassen die Option Label.
    Geben Sie 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, geben Sie awswaf:managed:aws:core-rule-set:CrossSiteScripting\ _Body ein.
  9. Füllen Sie Angabe 2 mit den folgenden Feldern aus:
    Aktivieren Sie das Kontrollkästchen für Angabenergebnisse negieren.
    Wählen Sie für Prüfen die Option Inhalt aus.
    Wählen Sie für Typ anpassen die Option Enthält String aus.
    Geben Sie für String anpassen den Wert ein, den Sie mit der Regel abgleichen möchten.
  10. (Optional) Wählen Sie für Text Transformation eine Text Transformation oder Keine aus.
  11. Wählen Sie unter Aktion die Option Blockieren aus. Wählen Sie dann Regel hinzufügen aus.
  12. Verschieben Sie für Regelpriorität aufstellen die Regel unter die verwaltete Regelgruppe, die die Anfrage blockiert. Dadurch wird das verwaltete Regellabel zuerst für die Überprüfung durch die Regelgruppe festgelegt, bevor AWS WAF das Label innerhalb der nächsten Regelpriorität verwendet.
  13. Wählen Sie Speichern.

**Wichtig:**Es hat sich bewährt, Regeln in einer Nicht-Produktionsumgebung zu testen, wobei die Aktion auf Count gesetzt ist. Um die Regel zu evaluieren, verwenden Sie Amazon-CloudWatch-Metriken in Kombination mit Stichproben-anfragen von AWS WAF oder AWS-WAF-Protokollen. Wenn die Regel das tut, was Sie wollen, ändern Sie Aktion in Blockieren.

Dateiuploads werden durch die Regeln WindowsShellCommands\ _BODY, GenericLFI\ _BODY oder SizeRestrictions\ _BODY blockiert

Verwenden Sie eine HTTP-Archivdatei (HAR), wenn die Datei hochgeladen wird. Überprüfen Sie es dann auf die Regeln WindowsShellCommands\ _BODY, GenericLFI\ _BODY oder SizeRestrictions\ _BODY. Anweisungen finden Sie unter Wie erstelle ich eine HAR-Datei in meinem Browser für einen AWS Support-Fall?

Um Fehlalarme für WindowsShellCommands\ _BODY, GenericLFI\ _BODY oder SizeRestrictions\ _BODY zuzulassen, setzen Sie zuerst die entsprechende Regel in den Count-Modus. Anleitungen finden Sie unter Überschreiben des Evaluierungsergebnisses einer Regelgruppe auf Count.

Erstellen Sie dann eine benutzerdefinierte Regel für die bestimmte verwaltete Regel, die den Fehlalarm verursacht:

  1. Öffnen Sie die AWS-WAF-Konsole.
  2. Wählen Sie im Navigationsbereich unter AWS WAF die Option Web-ACLs aus.
  3. Wählen Sie für Region die AWS-Region aus, in der Sie Ihre Web-ACL erstellt haben.
    Anmerkung: Wählen Sie Global aus, wenn Ihre Web-ACL für Amazon CloudFront eingerichtet ist.
  4. Wählen Sie Ihre Web-ACL aus. Wählen Sie dann auf der Web-ACL-Registerkarte Regeln die Option Regeln aus.
  5. Wählen Sie Regeln hinzufügen und dann Eigene Regeln und Regelgruppen hinzufügen aus.
  6. Geben Sie für Name einen Regelnamen ein, und wählen Sie dann reguläre Regel aus.
  7. Wählen Sie für Wenn eine Anfrage die Option allen Angaben entspricht (AND).
  8. Füllen Sie Angabe 1 mit den folgenden Feldern aus:
    Wählen Sie für Prüfen die Option Hat ein Label aus.
    Wählen Sie unter Reichweite anpassen die Option Label.
    Geben Sie 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, geben Sie awswaf:managed:aws:windows-os:WindowsShellCommands\ _Body ein.
  9. Füllen Sie Angabe 2 mit den folgenden Feldern aus:
    Aktivieren Sie das Kontrollkästchen für Angabenergebnisse negieren.
    Wählen Sie für Prüfen die Option URI-Pfad aus.
    Wählen Sie für Typ anpassen die Option Enspricht genau dem String.
    Geben Sie für String anpassen den URI-Pfad ein, unter dem Anfragen gestellt werden.
  10. (Optional) Wählen Sie für Text Transformation eine Text Transformation oder Keine aus.
  11. Wählen Sie unter Aktion die Option Blockieren aus.
  12. Wählen Sie Regel hinzufügen aus.
  13. Verschieben Sie für Regelpriorität aufstellen die Regel unter die verwaltete Regel, die die Anfrage blockiert.
  14. Wählen Sie Speichern.

**Wichtig:**Es hat sich bewährt, Regeln in einer Nicht-Produktionsumgebung zu testen, wobei die Aktion auf Count gesetzt ist. Bewerten Sie die Regel mit CloudWatch-Metriken in Kombination mit AWS-WAF-Beispielanfragen oder AWS-WAF-Protokollen. Wenn die Regel das tut, was Sie wollen, ändern Sie Aktion in Blockieren.

Zusätzliche Optionen, um blockierte Dateien zuzulassen

**Anmerkung:**Regeln werden in derselben Reihenfolge verarbeitet wie ihre Listenreihenfolge in der Web-ACL. Stellen Sie für die folgenden Empfehlungen sicher, dass Sie Ihre Regelprioritäten nach Bedarf neu anordnen.
Wählen Sie die beste Methode für Ihren Anwendungsfall:

  • Wenden Sie einen selektiven Ausschluss mit einer String-Match-Regelanweisung (AWS WAF) oder einer String-Match-Bedingung (AWS WAF Classic) an. Fügen Sie bestimmte Ausdrücke, die mit dem INHALT der Dateien verknüpft sind, zu Ihrer sicheren Liste hinzu. Wenn auf einem bestimmten URI-Pfad falsch-positive Ergebnisse auftreten, fügen Sie den Pfad zu Ihrer sicheren Liste hinzu.
  • Verwenden Sie eine separate Domain für Dateiuploads. Überlegen Sie unbedingt, ob dies eine kostengünstige Option für Ihren Anwendungsfall ist.
  • Scannen (scrubben) Sie Dateien und Bilder nach eingebettetem Code und Daten. Sie können diese Aktion auf der Kundenseite ausführen, bevor Sie die Dateien hochladen. Sie können diese Aktion, wenn Sie eine Ausnahmeregel erstellen, auch nach dem Hochladen der Dateien im Backend ausführen.
  • Komprimieren Sie Dateien, bevor Sie sie hochladen.
    **Warnung:**Stellen Sie sicher, dass Sie keine schädlichen Dateien komprimieren.
  • 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.
    Warnung: Achten Sie darauf, schädliche Bilder nicht zu verschlüsseln.
  • Implementieren Sie Bildoptimierungstechniken wie das Entfernen von Chunks oder das Randomisieren von Bits.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten