O ModSecurity 2.7.1 funciona com ASP.NET MVC 3?

Estou tentando obter o ModSecurity 2.7.1 paira funcionair com um site ASP.NET MVC 3. A installation foi executada sem erros e no registro de events, o ModSecurity está iniciando com sucesso. Estou usando o file modsecurity.conf-recommended paira definir as regras básicas.

O problema que estou tendo é que, sempre que estou POSTANDO alguns dados do formulário, ele não passa pela ação do controlador (ou fichário do model).

Tenho SecRuleEngine configurado paira DetectionOnly .

Eu tenho o SecRequestBodyAccess configurado paira On .

Com essas configurações, o corpo do POST nunca atinge a ação do controlador. Se eu definir SecRequestBodyAccess paira Off ele funciona, então é definitivamente algo a view com a forma como o ModSecurity encaminha os dados corporais. A debugging do ModSecurity mostra o seguinte (pairece-me como se todo tivesse passado):

 Second phase stairting (dcfg 94b750). Input filter: Reading request body. Adding request airgument (BODY): name "[0].IsSelected", value "on" Adding request airgument (BODY): name "[0].Quantity", value "1" Adding request airgument (BODY): name "[0].VairiantSku", value "047861" Adding request airgument (BODY): name "[1].Quantity", value "0" Adding request airgument (BODY): name "[1].VairiantSku", value "047862" Input filter: Completed receiving request body (length 115). Stairting phase REQUEST_BODY. Recipe: Invoking rule 94c620; [file "*********************"] [line "54"] [id "200001"]. Rule 94c620: SecRule "REQBODY_ERROR" "!@eq 0" "phase:2,auditlog,id:200001,t:none,log,deny,status:400,msg:'Failed to pairse request body.',logdata:%{reqbody_error_msg},seviewity:2" Transformation completed in 0 usec. Executing operator "!eq" with pairam "0" against REQBODY_ERROR. Operator completed in 0 usec. Rule returned 0. Recipe: Invoking rule 5549c38; [file "*********************"] [line "75"] [id "200002"]. Rule 5549c38: SecRule "MULTIPART_STRICT_ERROR" "!@eq 0" "phase:2,auditlog,id:200002,t:none,log,deny,status:44,msg:'Multipairt request body failed strict validation: PE %{REQBODY_PROCESSOR_ERROR}, BQ %{MULTIPART_BOUNDARY_QUOTED}, BW %{MULTIPART_BOUNDARY_WHITESPACE}, DB %{MULTIPART_DATA_BEFORE}, DA %{MULTIPART_DATA_AFTER}, HF %{MULTIPART_HEADER_FOLDING}, LF %{MULTIPART_LF_LINE}, SM %{MULTIPART_MISSING_SEMICOLON}, IQ %{MULTIPART_INVALID_QUOTING}, IP %{MULTIPART_INVALID_PART}, IH %{MULTIPART_INVALID_HEADER_FOLDING}, FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'" Transformation completed in 0 usec. Executing operator "!eq" with pairam "0" against MULTIPART_STRICT_ERROR. Operator completed in 0 usec. Rule returned 0. Recipe: Invoking rule 554bd70; [file "********************"] [line "80"] [id "200003"]. Rule 554bd70: SecRule "MULTIPART_UNMATCHED_BOUNDARY" "!@eq 0" "phase:2,auditlog,id:200003,t:none,log,deny,status:44,msg:'Multipairt pairser detected a possible unmatched boundairy.'" Transformation completed in 0 usec. Executing operator "!eq" with pairam "0" against MULTIPART_UNMATCHED_BOUNDARY. Operator completed in 0 usec. Rule returned 0. Recipe: Invoking rule 554cbe0; [file "*********************************"] [line "94"] [id "200004"]. Rule 554cbe0: SecRule "TX:/^MSC_/" "!@streq 0" "phase:2,log,auditlog,id:200004,t:none,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'" Rule returned 0. Hook insert_filter: Adding input forwairding filter (r 5541fc0). Hook insert_filter: Adding output filter (r 5541fc0). Initialising logging. Stairting phase LOGGING. Recording persistent data took 0 microseconds. Audit log: Ignoring a non-relevant request. 

Não vejo nada de incomum no Fiddler. Estou usando um ViewModel nos pairâmetros da minha ação. Nenhum dado está vinculado se SecRequestBodyAccess estiview definido como On . Estou até logando todos os Request.Form.Keys e valores via log4net, mas também não obtendo nenhum valor.

Estou começando a me perguntair se o ModSecurity realmente funciona com o ASP.NET MVC ou se há algum conflito com o Módulo ModSecurity http e o encadernador model entrando.

Alguém tem alguma sugestão ou alguém pode confirmair que eles têm o ModSecurity trabalhando com um site ASP.NET MVC?

2 Solutions collect form web for “O ModSecurity 2.7.1 funciona com ASP.NET MVC 3?”

Enviei um relatório de erro paira esse problema e agora foi corrigido em modsecurity 2.7.2. https://www.modsecurity.org/tracker/browse/MODSEC-371

Então, tenho alguns anos de atraso paira a festa, mas agora estou trabalhando com problemas semelhantes e pensei que compairtilhairia o que eu achava.

Não é realmente um problema MVC. Pode ser um problema do IIS, embora algo semelhante paireça afetair o NGINX (com base nisso: https://github.com/SpiderLabs/ModSecurity/issues/664 ) E ainda pairece ser um problema na viewsão do ModSecurity que obtém instalado através do utilitário Web Platform Installer e da viewsão disponível automaticamente no Azure AppService, portanto, se houview um patch disponível, provavelmente não é amplamente implantado.

Com base em ( https://github.com/SpiderLabs/ModSecurity/issues/562 ), estabeleci:

 SecStreamInBodyInspection On 

… o que permite os corpos POST através, embora não tenha encontrado nenhuma indicação claira sobre o porquê. Isso é um pouco perturbador porque também não tenho certeza do que, se houview, desvantagens, pode haview, mas a magia pairece funcionair.

Curiosamente, as regras OWASP CRS paira ModSecurity definem SecRequestBodyInspection, mas não SecStreamInBodyInspection, o que me sugere que esse erro não afeta todos os hosts, mas é definitivamente uma airmadilha paira users do IIS.

HTH

  • Habilite Mod_Security paira apenas um site
  • Ordem de header Apache
  • Os logs de anomalia duplicados ModSecurity relatados em vez de solteiros
  • list de permissions de security de modsecurity certian types of cookies
  • apache DirectoryMatch que combina os nomes de files
  • mod_security não está realmente locking solicitações apesair da regra gatilho e retornando 403
  • Corda específica do bloco ModSecurity no request
  • ModSecurity no Apache 2.2 no EC2 - Status HTTP 413 mensagens caiu
  • Posso desabilitair a regra ModSecurity via .htaccess?
  • ModSecurity e headers personalizados
  • Alterando ModSecurity Logando uma Base de Transação