Article · 14 septembre 2026 · 4 min de lecture

Régler un WAF sans l'éteindre

Les applications web se sont mises à renvoyer des 403 que personne ne reproduisait depuis un terminal. Le coupable n'était pas un bug. C'était le pare-feu qui faisait exactement ce qu'on lui demandait : lire une chaîne de filtre innocente comme une attaque par injection SQL.

La scène du crime

Nous avons posé une API Gateway devant un ensemble d'applications web : un point d'entrée authentifié unique, des specs OpenAPI générées par un script plutôt qu'entretenues à la main, et Cloud Armor avec l'OWASP Core Rule Set devant le tout. Des choix raisonnables, puis ceci : les UIs parlent RSQL, donc une requête ordinaire transporte quelque chose comme filter=year==2026 and month==8. Pour la règle anti-injection SQL, des doubles signes égal et un and minuscule, c'est le portrait d'une injection chaînée. Bloqué.

Un faux positif de votre WAF ne ressemble pas à une décision de pare-feu. Il ressemble à votre API cassée.

Les mauvaises solutions

Les gestes tentants sont tous mauvais. Éteindre les règles SQLi échange une nuisance contre une porte ouverte. Encoder la syntaxe autrement reporte le coût sur chaque client. Et exempter des chemins entiers d'inspection grandit en silence jusqu'au pare-feu qui n'inspecte plus rien d'utile.

La solution qui a tenu

Les règles préconfigurées de Cloud Armor ont deux molettes utiles : un niveau de sensibilité par groupe de règles, et des exclusions par identifiant de règle. Nous avons descendu le groupe SQLi au niveau qui cesse de lire le RSQL comme une attaque, exclu les deux règles précises qui se trompaient, et laissé le reste de l'OWASP en application. Puis nous avons fait de ces deux molettes des entrées du module Terraform : le prochain service avec une grammaire de requêtes aura un réglage documenté plutôt qu'une exception copiée-collée.

Ce que nous avons noté au passage

Le travail de périmètre a le don de faire remonter ce que chacun supposait vérifié par un autre. Le nôtre en a fait remonter trois : un environnement validant des jetons hérités contre le trousseau de clés d'un autre, une politique de sécurité attachée à zéro service, et une entrée interne joignable sans authentification. Aucun n'était le travail pour lequel nous étions venus. Tous sont allés dans le rapport, parce qu'une faille écrite se corrige, et qu'une faille supposée reste une faille.

Un périmètre dont quelqu'un répond

Passerelles, règles WAF et failles que personne n'avait écrites : c'est le quotidien de l'abonnement. Si votre pare-feu mange des requêtes ou que votre périmètre tient par des suppositions, parlons-en.

Contactez-nous