Vérification du débordement de tampon

La vérification de débordement de la mémoire tampon détecte les tentatives de provoquer un débordement de la mémoire tampon sur le serveur Web. Si le Web App Firewall détecte que l’URL, les cookies ou l’en-tête sont plus longs que la longueur maximale spécifiée dans une requête, il bloque cette demande car il peut s’agir d’une tentative de débordement de la mémoire tampon.

La vérification de débordement de la mémoire tampon empêche les attaques contre les logiciels non sécurisés du système d’exploitation ou du serveur Web qui peuvent se bloquer ou se comporter de manière imprévisible lorsqu’il reçoit une chaîne de données plus grande qu’elle ne peut gérer. Des techniques de programmation appropriées empêchent les débordements de tampon en vérifiant les données entrantes et en rejetant ou en tronquant les chaînes trop longues. De nombreux programmes, cependant, ne vérifient pas toutes les données entrantes et sont donc vulnérables aux débordements de tampon. Ce problème affecte particulièrement les anciennes versions des logiciels et des systèmes d’exploitation de serveurs Web, dont beaucoup sont encore en cours d’utilisation.

La vérification de sécurité Buffer Overflow vous permet de configurer les actions Bloquer, Loget Stats. En outre, vous pouvez également configurer les paramètres suivants :

  • Longueur maximale de l’URL. Longueur maximale autorisée par le Web App Firewall dans une URL demandée. Les demandes avec des URL plus longues sont bloquées. Valeurs possibles : 0-65535. Par défaut : 1024
  • Longueur maximale du cookie. La longueur maximale autorisée par le Web App Firewall pour tous les cookies d’une demande. Les demandes avec des cookies plus longs déclenchent les violations. Valeurs possibles : 0-65535. Par défaut : 4096
  • Longueur maximale de l’en-tête. Longueur maximale autorisée par le Web App Firewall pour les en-têtes HTTP. Les demandes avec des en-têtes plus longs sont bloquées. Valeurs possibles : 0-65535. Par défaut : 4096

Utilisation de la ligne de commande pour configurer la vérification de sécurité Buffer Overflow

Pour configurer les actions de vérification de sécurité de Buffer Overflow et d’autres paramètres à l’aide de la ligne de commande

Si vous utilisez l’interface de ligne de commande, vous pouvez ajouter les arguments de vérification de débordement de tampon suivants à la commande set appfw profile <profileName>:

  • -bufferOverflowAction [[ block] [ log] [stats]] | [none]
  • -bufferOverflowMaxURLLength <positiveInteger>
  • -bufferOverflowMaxCookieLength <positiveInteger>
  • -bufferOverflowMaxHeaderLength <positiveInteger>

Utilisation de l’interface graphique pour configurer la vérification de sécurité de débordement de tampon

Dans l’interface graphique, vous pouvez configurer le contrôle de sécurité Buffer Overflow dans le volet pour le profil associé à votre application.

Pour configurer ou modifier la vérification de sécurité Buffer Overflow à l’aide de l’interface graphique

  1. Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.
  2. Dans le volet Paramètres avancés, cliquez sur Vérifications de sécurité.

La table de vérification de sécurité affiche les paramètres d’action actuellement configurés pour tous les contrôles de sécurité. Vous avez 2 options de configuration :

a. Si vous souhaitez simplement activer ou désactiver les actions Bloquer, Journalet Statistiquespour Dépassement de la mémoire tampon, vous pouvez activer ou désactiver les cases à cocher dans le tableau, cliquez sur OK, puis cliquez sur Enregistrer et fermerpour fermer le contrôle de sécurité volet.

b. Si vous souhaitez configurer des options supplémentaires pour cette vérification de sécurité, double-cliquez sur Dépassement de la mémoire tamponou sélectionnez la ligne et cliquez sur Paramètres d’action, pour afficher les options suivantes :

Longueur maximale de l’URL.

Longueur maximale du cookie. Longueur maximale de l’en-tête.

Après avoir modifié l’un des paramètres ci-dessus, cliquez sur OK pour enregistrer les modifications et revenir au tableau Vérifications de sécurité. Vous pouvez procéder à la configuration d’autres vérifications de sécurité si nécessaire. Cliquez sur OK pour enregistrer toutes les modifications apportées dans la section Vérifications de sécurité, puis cliquez sur Enregistrer et fermer pour fermer le volet Vérification de sécurité.

Utilisation de la fonction de journal avec la vérification de sécurité de débordement de tampon

Lorsque l’action du journal est activée, les violations de vérification de sécurité Buffer Overflow sont enregistrées dans le journal d’audit en tant que violations APPFW_BUFFEROVERFLOW_URL, APPFW_BUFFEROVERFLOW_COOKIEet APPFW_BUFFEROVERFLOW_HDR. Le Web App Firewall prend en charge les formats de journaux natifs et CEF. Vous pouvez également envoyer les journaux à un serveur syslog distant.

Si vous utilisez l’interface graphique pour consulter les journaux, vous pouvez utiliser la fonctionnalité de clic pour déployer pour appliquer les relaxations indiquées par les journaux.

Pour accéder aux messages du journal à l’aide de la ligne de commande

Basculez vers le shell et recherchez les fichiers ns.logs dans le dossier /var/log/ pour accéder aux messages de journal relatifs aux violations de débordement de la mémoire tampon :

> \*\*Shell\*\*
> \*\*tail -f /var/log/ns.log | grep APPFW_BUFFEROVERFLOW\*\*

Exemple de message de journal CEF montrant une violation BufferOverflowMaxCookieLength en mode non-bloc

Oct 22 17:35:20 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_COOKIE\*\*|6|src=10.217.253.62 geolocation=Unknown spt=41198 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=Cookie header length(43) is greater than maximum allowed(16).\*\* cn1=119 cn2=465 cs1=owa_profile cs2=PPE1 cs3=wvOOOb+cJ2ZRbstZpyeNXIqLj7Y0001 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*

Exemple de message de journal CEF montrant une violation BufferOverflowMaxUrllEngth en mode non-bloc

Oct 22 18:39:56 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|\*\*APPFW_BUFFEROVERFLOW_URL\*\*|6|src=10.217.253.62 geolocation=Unknown spt=19171 method=GET request=http://aaron.stratum8.net/FFC/sc11.html \*\*msg=URL length(39) is greater than maximum allowed(20).\*\* cn1=707 cn2=402 cs1=owa_profile cs2=PPE0 cs3=kW49GcKbnwKByByi3+jeNzfgWa80000 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*

Exemple de message de journal de format natif montrant une violation BufferOverflowMaxHeaderLength en mode bloc

Oct 22 18:44:00 <local0.info> 10.217.31.98 10/22/2015:18:44:00 GMT ns 0-PPE-2 : default APPFW \*\*APPFW_BUFFEROVERFLOW_HDR\*\* 155 0 :  10.217.253.62 374-PPE2 khhBEeY4DB8V2D3H2sMLkXmfWnA0002 owa_profile \*\*Header(User-Agent) length(82) is greater than maximum allowed(10)\*\* : http://aaron.stratum8.net/ \*\*<blocked>\*\*

Pour accéder aux messages du journal à l’aide de l’interface graphique

L’interface utilisateur graphique Citrix inclut un outil utile (Syslog Viewer) pour analyser les messages du journal. Vous disposez de plusieurs options pour accéder à la visionneuse Syslog :

  • Accédez au pare-feu des applications > Profils, sélectionnez le profil cible et cliquez sur Vérifications de sécurité. Mettez en surbrillance la ligne Buffer Overflow et cliquez sur Journaux. Lorsque vous accédez aux journaux directement à partir de la vérification de sécurité de débordement de tampon du profil, l’interface graphique filtre les messages de journal et affiche uniquement les journaux relatifs à ces violations de vérification de sécurité.

  • Vous pouvez également accéder à la visionneuse Syslog en accédant à NetScaler > Système > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation de vérification de sécurité. Ceci est utile pour le débogage lorsque plusieurs violations de vérification de sécurité peuvent être déclenchées pendant le traitement de la demande.

  • Accédez à Application Firewall > Stratégies > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation de vérification de sécurité.

La visionneuse Syslog basée sur XML fournit diverses options de filtre pour sélectionner uniquement les messages de journal qui vous intéressent. Pour sélectionner les messages de journal pour la vérification de débordement de tampon, filtrez en sélectionnant APPFW dans les options déroulantes du module. La liste Type d’événement offre trois options, APPFW_BUFFEROVERFLOW_URL, APPFW_BUFFEROVERFLOW_COOKIE et APPFW_BUFFEROVERFLOW_HDR, pour afficher tous les messages de journal relatifs à la vérification de sécurité de débordement de tampon. Vous pouvez sélectionner une ou plusieurs options pour affiner votre sélection. Par exemple, si vous activez la case à cocher APPFW_BUFFEROVERFLOW_COOKIE et cliquez sur le bouton Appliquer, seuls les messages de journalisation relatifs aux violations de vérification de sécurité Buffer Overflow pour l’en-tête Cookie apparaissent dans la visionneuse Syslog. Si vous placez le curseur dans la ligne d’un message de journal spécifique, plusieurs options, telles que Module, Type d’événement, ID d’événementet IP du client, apparaissent sous le message de journal. Vous pouvez sélectionner l’une de ces options pour mettre en surbrillance les informations correspondantes dans le message de journal.

Click-to-Deploy : l’interface graphique fournit une fonctionnalité de click-to-Deploy, qui est actuellement prise en charge uniquement pour les messages du journal de débordement de tampon relatifs aux violations de longueur d’URL. Vous pouvez utiliser la visionneuse Syslog non seulement pour afficher les violations déclenchées, mais aussi pour exécuter des décisions éclairées en fonction de la longueur observée des messages bloqués. Si la valeur actuelle est trop restrictive et déclenche des faux positifs, vous pouvez sélectionner un message et le déployer pour remplacer la valeur actuelle par la valeur de longueur d’URL affichée dans le message. Les messages de journal doivent être au format de journal CEF pour cette opération. Si la relaxation peut être déployée pour un message de journal, une case à cocher apparaît sur le bord droit de la case Visionneuse Syslog dans la ligne. Activez la case à cocher, puis sélectionnez une option dans la liste Action pour déployer la relaxation. Modifier et déployer, déployeret déployer toutsont disponibles en tant qu’options Action. Vous pouvez utiliser le filtre APPFW_BUFFEROVERFLOW_URL pour isoler tous les messages de journal relatifs aux violations de longueur d’URL configurées.

Si vous sélectionnez un message de journal individuel, les trois options d’action Modifier et **déployer, Déployeret **Déployer toutsont disponibles. Si vous sélectionnez Modifier et déployer, la boîte de dialogue Paramètres de débordement de la mémoire tampons’affiche. La nouvelle longueur d’URL observée dans la demande est insérée dans le champ d’entrée Longueur d’URL maximale. Si vous cliquez sur Fermer sans aucune modification, les valeurs configurées actuelles restent inchangées. Si vous cliquez sur le bouton OK, la nouvelle valeur de la longueur maximale de l’URL remplace la valeur précédente.

Remarque

Les cases à cocher Bloquer, Journalet Statistiquesne sont pas cochées dans la boîte de dialogue Paramètres de débordement de la mémoire tamponaffichée et doivent être reconfigurées si vous sélectionnez l’option Modifier et déployer. Assurez-vous d’activer ces cases à cocher avant de cliquer sur OK, sinon la nouvelle longueur de l’URL sera configurée mais les actions seront définies sur aucune.

Si vous activez les cases à cocher pour plusieurs messages de journal, vous pouvez utiliser l’option Déployer ou Déployer tout. Si les messages de journal déployés ont des longueurs d’URL différentes, la valeur configurée est remplacée par la valeur de longueur d’URL la plus élevée observée dans les messages sélectionnés. Le déploiement de la règle entraîne uniquement la modification de la valeur BufferOverflowMaxUrllEngth. Les actions configurées sont conservées et restent inchangées.

Pour utiliser la fonctionnalité Click-to-Deploy dans l’interface graphique

  1. Dans la visionneuse Syslog, sélectionnez APPFW dans les options du module.
  2. Activez la case à cocher APPFW_BUFFEROVERFLOW_URL en tant que Type d’événement pour filtrer les messages de journal correspondants.
  3. Activez la case à cocher pour sélectionner la règle.
  4. Utilisez la liste déroulante Action pour déployer la relaxation.
  5. Accédez à Application Pare-feu > Profils, sélectionnez le profil cible et cliquez sur Vérifications de sécurité pour accéder au volet Paramètres de débordement de la mémoire tampon pour vérifier que la valeur Longueur d’URL maximale est mise à jour.

Statistiques relatives aux violations de débordement de tampon

Lorsque l’action des statistiques est activée, le compteur pour la vérification de sécurité de débordement de la mémoire tampon est incrémenté lorsque le Web App Firewall prend une action pour cette vérification de sécurité. Les statistiques sont collectées pour le taux et le nombre total pour le trafic, les violations et les journaux. La taille d’un incrément du compteur de journaux peut varier en fonction des paramètres configurés. Par exemple, si l’action de blocage est activée, une demande d’une page contenant trois violations de débordement de la mémoire tampon incrémente le compteur de statistiques d’un, car la page est bloquée dès que la première violation est détectée. Toutefois, si le bloc est désactivé, le traitement de la même demande incrémente le compteur de statistiques pour les violations et les journaux de trois, car chaque violation génère un message de journal distinct.

Pour afficher les statistiques de vérification de sécurité par débordement de tampon à l’aide de la ligne de commande

À l’invite de commandes, tapez :

> sh appfw stats

Pour afficher les statistiques d’un profil spécifique, utilisez la commande suivante :

> stat appfw profile <profile name>

Pour afficher les statistiques de débordement de tampon à l’aide de l’interface graphique

  1. Accédez à Système > Sécurité > Pare-feu d’application.
  2. Dans le volet droit, accédez au lien Statistiques.
  3. Utilisez la barre de défilement pour afficher les statistiques sur les violations de débordement de tampon et les journaux. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.

Résumé

  • La vérification de sécurité du débordement de tampon vous permet de configurer des limites pour appliquer la longueur maximale des URL, des cookies et des en-têtes autorisés.

  • Les actionsBlock, **Loget Stats**vous permettent de surveiller le trafic et de configurer une protection optimale pour votre application.

  • La visionneuse Syslog vous permet de filtrer et d’afficher tous les messages de journal relatifs aux violations de débordement de tampon.

  • La fonctionnalitéClick-to-Deploy est prise en charge pour les violations BufferOverflowMaxUrllEnGth. Vous pouvez sélectionner et déployer une règle individuelle, ou sélectionner plusieurs messages de journal pour ajuster et relâcher la valeur configurée actuelle de la longueur maximale autorisée de l’URL. La valeur la plus élevée de l’URL du groupe sélectionné est définie comme nouvelle valeur, pour autoriser toutes ces demandes qui sont actuellement signalées comme des violations.

  • Le Web App Firewall évalue désormais les cookies individuels lors de l’inspection de la demande entrante. Si la longueur d’un cookie reçu dans l’en-tête Cookie dépasse la valeur BufferOverflowMaxCookieLengthconfigurée, la violation Buffer Overflow est déclenchée.

Important

Dans la version 10.5.e (dans quelques versions d’amélioration provisoires antérieures à 59.13xx.e) ainsi que dans la version 11.0 (dans les versions antérieures à 65.x), le traitement de l’en-tête Cookie par Web App Firewall a été modifié. Dans ces versions, chaque cookie est évalué individuellement, et si la longueur d’un cookie reçu dans l’en-tête Cookie dépasse le BufferOverflowMaxCookieLength configuré, la violation Buffer Overflow est déclenchée. À la suite de cette modification, les requêtes qui ont été bloquées dans les versions 10.5 et antérieures peuvent être autorisées, car la longueur de l’en-tête du cookie entier n’est pas calculée pour déterminer la longueur du cookie. ** Dans certains cas, la taille totale des cookies transmise au serveur peut être supérieure à la valeur acceptée, et le serveur peut répondre avec « 400 Bad Request ».

Notez que cette modification a été annulée. Le comportement dans les versions 10.5.e ->59.13xx.e et 10.5.e ultérieures ainsi que dans la version 11.0 65.x et les versions ultérieures est maintenant similaire à celui des versions non améliorées de la version 10.5. L’en-tête de Cookie brut entier est maintenant pris en compte lors du calcul de la longueur du cookie. Les espaces environnants et les point-virgule (;) séparant les paires nom-valeur sont également inclus dans la détermination de la longueur du cookie.**