Por que mod_security requer um campo de cabeçalho HTTP ACCEPT?

5

Depois de alguma depuração, descobri que o conjunto de regras principal do mod_security bloqueia solicitações que não têm o campo de cabeçalho ACCEPT (opcional!).

Isso é o que eu encontro nos registros:

ModSecurity: Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [file "/etc/apache2/conf.d/modsecurity/modsecurity_crs_21_protocol_anomalies.conf"] [line "41"] [id "960015"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER"] [hostname "example.com"] [uri "/"] [unique_id "T4F5@H8AAQEAAFU6aPEAAAAL"]
ModSecurity: Access denied with code 400 (phase 2). Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [file "/etc/apache2/conf.d/modsecurity/optional_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "41"] [id "960015"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"] [tag "PROTOCOL_VIOLATION/MISSING_HEADER"] [hostname "example.com"] [uri "/"] [unique_id "T4F5@H8AAQEAAFU6aPEAAAAL"]

Por que esse cabeçalho é obrigatório? Eu entendo que "a maioria" dos clientes os envia, mas por que a ausência deles é considerada uma ameaça à segurança?

    
por ripper234 08.04.2012 / 13:53

2 respostas

3

Eu não escrevi essas regras, mas pelo que entendi, há uma strong correlação entre os clientes que não incluem esse cabeçalho e os clientes mal-intencionados e também entre os clientes que o incluem e os clientes benignos.

Você pode encontrar alguns bots (por exemplo: Pingdom, HostTracker, UpDowner, magpie-crawler, Yandex, Yodao, MJ12, GigaBot e o LinkedInBot em um grep rápido através de meus logs) que não enviam esse cabeçalho, no entanto, se você combine isso com uma regra que corresponda a agentes de usuário "normais", como Chrome, Firefox, IE, Safari, Opera, etc., e você poderá evitar o bloqueio desses bots.

Existem alguns clientes (ou possivelmente um proxy que modifica os cabeçalhos) que enviam um cabeçalho accept: (e a maioria dos outros cabeçalhos em letras minúsculas). Ainda não consegui determinar se são maliciosos ou não, no entanto, todos eles afirmam ser "Firefox / 3.6.8" e possuem:

Via:HTTP/1.1 silk
X-Forwarded-For:10.161.106.98

ou algum outro endereço IP 10.x.x.x em seus cabeçalhos ... o que é suspeito.

    
por 12.04.2012 / 11:38
1

RFC 2616 afirma que o cabeçalho Accept deve estar presente em todas as solicitações. Observe que isso não é um requisito absoluto, portanto, um user-agent ainda é condicionalmente compatível (conforme definido no RFC) se ele não enviar esse cabeçalho.

A justificativa para negar solicitações sem um cabeçalho Accept é que todos os navegadores regulares enviem o cabeçalho, enquanto muitos bots não. Na prática, porém, depois de ver milhões de solicitações, alguns "bons" bots também não enviam o cabeçalho Accept. Portanto, essa regra não é perfeita e gera falsos positivos.

    
por 19.01.2015 / 10:10