ModSecurity et problèmes d’accent (owasp ruleset)

Salut à tous

Suite à ma vidéo sur le modsecurity et comme ça faisait bientôt 2 ans que je n’avais pas touché la sécurité de mon blog, j’ai décidé de mettre à jour mon modsec ainsi que les règles, histoire de tester les ruleset d’owasp.

Gros soucis, c’est la table ascii qui sert de base au \W dans certaines règles, sans tenir compte de l’encodage, ce qui fait que de simples accents sont considérés comme des attaques !!! (la solution se trouve ici [en]).

En français ça donne :

wget -O /etc/apache2/ http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/unicode.mapping 

Et à rajouter dans votre fichier de conf (28591 correspond à de l’encodage 8859-1, sinon à vous de choisir le votre) :

SecUnicodeCodePage 28591
SecUnicodeMapFile /etc/apache2/unicode.mapping

Ensuite, il vous faudra modifier les règles qui vous ban les accents, en ajoutant un t:utf8toUnicode aux règles en question, comme par exemple la règles 981173 qui devient :

SecRule ARGS_NAMES|ARGS|XML:/* "([\~\!\@\#\$\%\^\&\*\(\)\-\+\=\{\}\[\]\|\:\;\"\'\´\’\‘\`\<\>].*?){4,}" "phase:2,t:none,t:utf8toUnicode,t:urlDecodeUni,block,id:'981173',rev:'2',ver:'OWASP_CRS/2.2.7',maturity:'9',accuracy:'8',msg:'Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded',capture,logdata:'Matched Data: %{TX.1} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',setvar:tx.anomaly_score=+%{tx.warning_anomaly_score},setvar:tx.sql_injection_score=+1,setvar:'tx.msg=%{rule.msg}',setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/RESTRICTED_SQLI_CHARS-%{matched_var_name}=%{tx.0}"

Un reboot et Voilà, amusez vous bien 😉