Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-42897 — CVE-2026-42897 - ponto cego do Exchange Health Checker: regras de URL Rewrite de saída do IIS silenciosamente ignoradas, tornando as mitigações do EOMT invisíveis nos relatórios de diagnóstico. | Kitploit
Ferramentas/GitHubGitHub/atiilla/cve-2026-42897
Segurança de Infraestrutura em NuvemAnálise de VulnerabilidadesAuditoria de ConfiguraçãoSegurança WebConfiguração IncorretaAprendizado e Educação
GitHubatiilla/cve-2026-42897

CVE-2026-42897

CVE-2026-42897 - ponto cego do Exchange Health Checker: regras de URL Rewrite de saída do IIS silenciosamente ignoradas, tornando as mitigações do EOMT invisíveis nos relatórios de diagnóstico.

Ver Repositório
54há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-42897 - Ponto Cego na Regra de Reescrita de Saída do Exchange Health Checker

Gravidade: Média (CVSS 5.3) Componente: Microsoft CSS-Exchange - ferramenta de diagnóstico HealthChecker Arquivos Afetados:

  • Diagnostics/HealthChecker/Analyzer/Get-URLRewriteRule.ps1 (L49, L72, L97)
  • Diagnostics/HealthChecker/Analyzer/Invoke-AnalyzerIISInformation.ps1 (L442–459) Relatado: 2026-05-15 Crédito: Descoberta original pelo pesquisador que relatou a issue #2539 do CSS-Exchange Referências:
  • GitHub do CSS-Exchange: Get-URLRewriteRule.ps1, Invoke-AnalyzerIISInformation.ps1
  • Script de Mitigação EOMT: Security/src/EOMT/Mitigations/CVE-2026-42897.ps1 (L147–254)

Resumo

O Exchange Health Checker (HealthChecker.ps1) relata as regras de Reescrita de URL do IIS como parte de sua auditoria de configuração do servidor. No entanto, a função de enumeração de regras Get-URLRewriteRule.ps1 lê apenas as regras de entrada (system.webServer/rewrite/rules) e ignora silenciosamente as regras de saída (system.webServer/rewrite/outboundRules).

A mitigação do EOMT (Exchange On-premises Mitigation Tool - Ferramenta de Mitigação do Exchange On-premises) para CVE-2026-42897 implanta uma regra de injeção de cabeçalho Content-Security-Policy chamada EOMT OWA CSP - outbound como uma regra de Reescrita de URL de saída do IIS. Como o Health Checker nunca lê outboundRules, essa regra de mitigação é completamente invisível nos relatórios do Health Checker.

Um administrador do Exchange que depende do Health Checker para confirmar se as mitigações do EOMT estão aplicadas receberá um relatório que não mostra nenhuma regra de CSP de saída - gerando um falso negativo para o status da mitigação e criando uma falsa sensação de exposição ou, inversamente, uma falsa confiança de que nenhuma mitigação foi aplicada quando, na verdade, foi.


Detalhe da Vulnerabilidade

Causa Raiz

Três caminhos de código distintos em Get-URLRewriteRule.ps1 leem apenas de .rewrite.rules:

Caminho 1 - análise do web.config (L49):

root@kitploit:~
$rules = $content.configuration.'system.webServer'.rewrite.rules

Caminho 2 - applicationHost.config por local (L72):

root@kitploit:~
$rules = $location.'system.webServer'.rewrite.rules

Caminho 3 - applicationHost.config global (L97):

root@kitploit:~
$rules = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules

Nenhum desses caminhos acessa .rewrite.outboundRules. O objeto $rules retornado é então iterado em Invoke-AnalyzerIISInformation.ps1 (L442–459):

root@kitploit:~
$displayRewriteRules = ($currentRewriteRules.rule | Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }

O membro .rule existe apenas na coleção <rules> de entrada. Mesmo que outboundRules fosse lido, a lógica de exibição precisaria ser atualizada para iterar .rule de ambas as coleções.

Estrutura XML do IIS Afetada

O IIS armazena a configuração de Reescrita de URL com dois filhos separados sob <rewrite>:

root@kitploit:~
<system.webServer>
  <rewrite>
    <!-- inbound - what Health Checker reads -->
    <rules>
      <rule name="Redirect to HTTPS" enabled="true">
        <match url=".*" />
        <conditions><add input="{HTTPS}" pattern="^OFF$" /></conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
      </rule>
    </rules>

    <!-- outbound - INVISIBLE to Health Checker -->
    <outboundRules>
      <rule name="EOMT OWA CSP - outbound" enabled="true">
        <match serverVariable="RESPONSE_Content-Security-Policy" pattern=".*" />
        <action type="Rewrite"
                value="default-src 'self'; script-src 'self' 'unsafe-inline';
                       style-src 'self' 'unsafe-inline';" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

Impacto

CenárioEfeito
Administrador executa o Health Checker após aplicar o EOMTO relatório não mostra nenhuma regra de CSP de saída → o administrador acredita que a mitigação está ausente

Prova de Conceito

Consulte poc_cve_2026_42897.ps1 neste diretório.

O script:

  1. Constrói um XML web.config simulado em memória com uma regra de entrada e a regra de saída EOMT OWA CSP - outbound do EOMT.
  2. Executa a lógica de análise vulnerável do Health Checker (somente entrada) e mostra sua saída.
  3. Executa a lógica de análise corrigida (entrada + saída) e mostra a diferença.
  4. Reproduz os três caminhos de configuração (web.config, applicationHost por local, applicationHost global).
root@kitploit:~
.\poc_cve_2026_42897.ps1

Saída esperada em um Health Checker vulnerável (sem correção):

root@kitploit:~
[*] Vulnerable path (inbound only):
    Rules found: Redirect to HTTPS
    MISSING: EOMT OWA CSP - outbound

[*] Patched path (inbound + outbound):
    Rules found: Redirect to HTTPS, EOMT OWA CSP - outbound
    Outbound rule visible: TRUE

Remediação

Correção em Get-URLRewriteRule.ps1 - leia ambas as coleções em cada caminho:

root@kitploit:~
# web.config (L49)
$inbound  = $content.configuration.'system.webServer'.rewrite.rules
$outbound = $content.configuration.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

# applicationHost.config per-location (L72)
$inbound  = $location.'system.webServer'.rewrite.rules
$outbound = $location.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

# applicationHost.config global (L97)
$inbound  = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.rules
$outbound = $ApplicationHostConfig.configuration.'system.webServer'.rewrite.outboundRules
$rules    = @{ inbound = $inbound; outbound = $outbound }

Correção em Invoke-AnalyzerIISInformation.ps1 - itere ambas as coleções:

root@kitploit:~
$displayRewriteRules = @()
$displayRewriteRules += ($currentRewriteRules.inbound.rule  |
    Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }
$displayRewriteRules += ($currentRewriteRules.outbound.rule |
    Where-Object { $_.enabled -ne "false" }).name |
    Where-Object { $_ -notcontains $excludeRules }

Linha do Tempo

DataEvento
2026-05-15Problema identificado durante pesquisa de verificação de implantação do EOMT
2026-05-15PoC escrita e testada contra configuração simulada do IIS

SOMENTE PARA PESQUISA DE SEGURANÇA AUTORIZADA. Teste exclusivamente em ambientes de laboratório controlados.

Baixar ferramenta
Administrador usa o Health Checker como única ferramenta de auditoriaNão é possível verificar as regras de saída do EOMT sem inspecionar manualmente a configuração do IIS
Resposta a incidentes / verificações de conformidadeAs evidências de mitigação estão ausentes da saída do Health Checker
Monitoramento automatizado que analisa o JSON do Health CheckerA presença/ausência de regra de saída nunca é exibida