La expresión regular de modsecurity no siempre coincide con una regla simple

La expresión regular de modsecurity no siempre coincide con una regla simple

Estoy intentando crear una regla de expresión regular de modsecurity simple que deje de procesar las reglas cuando se encuentra una coincidencia y simplemente devuelva el estado 200 en una solicitud POST para que no continúe y sea bloqueada por otra regla CRS más adelante en la cadena.

Aquí está mi regla:

    SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog"

Lo que sucede es que a veces la regla se ejecuta y está permitida, pero otras veces modsecurity continúa y queda atrapada por las reglas CRS integradas de modsecurity después de esta regla y parece que no puedo entender por qué. Soy nuevo en modsecurity y he estado leyendo todos los documentos en línea pero aún no he encontrado la respuesta. También probé reglas de expresiones regulares que (en otros lugares he usado expresiones regulares) se usaron de manera ligeramente diferente con los mismos resultados. A veces funcionan y otras veces no.

"@rx ^/\cgi-bin\/myPHPScript\.php"
"@rx ^.*\/cgi-bin\/myPHPScript\.php.*$"

Quiero entender cuál es el problema con esta situación particular porque también tengo otros scripts de expresiones regulares más complejos que quiero permitir, por lo que comprender el problema con este debería aplicarse a los demás.

Gracias de antemano.

[EDITAR]

Parece que cuando:

SecRuleEngine DetectionOnly

uno necesita configurar:

ctl:ruleEngine=Off

o

ctl:ruleEngine=On

al intentar utilizar allowconDetectionOnly

Según este artículo:

https://stackoverflow.com/questions/58452059/modsecurity-is-turning-off-the-rule-engine-really-necessary-when-implementing-a

Ejemplo:

SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog,ctl:ruleEngine=On"

información relacionada