J'ai récemment construit un tout nouveau serveur de développement afin d'expérimenter avec Modsecurity. Cependant, je reçois beaucoup de faux positifs générés par une application .NET 4 utilisant SignalR pour les communications client-serveur.
Comment puis-je prévenir les faux positifs sans compromettre l'efficacité de Modsecurity ?
Les hits semblent assez généraux donc je ne veux pas désactiver complètement les règles et j'aimerais éviter de désactiver les hits sur l'uri /signalr/
ce qui compromettrait la protection sur SignalR.
Voici comment j'ai procédé pour ma configuration :
- J'ai installé Windows Server 2012
- Installé le rôle IIS
- Installé toutes les mises à jour du système d'exploitation
- Installé ModSecurity IIS via WebPlatformInstaller
- Créé le site web et déployé l'application
Voici les trois faux positifs courants que je reçois :
Bypass d'authentification SQL :
> [client 192.168.0.104:59945] ModSecurity: Attention. Motif correspondant
> "(?i:(?:in\\s*?\\(+\\s*?select)|(?:(?:n?and|x?x?or|div|like|between|and|not
> |\\|\\||\\&\\&)\\s+[\\s\\w+]+(?:regexp\\s*?\\(|sounds\\s+like\\s*?[\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\x98]|[=\\d]+x))|([\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\x98]\\s*?\\d\\s*?(?:--|#))
> ..." à ARGS:connectionData. [file "C:\/Program Files/ModSecurity
> IIS/owasp_crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf"]
> [line "239"] [id "981246"] [msg "Détection de tentatives de contournement d'authentification SQL de base 3/3"] [data "Données correspondantes: \x22name\x22:\x22 trouvées dans ARGS:connectionData: [{\x22name\x22:\x22*****serverhub\x22}]"]
> [gravité "CRITIQUE"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"]
> [hostname "*********"] [uri
> "/signalr/start?transport=webSockets&clientProtocol=1.4&connectionToken=iIxfXzLxKm9twEhHdomj4DI95so0QmpmqeTXD4Qe0VsQoJO47CHuEIuv2z7M%2B1TYx44PK5ko18t2aoaLb4WztjR1c8g0VP8MUaGkSO9KDftOzsGektSIDl%2FI1RPMQdTd&connectionData=%5B%7B%22name%22%3A%22*****serverhub%22%7D%5D&_=1461637088340"]
> [identifiant unique "17798225729515683844"]
Caractères SQL restreints :
> [client 192.168.0.104:59945] ModSecurity: Attention. Motif correspondant
> "([\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\{\\}\\[\\]\\|\\:\\;\"\\'\\\xc2\xb4\\\xe2\x80\x99\\\xe2\x80\x98\\`\\<\\>].*?){4,}"
> à ARGS:connectionData. [file "C:\/Program Files/ModSecurity
> IIS/owasp_crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf"]
> [line "159"] [id "981173"] [rev "2"] [msg "Alerte de détection d'anomalie de caractère SQL restreint - Total # de caractères spéciaux dépassé"]
> [data "Données correspondant: \x22 trouvées dans ARGS:connectionData: [{\x22name\x22:\x22*****serverhub\x22}]"] [ver "OWASP_CRS/2.2.9"]
> [maturité "9"] [précision "8"] [tag
> "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"] [hostname "*********"] [uri
> "/signalr/start?transport=webSockets&clientProtocol=1.4&connectionToken=iIxfXzLxKm9twEhHdomj4DI95so0QmpmqeTXD4Qe0VsQoJO47CHuEIuv2z7M%2B1TYx44PK5ko18t2aoaLb4WztjR1c8g0VP8MUaGkSO9KDftOzsGektSIDl%2FI1RPMQdTd&connectionData=%5B%7B%22name%22%3A%22*****serverhub%22%7D%5D&_=1461637088340"]
> [identifiant unique "17798225729515683844"]
En-tête Accept manquant :
> [client 192.168.0.104:59949] ModSecurity: Attention. L'opérateur EQ correspond
> 0 à REQUEST_HEADERS. [fichier "C:\/Program Files/ModSecurity
> IIS/owasp_crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"]
> [ligne "47"] [id "960015"] [rev "1"] [msg "Requête manquante d'un en-tête Accept"]
> [gravité "NOTICE"] [ver "OWASP_CRS/2.2.9"] [maturité "9"]
> [précision "9"] [tag
> "OWASP_CRS/PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag
> "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"] [hostname
> "*********"] [uri
> "/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=iIxfXzLxKm9twEhHdomj4DI95so0QmpmqeTXD4Qe0VsQoJO47CHuEIuv2z7M%2B1TYx44PK5ko18t2aoaLb4WztjR1c8g0VP8MUaGkSO9KDftOzsGektSIDl%2FI1RPMQdTd&connectionData=%5B%7B%22name%22%3A%22*****serverhub%22%7D%5D&tid=6"]
> [identifiant unique "17726168135477755906"]
PS : Je n'utilise pas de technologie SQL dans cette application particulière.