AWS - WAF Enum
AWS - WAF Enum
AWS WAF
AWS WAF est un pare-feu d'application web conçu pour protéger les applications web ou les APIs contre diverses attaques web qui pourraient affecter leur disponibilité, leur sécurité ou leur consommation de ressources. Il permet aux utilisateurs de contrôler le trafic entrant en configurant des règles de sécurité qui atténuent les vecteurs d'attaque courants tels que les injections SQL ou les scripts entre sites, ainsi qu'en définissant des règles de filtrage personnalisées.
Concepts clés
Liste de contrôle d'accès Web (Web ACL)
Une Web ACL est une collection de règles que vous pouvez appliquer à vos applications web ou APIs. Lorsque vous associez une Web ACL à une ressource, AWS WAF inspecte les requêtes entrantes en fonction des règles définies dans la Web ACL et prend les actions spécifiées.
Groupe de règles
Un groupe de règles est une collection réutilisable de règles que vous pouvez appliquer à plusieurs Web ACL. Les groupes de règles aident à gérer et à maintenir des ensembles de règles cohérents sur différentes applications web ou APIs.
Chaque groupe de règles a sa capacité associée, qui aide à calculer et à contrôler les ressources opérationnelles utilisées pour exécuter vos règles, groupes de règles et Web ACL. Une fois sa valeur définie lors de la création, il n'est pas possible de la modifier.
Règle
Une règle définit un ensemble de conditions que AWS WAF utilise pour inspecter les requêtes web entrantes. Il existe deux types principaux de règles :
Règle régulière : Ce type de règle utilise des conditions spécifiées pour déterminer si les requêtes web doivent être autorisées, bloquées ou comptées.
Règle basée sur le taux : Compte les requêtes à partir d'une adresse IP spécifique sur une période de cinq minutes. Ici, les utilisateurs définissent un seuil, et si le nombre de requêtes à partir d'une IP dépasse cette limite dans les cinq minutes, les requêtes ultérieures de cette IP sont bloquées jusqu'à ce que le taux de requêtes passe en dessous du seuil. Le seuil minimum pour les règles basées sur le taux est de 2000 requêtes.
Règles gérées
AWS WAF propose des ensembles de règles préconfigurées et gérées qui sont entretenus par AWS et les vendeurs du Marketplace AWS. Ces ensembles de règles offrent une protection contre les menaces courantes et sont régulièrement mis à jour pour traiter de nouvelles vulnérabilités.
Ensemble d'adresses IP
Un ensemble d'adresses IP est une liste d'adresses IP ou de plages d'adresses IP que vous souhaitez autoriser ou bloquer. Les ensembles d'adresses IP simplifient le processus de gestion des règles basées sur les adresses IP.
Ensemble de motifs Regex
Un ensemble de motifs Regex contient une ou plusieurs expressions régulières (regex) qui définissent des motifs à rechercher dans les requêtes web. Cela est utile pour des scénarios de correspondance plus complexes, tels que le filtrage de séquences de caractères spécifiques.
Jeton de verrouillage
Un jeton de verrouillage est utilisé pour le contrôle de la concurrence lors de la mise à jour des ressources WAF. Il garantit que les modifications ne sont pas écrasées accidentellement par plusieurs utilisateurs ou processus tentant de mettre à jour la même ressource simultanément.
Clés API
Les clés API dans AWS WAF sont utilisées pour authentifier les requêtes à certaines opérations API. Ces clés sont chiffrées et gérées de manière sécurisée pour contrôler l'accès et garantir que seuls les utilisateurs autorisés peuvent apporter des modifications aux configurations WAF.
Exemple : Intégration de l'API CAPTCHA.
Politique de permission
Une politique de permission est une politique IAM qui spécifie qui peut effectuer des actions sur les ressources AWS WAF. En définissant des autorisations, vous pouvez contrôler l'accès aux ressources WAF et vous assurer que seuls les utilisateurs autorisés peuvent créer, mettre à jour ou supprimer des configurations.
Portée
Le paramètre de portée dans AWS WAF spécifie si les règles WAF et les configurations s'appliquent à une application régionale ou à une distribution Amazon CloudFront.
REGIONAL : S'applique aux services régionaux tels que les équilibreurs de charge d'applications (ALB), l'API REST Amazon API Gateway, l'API GraphQL AWS AppSync, le pool d'utilisateurs Amazon Cognito, le service AWS App Runner et l'instance d'accès vérifié AWS. Vous spécifiez la région AWS où se trouvent ces ressources.
CLOUDFRONT : S'applique aux distributions Amazon CloudFront, qui sont mondiales. Les configurations WAF pour CloudFront sont gérées via la région
us-east-1
indépendamment de l'endroit où le contenu est diffusé.
Fonctionnalités clés
Critères de surveillance (Conditions)
Les conditions spécifient les éléments des requêtes HTTP/HTTPS entrantes que AWS WAF surveille, notamment XSS, emplacement géographique (GEO), adresses IP, contraintes de taille, injection SQL et motifs (correspondance de chaînes et regex). Il est important de noter que les requêtes restreintes au niveau CloudFront en fonction du pays n'atteindront pas WAF.
Chaque compte AWS peut configurer :
100 conditions pour chaque type (sauf pour Regex, où seules 10 conditions sont autorisées, mais cette limite peut être augmentée).
100 règles et 50 Web ACL.
Un maximum de 5 règles basées sur le taux.
Un débit de 10 000 requêtes par seconde lorsque WAF est implémenté avec un équilibreur de charge d'applications.
Actions de règle
Des actions sont attribuées à chaque règle, avec les options suivantes :
Autoriser : La requête est transmise à la distribution CloudFront appropriée ou à l'équilibreur de charge d'applications.
Bloquer : La requête est immédiatement interrompue.
Compter : Compte les requêtes répondant aux conditions de la règle. Cela est utile pour tester la règle, confirmer l'exactitude de la règle avant de la définir sur Autoriser ou Bloquer.
CAPTCHA et Challenge : Il est vérifié que la requête ne provient pas d'un bot en utilisant des puzzles CAPTCHA et des défis silencieux.
Si une requête ne correspond à aucune règle dans la Web ACL, elle subit l'action par défaut (Autoriser ou Bloquer). L'ordre d'exécution des règles, défini dans une Web ACL, est crucial et suit généralement cette séquence :
Autoriser les adresses IP en liste blanche.
Bloquer les adresses IP en liste noire.
Bloquer les requêtes correspondant à des signatures préjudiciables.
Intégration CloudWatch
AWS WAF s'intègre à CloudWatch pour la surveillance, offrant des métriques telles que AllowedRequests, BlockedRequests, CountedRequests et PassedRequests. Ces métriques sont rapportées toutes les minutes par défaut et conservées pendant une période de deux semaines.
Énumération
Pour interagir avec les distributions CloudFront, vous devez spécifier la région US East (N. Virginia) :
CLI - Spécifiez la région US East lorsque vous utilisez la portée CloudFront :
--scope CLOUDFRONT --region=us-east-1
.API et SDK - Pour tous les appels, utilisez le point de terminaison de la région us-east-1.
Pour interagir avec les services régionaux, vous devez spécifier la région :
Exemple avec la région Europe (Espagne) :
--scope REGIONAL --region=eu-south-2
Post Exploitation / Contournement
Du point de vue d'un attaquant, ce service peut aider l'attaquant à identifier les protections WAF et les expositions réseau qui pourraient l'aider à compromettre d'autres sites web.
Cependant, un attaquant pourrait également être intéressé à perturber ce service afin que les sites web ne soient pas protégés par le WAF.
Dans de nombreuses opérations de suppression et de mise à jour, il serait nécessaire de fournir le jeton de verrouillage. Ce jeton est utilisé pour le contrôle de la concurrence sur les ressources, garantissant que les modifications ne sont pas accidentellement écrasées par plusieurs utilisateurs ou processus tentant de mettre à jour la même ressource simultanément. Pour obtenir ce jeton, vous pourriez effectuer les opérations liste ou obtenir correspondantes sur la ressource spécifique.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Un attaquant pourrait compromettre la sécurité de la ressource affectée en :
Créant des groupes de règles qui pourraient, par exemple, bloquer le trafic légitime provenant d'adresses IP légitimes, provoquant un déni de service.
Mettant à jour des groupes de règles, en pouvant modifier ses actions par exemple de Bloquer à Autoriser.
Supprimant des groupes de règles qui fournissent des mesures de sécurité critiques.
Le(s) exemple(s) suivant(s) montre(nt) un groupe de règles qui bloquerait(nt) le trafic légitime en provenance d'adresses IP spécifiques :
Le fichier rule.json ressemblerait à :
Impact potentiel : Accès non autorisé, violations de données et potentielles attaques par déni de service.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Avec ces autorisations, un attaquant serait capable de :
Créer un nouveau Web ACL, introduisant des règles qui permettent le trafic malveillant de passer ou bloquent le trafic légitime, rendant ainsi le WAF inutile ou provoquant un déni de service.
Mettre à jour les ACL Web existantes, en pouvant modifier les règles pour permettre des attaques telles que les injections SQL ou les scripts entre sites, qui étaient précédemment bloquées, ou perturber le flux de trafic normal en bloquant les demandes valides.
Supprimer un Web ACL, laissant les ressources affectées entièrement non protégées, les exposant à une large gamme d'attaques web.
Vous ne pouvez supprimer le WebACL spécifié que si ManagedByFirewallManager est faux.
Le cas suivant montre comment mettre à jour un ACL Web pour bloquer le trafic légitime à partir d'un ensemble d'adresses IP spécifique. Si l'adresse IP d'origine ne correspond à aucune de ces adresses IP, l'action par défaut serait également de le bloquer, provoquant un déni de service.
ACL Web d'origine :
Update Web ACL
To update the Web ACL, use the following command:
Le fichier rule.json ressemblerait à :
Impact potentiel : Accès non autorisé, violations de données et potentielles attaques par déni de service (DoS).
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
La permission wafv2:AssociateWebACL
permettrait à un attaquant d'associer des listes de contrôle d'accès Web (ACL) à des ressources, lui permettant de contourner les contrôles de sécurité, autorisant ainsi le trafic non autorisé à atteindre l'application, ce qui pourrait entraîner des exploits tels que les injections SQL ou les scripts entre sites (XSS). En revanche, avec la permission wafv2:DisassociateWebACL
, l'attaquant pourrait temporairement désactiver les protections de sécurité, exposant les ressources à des vulnérabilités sans être détecté.
Les autorisations supplémentaires seraient nécessaires en fonction du type de ressource protégée :
Associer
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Dissocier
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Impact potentiel : Sécurité des ressources compromise, risque accru d'exploitation et perturbations potentielles des services au sein des environnements AWS protégés par AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Un attaquant serait capable de créer, mettre à jour et supprimer les ensembles d'adresses IP gérés par AWS WAF. Cela pourrait être dangereux car cela pourrait permettre de créer de nouveaux ensembles d'adresses IP pour autoriser du trafic malveillant, modifier des ensembles d'adresses IP afin de bloquer du trafic légitime, mettre à jour des ensembles d'adresses IP existants pour inclure des adresses IP malveillantes, supprimer des adresses IP de confiance ou supprimer des ensembles d'adresses IP critiques destinés à protéger des ressources critiques.
L'exemple suivant montre comment écraser l'ensemble IP existant par l'ensemble IP souhaité :
Impact potentiel : Accès non autorisé et blocage du trafic légitime.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Un attaquant avec ces autorisations serait capable de manipuler les ensembles de motifs d'expressions régulières utilisés par AWS WAF pour contrôler et filtrer le trafic entrant en fonction de motifs spécifiques.
La création de nouveaux motifs regex aiderait un attaquant à autoriser du contenu nuisible
En mettant à jour les motifs existants, un attaquant pourrait contourner les règles de sécurité
Supprimer des motifs conçus pour bloquer des activités malveillantes pourrait amener un attaquant à envoyer des charges malveillantes et contourner les mesures de sécurité.
Impact potentiel : Contourner les contrôles de sécurité, permettant le contenu malveillant et potentiellement l'exposition de données sensibles ou la perturbation des services et des ressources protégés par AWS WAF.
(wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
Un attaquant ayant l'autorisation wafv2:DeleteLoggingConfiguration
serait capable de supprimer la configuration de journalisation du Web ACL spécifié. Ensuite, avec les autorisations wavf2:PutLoggingConfiguration
et iam:CreateServiceLinkedRole
, un attaquant pourrait créer ou remplacer des configurations de journalisation (après les avoir supprimées) pour soit empêcher complètement la journalisation, soit rediriger les journaux vers des destinations non autorisées, telles que les compartiments Amazon S3, le groupe de journaux Amazon CloudWatch Logs ou un Amazon Kinesis Data Firehose sous contrôle.
Pendant le processus de création, le service configure automatiquement les autorisations nécessaires pour permettre l'écriture des journaux vers la destination de journalisation spécifiée :
Amazon CloudWatch Logs : AWS WAF crée une stratégie de ressource sur le groupe de journaux CloudWatch Logs désigné. Cette stratégie garantit qu'AWS WAF dispose des autorisations nécessaires pour écrire des journaux dans le groupe de journaux.
Compartiment Amazon S3 : AWS WAF crée une stratégie de compartiment sur le compartiment S3 désigné. Cette stratégie accorde à AWS WAF les autorisations nécessaires pour téléverser des journaux dans le compartiment spécifié.
Amazon Kinesis Data Firehose : AWS WAF crée un rôle lié au service spécifiquement pour interagir avec Kinesis Data Firehose. Ce rôle permet à AWS WAF de livrer des journaux au flux Firehose configuré.
Il est possible de définir une seule destination de journalisation par Web ACL.
Impact potentiel : Obscurcir la visibilité des événements de sécurité, compliquer le processus de réponse aux incidents et faciliter les activités malveillantes dissimulées au sein des environnements protégés par AWS WAF.
wafv2:DeleteAPIKey
wafv2:DeleteAPIKey
Un attaquant avec ces autorisations serait capable de supprimer des clés API existantes, rendant le CAPTCHA inefficace et perturbant les fonctionnalités qui en dépendent, telles que les soumissions de formulaires et les contrôles d'accès. Selon la mise en œuvre de ce CAPTCHA, cela pourrait conduire soit à une bypass du CAPTCHA, soit à un déni de service (DoS) si la gestion des erreurs n'est pas correctement configurée dans la ressource.
Impact potentiel : Désactiver les protections CAPTCHA ou perturber la fonctionnalité de l'application, entraînant des violations de sécurité et un vol potentiel de données.
wafv2:TagResource
, wafv2:UntagResource
wafv2:TagResource
, wafv2:UntagResource
Un attaquant pourrait ajouter, modifier ou supprimer des tags des ressources AWS WAFv2, telles que les listes de contrôle d'accès Web, les groupes de règles, les ensembles d'adresses IP, les ensembles de motifs regex et les configurations de journalisation.
Impact potentiel : Altération des ressources, fuite d'informations, manipulation des coûts et perturbation opérationnelle.
Références
Last updated