AWS - WAF Enum
AWS - Enumerazione di AWS WAF
AWS WAF
AWS WAF è un firewall per applicazioni web progettato per proteggere le applicazioni web o API da vari exploit web che potrebbero comprometterne la disponibilità, la sicurezza o il consumo di risorse. Permette agli utenti di controllare il traffico in ingresso configurando regole di sicurezza che mitigano tipici vettori di attacco come l'SQL injection o lo scripting tra siti e definendo anche regole di filtraggio personalizzate.
Concetti chiave
Web ACL (Access Control List)
Un Web ACL è una raccolta di regole che è possibile applicare alle proprie applicazioni web o API. Quando si associa un Web ACL a una risorsa, AWS WAF ispeziona le richieste in ingresso in base alle regole definite nel Web ACL e adotta le azioni specificate.
Gruppo di regole
Un Gruppo di regole è una raccolta riutilizzabile di regole che è possibile applicare a più Web ACL. I gruppi di regole aiutano a gestire e mantenere insiemi di regole coerenti tra diverse applicazioni web o API.
Ogni gruppo di regole ha la sua capacità associata, che aiuta a calcolare e controllare le risorse operative utilizzate per eseguire le proprie regole, gruppi di regole e Web ACL. Una volta impostato il suo valore durante la creazione, non è possibile modificarlo.
Regola
Una regola definisce un insieme di condizioni che AWS WAF utilizza per ispezionare le richieste web in ingresso. Ci sono due tipi principali di regole:
Regola regolare: Questo tipo di regola utilizza condizioni specificate per determinare se consentire, bloccare o contare le richieste web.
Regola basata sul tasso: Conta le richieste da un indirizzo IP specifico in un periodo di cinque minuti. Qui, gli utenti definiscono una soglia e se il numero di richieste da un IP supera questo limite entro cinque minuti, le richieste successive da quell'IP vengono bloccate fino a quando il tasso di richiesta scende al di sotto della soglia. La soglia minima per le regole basate sul tasso è di 2000 richieste.
Regole gestite
AWS WAF offre set di regole preconfigurati e gestiti che sono mantenuti da AWS e dai venditori del Marketplace di AWS. Questi set di regole forniscono protezione contro minacce comuni e vengono regolarmente aggiornati per affrontare nuove vulnerabilità.
Insieme di IP
Un Insieme di IP è un elenco di indirizzi IP o intervalli di indirizzi IP che si desidera consentire o bloccare. Gli insiemi di IP semplificano il processo di gestione delle regole basate su IP.
Insieme di modelli Regex
Un Insieme di modelli Regex contiene una o più espressioni regolari (regex) che definiscono modelli da cercare nelle richieste web. Questo è utile per scenari di corrispondenza più complessi, come il filtraggio di sequenze specifiche di caratteri.
Token di blocco
Un Token di blocco viene utilizzato per il controllo della concorrenza durante l'apportare modifiche alle risorse di WAF. Garantisce che le modifiche non vengano sovrascritte accidentalmente da più utenti o processi che tentano di aggiornare contemporaneamente la stessa risorsa.
Chiavi API
Le Chiavi API in AWS WAF vengono utilizzate per autenticare le richieste a determinate operazioni API. Queste chiavi sono crittografate e gestite in modo sicuro per controllare l'accesso e garantire che solo gli utenti autorizzati possano apportare modifiche alle configurazioni di WAF.
Esempio: Integrazione dell'API CAPTCHA.
Politica di autorizzazione
Una Politica di autorizzazione è una policy IAM che specifica chi può eseguire azioni sulle risorse di AWS WAF. Definendo le autorizzazioni, è possibile controllare l'accesso alle risorse di WAF e garantire che solo gli utenti autorizzati possano creare, aggiornare o eliminare configurazioni.
Ambito
Il parametro di ambito in AWS WAF specifica se le regole e le configurazioni di WAF si applicano a un'applicazione regionale o a una distribuzione Amazon CloudFront.
REGIONALE: Si applica ai servizi regionali come Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito user pool, servizio AWS App Runner e istanza AWS Verified Access. Si specifica la regione AWS in cui si trovano queste risorse.
CLOUDFRONT: Si applica alle distribuzioni Amazon CloudFront, che sono globali. Le configurazioni di WAF per CloudFront sono gestite attraverso la regione
us-east-1
indipendentemente da dove viene servito il contenuto.
Funzionalità chiave
Criteri di monitoraggio (Condizioni)
Le Condizioni specificano gli elementi delle richieste HTTP/HTTPS in ingresso che AWS WAF monitora, tra cui XSS, posizione geografica (GEO), indirizzi IP, vincoli di dimensione, SQL Injection e modelli (corrispondenza di stringhe e regex). È importante notare che le richieste limitate a livello di CloudFront in base al paese non raggiungeranno WAF.
Ogni account AWS può configurare:
100 condizioni per ogni tipo (tranne per Regex, dove sono consentite solo 10 condizioni, ma questo limite può essere aumentato).
100 regole e 50 Web ACL.
Un massimo di 5 regole basate sul tasso.
Un throughput di 10.000 richieste al secondo quando WAF è implementato con un bilanciamento del carico dell'applicazione.
Azioni delle regole
Le azioni vengono assegnate a ciascuna regola, con le opzioni:
Consenti: La richiesta viene inoltrata alla distribuzione CloudFront appropriata o al bilanciamento del carico dell'applicazione.
Blocca: La richiesta viene terminata immediatamente.
Conta: Conta le richieste che soddisfano le condizioni della regola. Questo è utile per il test della regola, confermando l'accuratezza della regola prima di impostarla su Consenti o Blocca.
CAPTCHA e Sfida: Viene verificato che la richiesta non provenga da un bot utilizzando puzzle CAPTCHA e sfide silenziose.
Se una richiesta non corrisponde a nessuna regola all'interno del Web ACL, viene sottoposta all'azione predefinita (Consenti o Blocca). L'ordine di esecuzione delle regole, definito all'interno di un Web ACL, è cruciale e di solito segue questa sequenza:
Consenti gli IP in whitelist.
Blocca gli IP in blacklist.
Blocca le richieste che corrispondono a eventuali firme dannose.
Integrazione con CloudWatch
AWS WAF si integra con CloudWatch per il monitoraggio, offrendo metriche come RichiesteConsentite, RichiesteBloccate, RichiesteContate e RichiestePassate. Queste metriche vengono segnalate ogni minuto per impostazione predefinita e conservate per un periodo di due settimane.
Enumerazione
Per interagire con le distribuzioni CloudFront, è necessario specificare la Regione US East (N. Virginia):
CLI - Specificare la Regione US East quando si utilizza l'ambito CloudFront:
--scope CLOUDFRONT --region=us-east-1
.API e SDK - Per tutte le chiamate, utilizzare il punto di accesso della Regione us-east-1.
Per interagire con i servizi regionali, è necessario specificare la regione:
Esempio con la regione Europa (Spagna):
--scope REGIONAL --region=eu-south-2
Post Esploitation / Bypass
Dal punto di vista di un attaccante, questo servizio può aiutare l'attaccante a identificare le protezioni WAF e le esposizioni di rete che potrebbero aiutarlo a compromettere altri siti web.
Tuttavia, un attaccante potrebbe anche essere interessato a interrompere questo servizio in modo che i siti web non siano protetti dal WAF.
In molte delle operazioni di Eliminazione e Aggiornamento sarebbe necessario fornire il token di blocco. Questo token viene utilizzato per il controllo di concorrenza sulle risorse, garantendo che le modifiche non vengano sovrascritte accidentalmente da più utenti o processi che tentano di aggiornare contemporaneamente la stessa risorsa. Per ottenere questo token è possibile eseguire le operazioni elenco o ottenere corrispondenti sulla risorsa specifica.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Un attaccante potrebbe compromettere la sicurezza della risorsa interessata:
Creando gruppi di regole che potrebbero, ad esempio, bloccare il traffico legittimo da indirizzi IP legittimi, causando un rifiuto di servizio.
Aggiornando i gruppi di regole, potendo modificare le sue azioni ad esempio da Blocca a Consenti.
Eliminando gruppi di regole che forniscono misure di sicurezza critiche.
Il seguente esempio mostra un gruppo di regole che bloccherebbe il traffico legittimo da indirizzi IP specifici:
Il file rule.json avrebbe questo aspetto:
Impatto Potenziale: Accesso non autorizzato, violazioni dei dati e potenziali attacchi DoS.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Con queste autorizzazioni, un attaccante sarebbe in grado di:
Creare un nuovo Web ACL, introducendo regole che permettono il traffico dannoso o bloccano il traffico legittimo, rendendo efficacemente inutile il WAF o causando un rifiuto di servizio.
Aggiornare i Web ACL esistenti, potendo modificare le regole per permettere attacchi come l'iniezione SQL o lo scripting tra siti, che erano stati precedentemente bloccati, o interrompere il flusso normale del traffico bloccando richieste valide.
Eliminare un Web ACL, lasciando le risorse interessate completamente non protette, esponendole a una vasta gamma di attacchi web.
Puoi eliminare il WebACL specificato solo se ManagedByFirewallManager è falso.
Il seguente esempio mostra come aggiornare un Web ACL per bloccare il traffico legittimo da un insieme di IP specifico. Se l'IP di origine non corrisponde a nessuno di quegli IP, l'azione predefinita bloccherà anche quello, causando un attacco DoS.
Web ACL originale:
Comando per aggiornare il Web ACL:
Il file rule.json avrebbe questo aspetto:
Impatto Potenziale: Accesso non autorizzato, violazioni dei dati e potenziali attacchi DoS.
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
Il permesso wafv2:AssociateWebACL
consentirebbe a un attaccante di associare ACL web (Liste di Controllo degli Accessi) con risorse, potendo così eludere i controlli di sicurezza, permettendo al traffico non autorizzato di raggiungere l'applicazione, potenzialmente portando a exploit come l'SQL injection o il cross-site scripting (XSS). Al contrario, con il permesso wafv2:DisassociateWebACL
, l'attaccante potrebbe disabilitare temporaneamente le protezioni di sicurezza, esponendo le risorse a vulnerabilità senza essere rilevato.
I permessi aggiuntivi sarebbero necessari a seconda del tipo di risorsa protetta:
Associare
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Disassociare
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Impatto Potenziale: Sicurezza delle risorse compromessa, aumento del rischio di sfruttamento e possibili interruzioni del servizio all'interno degli ambienti AWS protetti da AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Un attaccante potrebbe essere in grado di creare, aggiornare ed eliminare gli insiemi di IP gestiti da AWS WAF. Questo potrebbe essere pericoloso poiché potrebbe creare nuovi insiemi di IP per consentire traffico dannoso, modificare gli insiemi di IP per bloccare il traffico legittimo, aggiornare gli insiemi di IP esistenti per includere indirizzi IP dannosi, rimuovere indirizzi IP fidati o eliminare insiemi di IP critici che sono destinati a proteggere risorse critiche.
L'esempio seguente mostra come sovrascrivere l'insieme IP esistente con l'insieme IP desiderato:
Impatto Potenziale: Accesso non autorizzato e blocco del traffico legittimo.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Un attaccante con queste autorizzazioni sarebbe in grado di manipolare i set di modelli di espressioni regolari utilizzati da AWS WAF per controllare e filtrare il traffico in ingresso in base a modelli specifici.
Creare nuovi modelli regex aiuterebbe un attaccante a consentire contenuti dannosi
Aggiornando i modelli esistenti, un attaccante potrebbe eludere le regole di sicurezza
Eliminare modelli progettati per bloccare attività dannose potrebbe portare un attaccante a inviare payload dannosi ed eludere le misure di sicurezza.
Impatto Potenziale: Ignorare i controlli di sicurezza, consentendo contenuti dannosi e potenzialmente esponendo dati sensibili o interrompendo servizi e risorse protette da AWS WAF.
(wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
Un attaccante con il permesso wafv2:DeleteLoggingConfiguration
sarebbe in grado di rimuovere la configurazione di logging dal Web ACL specificato. Successivamente, con i permessi wavf2:PutLoggingConfiguration
e iam:CreateServiceLinkedRole
, un attaccante potrebbe creare o sostituire configurazioni di logging (dopo averle eliminate) per impedire del tutto il logging o reindirizzare i log verso destinazioni non autorizzate, come i bucket Amazon S3, il gruppo di log Amazon CloudWatch Logs o un Amazon Kinesis Data Firehose sotto il proprio controllo.
Durante il processo di creazione, il servizio imposta automaticamente le autorizzazioni necessarie per consentire la scrittura dei log nella destinazione di logging specificata:
Amazon CloudWatch Logs: AWS WAF crea una policy delle risorse sul gruppo di log CloudWatch Logs designato. Questa policy garantisce che AWS WAF abbia le autorizzazioni necessarie per scrivere i log nel gruppo di log.
Bucket Amazon S3: AWS WAF crea una policy del bucket sul bucket S3 designato. Questa policy concede ad AWS WAF le autorizzazioni necessarie per caricare i log nel bucket specificato.
Amazon Kinesis Data Firehose: AWS WAF crea un ruolo collegato al servizio specificamente per interagire con Kinesis Data Firehose. Questo ruolo consente ad AWS WAF di consegnare i log allo stream Firehose configurato.
È possibile definire una sola destinazione di logging per ogni Web ACL.
Impatto Potenziale: Oscurare la visibilità sugli eventi di sicurezza, rendere difficile il processo di risposta agli incidenti e facilitare attività maliziose nascoste all'interno degli ambienti protetti da AWS WAF.
wafv2:DeleteAPIKey
wafv2:DeleteAPIKey
Un attaccante con queste autorizzazioni sarebbe in grado di eliminare le chiavi API esistenti, rendendo inefficace il CAPTCHA e interrompendo la funzionalità che ne dipende, come le sottomissioni di moduli e i controlli di accesso. A seconda dell'implementazione di questo CAPTCHA, ciò potrebbe portare o a un bypass del CAPTCHA o a un attacco DoS se la gestione degli errori non è correttamente impostata nella risorsa.
Impatto Potenziale: Disabilitare le protezioni CAPTCHA o interrompere la funzionalità dell'applicazione, portando a violazioni della sicurezza e possibili furti di dati.
wafv2:TagResource
, wafv2:UntagResource
wafv2:TagResource
, wafv2:UntagResource
Un attaccante sarebbe in grado di aggiungere, modificare o rimuovere tag dalle risorse AWS WAFv2, come Web ACL, gruppi di regole, set di IP, set di pattern regex e configurazioni di logging.
Impatto Potenziale: Manipolazione delle risorse, divulgazione di informazioni, manipolazione dei costi e interruzione operativa.
Riferimenti
Last updated