Présentation

Lorsque la solution Application Security Management (ASM) est activée, la bibliothèque de tracing Datadog surveille en permanence l’ensemble des services Web et des requêtes API afin de détecter toute activité suspecte.

Une règle WAF In-App permet de spécifier des conditions afin de définir ce que la bibliothèque doit considérer comme une activité suspecte lors d’une requête entrante. La bibliothèque de tracing Datadog intègre des centaines de règles WAF In-App ASM prêtes à l’emploi, qui sont utilisées pour afficher les requêtes suspectes dans le Trace Explorer et dans les règles de détection par défaut.

Vous pouvez ajouter d’autres règles WAF In-App sans mettre à jour la bibliothèque de tracing.

Structure d’une règle WAF In-App ASM

Une règle WAF In-App est un objet JSON composé d’une catégorie, d’un nom, de tags et de conditions. Lorsqu’une requête suspecte est détectée, les tags des règles sont appliqués à la requête suspecte et peuvent être utilisés pour créer des règles de détection.

Conditions

Les conditions définissent dans quels cas la règle applique des tags à une requête entrante. Elles sont composées d’entrées et d’opérateurs.

Paramètres

Une entrée représente la partie de la requête à laquelle l’opérateur est appliqué. Les entrées suivantes sont utilisées dans les règles WAF In-App :

NomDescriptionExemple
server.request.uri.rawL’URI complet de la requête reçu par le service de l’applicationhttps://my.api.com/users/1234/roles?clientId=234
server.request.path_paramsLes paramètres du chemin parsés (mappage clé/valeur)userId => 1234
server.request.queryLes paramètres de la requête parsés (mappage clé/valeur)clientId => 234
server.request.headers.no_cookiesLes en-têtes des requêtes HTTP entrantes, à l’exception de l’en-tête de cookie (mappage clé/valeur)user-agent => Zgrab, referer => google.com
grpc.server.request.messageLe message gRPC parsé (mappage clé/valeur)data.items[0] => value0, data.items[1] => value1
server.request.bodyLe corps HTTP parsé (mappage clé/valeur)data.items[0] => value0, data.items[1] => value1
server.response.statusLe code de statut HTTP200

Opérateurs

NomDescription
match_regexFiltrer les entrées en fonction d’une expression régulière
phrase_matchEffectuer un filtrage rapide en fonction d’une liste de mots-clés
is_xssOpérateur spécial pour vérifier la présence de charges utiles XSS (Cross-Site Scripting)
is_sqliOpérateur spécial pour vérifier la présence de charges utiles d’injection SQL (SQLI)

Configurer une règle WAF In-App ASM dans votre service

  1. Dans Datadog, accédez à la page In-App WAF depuis la section de configuration d’ASM.

  2. Cliquez sur Download Configuration pour télécharger le fichier de configuration appsec-rules.json sur votre machine locale.

  3. Modifiez le fichier pour ajouter la définition JSON de votre nouvelle règle en respectant les spécifications ci-dessus. Par exemple :

        {
            "id": "id-123",
            "name": "My In-App WAF rule",
            "tags": {
                "category": "attack_attempt",
                "crs_id": "920260",
                "type": "http_protocol_violation"
            },
            "conditions": [
                {
                    "operator": "match_regex",
                    "parameters": {
                        "inputs": [
                            {
                                "address": "server.request.uri.raw"
                            }
                        ],
                        "options": {
                            "case_sensitive": true,
                            "min_length": 6
                        },
                        "regex": "\\%u[fF]{2}[0-9a-fA-F]{2}"
                    }
                }
            ],
            "transformers": []
        },
       
  4. Via SCP ou FTP, copiez le fichier appsec-rules.json sur le serveur de votre application, par exemple /home/asm/appsec-rules.json.

  5. Suivez les instructions de la section Activer ASM pour ajouter des variables d’application dans votre environnement, puis ajoutez la variable d’environnement DD_APPSEC_RULES pour votre service en spécifiant le chemin complet vers le fichier :

    DD_APPSEC_RULES=/home/asm/appsec-rules.json
    
  6. Redémarrez votre service.

Et ensuite ?

Configurez des règles de détection pour créer des signaux de sécurité en fonction des requêtes suspectes définies dans les règles WAF In-App que vous avez créées. Vous pouvez modifier les règles de détection ASM déjà fournies ou en créer d’autres.

Pour aller plus loin