ModSecurity registra anomalias duplicadas relatadas ao invés de única

1

Esta é a segunda vez que eu configuro o ModSecurity com o conjunto de regras OWASP. Anteriormente eu usei a versão 2.2.5 do conjunto de regras e agora em um servidor diferente 2.2.9.

Estou tentando configurar a detecção de anomalias e, portanto, desativei o error.log log para não anomalias.

Tudo parece estar funcionando, no entanto, quando o limite de anomalias é excedido, recebo muitas entradas de log para a única anomalia. Anteriormente, essa era apenas uma entrada de log e várias parecem excessivas.

Estou acionando um simples ataque XSS e o error.log mostra o seguinte:

[Fri Jul 01 09:25:09.234394 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(?i)(<script[^>]*>[\\s\\S]*?<\\/script[^>]*>|<script[^>]*>[\\s\\S]*?<\\/script[[\\s\\S]]*[\\s\\S]|<script[^>]*>[\\s\\S]*?<\\/script[\\s]*[\\s]|<script[^>]*>[\\s\\S]*?<\\/script|<script[^>]*>[\\s\\S]*?)" at ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_41_xss_attacks.conf"] [line "14"] [id "973336"] [rev "1"] [msg "XSS Filter - Category 1: Script Tag Vector"] [data "Matched Data: <script>alert('simple-xss-test')</script> found within ARGS:p: <script>alert('simple-xss-test')</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/2.2.9"] [maturity "1"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A2"] [tag "OWASP_AppSensor/IE1"] [tag "PCI/6.5.1"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235629 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:950109-OWASP_CRS/PROTOCOL_VIOLATION/EVASION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: %3Cscript%3Ealert(%27simple-xss-test%27)%3C/script%3E"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235701 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:960024-OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: ')</"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235767 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:950901-OWASP_CRS/WEB_ATTACK/SQL_INJECTION-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: script>alert"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235834 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:981173-OWASP_CRS/WEB_ATTACK/RESTRICTED_SQLI_CHARS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: <script>alert('"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.235900 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:981243-Detects classic SQL injection probings 2/2-OWASP_CRS/WEB_ATTACK/SQLI-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: >alert('s"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236009 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:973336-OWASP_CRS/WEB_ATTACK/XSS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: <script>alert('simple-xss-test')</script>"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236075 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Pattern match "(.*)" at TX:973307-OWASP_CRS/WEB_ATTACK/XSS-ARGS:p. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_49_inbound_blocking.conf"] [line "26"] [id "981176"] [msg "Inbound Anomaly Score Exceeded (Total Score: 39, SQLi=14, XSS=12): Last Matched Message: XSS Attack Detected"] [data "Last Matched Data: alert("] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]
[Fri Jul 01 09:25:09.236367 2016] [:error] [pid 17771:tid 139978059269888] [client 81.102.141.69] ModSecurity: Warning. Operator GE matched 15 at TX:inbound_anomaly_score. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_60_correlation.conf"] [line "37"] [id "981204"] [msg "Inbound Anomaly Score Exceeded (Total Inbound Score: 39, SQLi=14, XSS=12): XSS Attack Detected"] [hostname "domain.co.uk"] [uri "/robots.txt"] [unique_id "V3Yo5dRurOYAAEVrxjEAAADJ"]

O que parece estar acontecendo é que a regra # 981176 (a que entendo é o bloqueio) está registrando todas as partidas contra o ataque, em vez de apenas produzir uma entrada de registro para a anomalia. Como você pode ver, cada linha inclui o mesmo unique_id

Eu comparei o antigo conjunto de regras 2.2.5 com o 2.29 e não consigo ver nenhuma diferença que possa causar isso.

Idealmente, eu gostaria de receber uma entrada de log única quando uma anomalia excede o limite, para que eu possa investigar no modsec_audit.log . Foi o meu entender que deveria se comportar dessa maneira.

Alguma idéia de como reduzir isso para uma única entrada de log como eu costumava ter?

Obrigado

    
por AJReading 01.07.2016 / 10:37

1 resposta

2

Isso deve ser definido alterando a SecDefaultAction definida no arquivo modsecurity_crs_10_setup.conf. O padrão é abaixo (exceto alterado de deny para pass para pontuação de anomalia) e registrará tudo no log de erros e de auditoria:

SecDefaultAction "phase:1,pass,log"
SecDefaultAction "phase:2,pass,log"

Para registrar isso no log de auditoria, use o seguinte:

SecDefaultAction "phase:1,pass,nolog,auditlog"
SecDefaultAction "phase:2,pass,nolog,auditlog"

É isso que está definido?

Você pode estar um pouco confuso sobre como isso vai parar de registrar as regras principais, mas não a regra de resumo (onde a pontuação da anomalia é verificada). A chave é que as regras normais (por exemplo, 960024) não definem o registro em log e apenas bloqueiam com base nos padrões, portanto, dependa desses padrões:

"phase:2,capture,t:none,t:urlDecodeUni,block,id:'960024'...etc.

Embora as regras que verificam as pontuações de anomalia (por exemplo, 981176) explicitamente "registrem" e "neguem", não é necessário que os padrões digam para fazer isso:

"chain,phase:2,id:'981176',t:none,deny,log

É por isso que alterar o padrão significa que as regras principais não fazem login no log de erros, mas as regras de anomalia de resumo fazem isso.

Portanto, isso deve resolver o primeiro alerta que você está recebendo incorretamente para a regra 973336, já que ele não deve estar logado.

O que eu não entendo, no entanto, é por que você está recebendo vários alertas para a regra 981176 - um para cada regra alertada. Isso parece errado para mim, já que deveria registrar uma vez para o último alerta.

No entanto, antes da 2.9.1, o ModSecurity estava usando seu próprio log de erros, em vez de usar o log padrão do Apache. então pode valer a pena tentar novamente após atualizar o ModSecurity para 2.9.1. Veja este bug para mais detalhes: link

Como alternativa, se isso não funcionar, tente enviar um e-mail para [email protected]. e perguntando por lá, como eles podem ter uma melhor compreensão de como a anomalia na criação de log deve funcionar (eu não uso isso para ser honesto). Veja link para mais detalhes desta lista de discussão.

    
por 04.07.2016 / 13:57