Citrix ADC

Protection basée sur la grammaire par injection de commandes pour la charge utile HTML

Citrix Web App Firewall utilise une approche de correspondance de modèles pour détecter les attaques par injection de commande dans les charges utiles HTML. L’approche utilise un ensemble de mots-clés prédéfinis et (ou) de caractères spéciaux pour détecter une attaque et la signaler comme une violation. Bien que cette approche soit efficace, elle peut entraîner de nombreux faux positifs qui conduisent à l’ajout d’une ou de plusieurs règles d’assouplissement. Surtout lorsqu’un mot couramment utilisé tel que « Exit » est utilisé dans une requête HTTP. Nous pouvons réduire les faux positifs en implémentant la vérification de protection basée sur la grammaire par injection de commandes pour la charge utile HTML.

Dans l’approche de correspondance de modèles, une attaque par injection de commande est identifiée si un mot-clé prédéfini et/ou (ou) un caractère spécial sont présents dans une requête HTTP. Dans ce cas, il n’est pas nécessaire que l’instruction soit une instruction d’injection de commande valide. Mais dans l’approche basée sur la grammaire, une attaque par injection de commande n’est détectée que si un mot-clé ou un caractère spécial est présent dans une instruction d’injection de commande. Par conséquent, les scénarios de faux positifs sont réduits.

Scénario d’utilisation de la protection basée sur la grammaire de

Prenons une déclaration : « Rush to the exit ! » présent dans une requête HTTP. Bien que l’instruction ne soit pas une instruction d’injection de commande valide, l’approche de correspondance de modèle détecte la demande comme une attaque par injection de commande en raison du mot-clé « exit ». Mais dans l’approche basée sur la grammaire d’injection de commandes, l’instruction n’est pas détectée comme une attaque de violation car les mots-clés ne sont pas présents dans une instruction d’injection de commande valide.

Configuration du paramètre de protection basé sur la grammaire d’injection de commandes à l’aide

Pour implémenter la détection basée sur la grammaire par injection de commandes, vous devez configurer le paramètre « CmdInjectionGrammar » dans le profil Web App Firewall. Par défaut, le paramètre est désactivé. Toutes les actions d’injection de commandes existantes sont prises en charge sauf l’apprentissage. Tout nouveau profil créé après une mise à niveau prend en charge la grammaire d’injection de commandes Le nouveau profil conserve le type par défaut « caractère spécial ou mot-clé » et la grammaire d’injection de commandes doit être explicitement activée.

À l’invite de commandes, tapez :

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON/OFF
<!--NeedCopy-->

Exemple :

add appfw profile profile1 –CMDInjectionAction Block –CMDInjectionGrammar ON
<!--NeedCopy-->

Configurer la protection par correspondance de modèle d’injection de commandes et la protection basée sur la grammaire à l’aide

Si vous avez activé les approches basées sur la grammaire et la correspondance de modèles, l’appliance effectue d’abord une détection basée sur la grammaire. Si une injection de commande est détectée avec le type d’action défini sur « bloquer », la demande est bloquée (sans vérification de la détection à l’aide de la correspondance de motifs).

À l’invite de commandes, tapez :

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType <Any action other than ‘None’: CMDSplCharANDKeyword/ CMDSplCharORKeyword/ CMDSplChar/ CMDKeyword>
<!--NeedCopy-->

Exemple :

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType CMDSplChar
<!--NeedCopy-->

Configurer la vérification d’injection de commandes uniquement avec une protection basée sur la grammaire à l’aide

À l’invite de commandes, tapez :

add appfw profile <profile-name> –CMDInjectionAction <action-name> -CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Exemple :

add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType None
<!--NeedCopy-->

Règles de relaxation de liaison pour la protection basée sur la grammaire par injection de commandes à l’aide

Si votre application exige que vous contourniez la vérification d’injection de commande pour un « ELEMENT » ou un « ATTRIBUTE » spécifique dans la charge utile HTML, vous devez configurer une règle de relaxation.

Remarque :

les règles de relaxation avec le ValueType comme « mot-clé » ne sont évaluées que lorsque l’appliance effectue une détection à l’aide de la grammaire d’injection de commandes.

Les règles de relaxation de l’inspection par injection de commandes ont la syntaxe suivante. À l’invite de commandes, tapez :

bind appfw profile <name> -CMDInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

Exemple :

bind appfw profile p1 -cmdinjection abc http://10.10.10.10/

bind appfw profile p1 –cmdinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX

bind appfw profile p1 –cmdinjection 'name' http://10.10.10.10/ -valueType Keyword 'exi[a-z]+' -isvalueRegex regEX
<!--NeedCopy-->

Configuration de la protection basée sur la grammaire par injection de commandes à l’aide

Effectuez les étapes suivantes pour configurer la détection par injection de commandes HTML basée sur la grammaire.

  1. Accédez à Sécurité > Profil de Citrix Web App Firewall > Profils.

  2. Sélectionnez un profil et cliquez sur Modifier.

  3. Accédez à la section Paramètres avancéset cliquez surContrôles de sécurité.

  4. Activez la case à cocher Injection de commandes HTML et cliquez surParamètres d’action.

    Activer l'injection de commandes

  5. Activez la case à cocher Vérifier en utilisant la grammaire CMD.

  6. Sélectionnez Aucun dans Demande de vérification contenant.

    Paramètres d'action d'injection de commandes

  7. Cliquez surOK.