mod_security - Limites PCRE dépassées

11

À peu près à chaque demande, j'obtiens l'erreur suivante:

Rule execution error - PCRE limits exceeded (-8): (null).

Après un tas de googler les seules solutions semblent être

a) Ajoutez ce qui suit dans votre httpd.conf

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) Ajoutez ce qui suit à votre php.ini

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) Utilisez une version qui a été compilée avec -disable-pcre-match-limitoption.


J'exécute ce qui suit:

ModSecurity pour Apache / 2.5.12 ( http://www.modsecurity.org/ ).

Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + squeeze8 avec Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8

Pour ModSec mes règles, j'utilise la version 2.2.3 du projet de jeu de règles de base OWASP ModSecurity (CRS) qui est la plus récente de cette publication.

Mon httpd.conf se compose essentiellement:

<IfModule security2_module>
    SecUploadDir /var/asl/data/suspicious
    SecDataDir /var/asl/data/msa
    SecTmpDir /tmp
    SecAuditLogStorageDir /var/asl/data/audit

    Include modsecurity.d/modsecurity_crs_10_config.conf
    Include modsecurity.d/activated_rules/*.conf

    SecRuleEngine On

    # Debug log
    SecDebugLog /var/log/apache2/modsec_debug.log
    SecDebugLogLevel 3

    # Serial audit log
    SecAuditEngine RelevantOnly
    SecAuditLogRelevantStatus ^5
    SecAuditLogParts ABIFHZ
    SecAuditLogType Serial
    SecAuditLog /var/log/apache2/modsec_audit.log

    SecPcreMatchLimit 150000
    SecPcreMatchLimitRecursion 150000

</IfModule>


<IfModule mod_php5.c>
    php_admin_flag pcre.backtrack_limit 10000000
    php_admin_flag pcre.recursion_limit 10000000
</IfModule>

Dont l'intérieur de mon modsecurity.drépertoire est juste toutes les règles par défaut CRS a dans leur fichier d'installation. J'ai également défini les limites de pcre à 150000000 et 100000000000 et plus, mais pas disponibles.

Donc en conclusion:

solutions aet bne fonctionnent pas, et je préfère grandement ne pas le faire c... car je ne comprends pas vraiment / comme compiler.

Quelqu'un a d'autres idées?

ParoX
la source
Je l'ai également en utilisant les dernières règles de base et le code source mod_security que je viens de télécharger. Je reçois ces erreurs pour une application Rails, pas pour PHP.
Dogweather

Réponses:

7

Sainte récursivité, Batman!

Je prétends que vous avez un problème avec vos règles de mod_security. Ce type de récursion semble inutile et entraînera très probablement une charge sérieuse pour votre serveur. Corrigez les règles et / ou la configuration Apache, et n'essayez pas de "résoudre" ce problème avec des nombres arbitrairement grands.

Janne Pikkarainen
la source
4

Regarder cela de près car j'ai exactement le même problème et votre configuration ressemble à la mienne. Je suis un premier temporisateur de modsecurity, ce n'est pas exactement convivial noob!

D'accord avec Janne. Le seul conseil que j'ai jusqu'à présent est de supprimer toutes les règles fondamentales et de les réintroduire 1 par 1 pour commencer à réduire le problème. Je suis sur le point de le faire maintenant.

Vous devez également modifier le paramètre de votre moteur de règles sur

SecRuleEngine DetectionOnly

tout en travaillant sur les problèmes de configuration, cela vous permettra de surveiller sans appliquer - vous ne voulez pas appliquer les règles pendant que vous n'êtes toujours pas sûr de faire ce que vous voulez.

Veuillez publier votre retour d'apprentissage si vous trouvez une solution.

Paul Fernihough
la source
0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

Le doit être trouvé et modifié dans les fichiers de configuration de mod_security sur certaines versions * nix.

Egils
la source