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-2017-0037 — Análise técnica da CVE-2017-0037, uma vulnerabilidade de corrupção de memória do navegador Microsoft que permite execução remota de código por meio de confusão de tipo no tratamento de CSS/JS, com detalhes de exploração PoC e estratégias de mitigação. | Kitploit
Ferramentas/GitHubGitHub/chattopadhyaykittu/cve-2017-0037
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHubchattopadhyaykittu/cve-2017-0037

CVE-2017-0037

Análise técnica da CVE-2017-0037, uma vulnerabilidade de corrupção de memória do navegador Microsoft que permite execução remota de código por meio de confusão de tipo no tratamento de CSS/JS, com detalhes de exploração PoC e estratégias de mitigação.

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
Ver Repositório
há 4 anosAinda não revisado

CVE-2017-0037 (Vulnerabilidade de Corrupção de Memória do Navegador Microsoft)

Este documento é sobre CVE-2017-0037 - Vulnerabilidade de Corrupção de Memória do Navegador Microsoft. Primeiro, será introduzido o que é uma Execução Remota de Código (RCE) e, em seguida, serão abordados alguns detalhes técnicos.

O que é Execução Remota de Código?

Um ciberataque no qual um atacante pode executar comandos remotamente em outro computador é conhecido como execução remota de código. As execuções remotas de código (RCEs) são mais comumente causadas por software malicioso baixado pelo hospedeiro e podem ocorrer independentemente da localização do sistema.

Para alcançar RCE, os seguintes métodos podem ser utilizados:

  1. Ataques de Injeção: Aqui, o atacante fornece uma entrada errada com a intenção de que uma parte dela seja processada como parte do comando.

  2. Ataques de Desserialização: O programa de desserialização pode ler uma entrada de usuário cuidadosamente formulada dentro dos dados serializados como código executável.

  3. Escrita Fora dos Limites: Um atacante pode ser capaz de construir uma entrada que ultrapasse o buffer alocado se a alocação de memória for mal feita. Como o código executável também é armazenado na memória, o programa pode ser capaz de executar dados fornecidos pelo usuário se estes forem escritos no local correto.

  4. Ataque de Confusão de Tipo: Existe uma ameaça de confusão de tipo quando um código-fonte não toma nenhuma ação para verificar a autenticidade de uma entidade que lhe é fornecida. Como a confusão de tipo permite que um hacker introduza código que pode executar instruções aleatórias apenas causando uma discrepância nos tipos de objeto, isso é arriscado.

Execução de um Ataque RCE

Uma sequência de ataque RCE é simples de executar. Primeiro, o ator da ameaça procura na internet por vulnerabilidades comuns que possam ser exploradas num ataque eficaz. Após identificar uma vulnerabilidade específica, o hacker usa o exploit para obter acesso. Agora que ganhou acesso, pode usar o script malicioso para atingir seus objetivos, que incluem exfiltração de dados, lavagem de dinheiro, vigilância abrangente e interrupção de serviço.

A linguagem da aplicação alvo é frequentemente usada para injetar código. A linguagem é então executada pelo processador do lado do servidor. Python, Java, Perl, Ruby e PHP são linguagens de programação comuns. A injeção de código é comum em plataformas que analisam imediatamente entradas não verificadas. Aplicações web públicas são, de fato, um grande foco para hackers.

Scripts maliciosos são tipicamente executados por scripts bash. Um script bash é um documento de texto que contém comandos que normalmente seriam digitados no prompt de comando. Scripts bash permitem que os comandos incluídos funcionem corretamente. É costume anexar um ".sh" a eles, embora não seja necessário. Após o empacotamento, o hacker coloca o código numa aplicação vulnerável, que então o executa. A aplicação também pode dar uma decisão ao kernel para executá-lo.

Métricas do Ataque

A imagem a seguir foca nas métricas de pontuação base do CVE-2017-0037.

Alt text

Fonte

A pontuação de classificação CVSS aqui é 8.1 (alta).

Vetor de Ataque - O componente vulnerável aqui está ligado à pilha de rede, e o alcance de potenciais hackers inclui desde as outras alternativas declaradas até toda a Internet.

A Complexidade do Ataque desta vulnerabilidade é alta, ou seja, o sucesso de um ataque depende de circunstâncias fora do controle do atacante. Portanto, um ataque não pode ser concluído à vontade, mas requer que o atacante dispenda um nível significativo de trabalho no planejamento ou implementação contra o elemento suscetível antes que possa ser esperado que seja eficaz.

O valor de Confidencialidade aqui é alto, o que significa uma perda completa de confidencialidade, resultando no atacante tendo acesso a todos os recursos dentro do componente danificado.

Integridade é alta, o que significa uma perda severa de integridade e proteção.

Disponibilidade é alta, o que significa uma perda completa de disponibilidade, permitindo ao atacante proibir completamente o acesso aos recursos do componente afetado.

Detalhes do Ataque

A vulnerabilidade CVE-2017-0037 era uma falha de confusão de tipo que residia no Microsoft Edge e no Internet Explorer 10 e 11. Ela permitia que atacantes executassem código remotamente na máquina alvo quando o usuário visitava um site malicioso.

A falha foi apontada pelo pesquisador do Google Ivan Frantic e os detalhes da vulnerabilidade foram divulgados pelo Google, pois a Microsoft não conseguiu corrigi-la dentro do seu período de divulgação de 90 dias.

Alt text

Fonte

O prova de conceito (PoC) do exploit publicado pelo pesquisador revela que ele pode travar o Edge e o IE, permitindo que um atacante execute código remotamente e obtenha privilégios de administrador do sistema comprometido. Ele também confirmou que o ataque funcionou na versão de 64 bits do Internet Explorer no Windows Server 2012 R2 e afetou o IE 11 de 32 bits, bem como o Microsoft Edge.

A confusão de tipo está na função

Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElement em mshtml.dll. Ao executar código arbitrário remotamente, através de vetores que envolvem uma sequência de tokens Cascading Style Sheets (CSS) e código JavaScript manipulado que opera num elemento TH, o ataque pode ocorrer.

O PoC por Ivan Fratric do Google Project Zero

Alt text

Fonte

Conforme declarado pelo pesquisador Ivan Frantic, o PoC trava em

MSHTML!Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElement ao ler do endereço 0000007800000070.

Alt text

Fonte

Alt text

Fonte

Ao analisar o código ao redor do ponto da falha, pode-se observar que no endereço de memória 00007ffe`8f330a51, o conteúdo do registrador rbp é lido no registrador rcx. Em seguida, a chamada para

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable atribui valor a rax (é um registrador designado para armazenar valores de retorno de funções).

Embora rcx devesse apontar para outro tipo de objeto, no PoC mostrado acima, ele aponta para um array de inteiros de 32 bits alocado em Array<Math::SLayoutMeasure>::Create. Os deslocamentos das colunas da tabela são armazenados nesse array e um atacante pode obter controle sobre ele. A falha ocorre em 00007ffe`8f330a59 porque rax aponta para memória não inicializada. rax armazena o valor de retorno da função

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable que não é um endereço de memória inicializado. O atacante pode apontar rax para algum local de memória que possa controlar. O atacante pode modificar propriedades da tabela, como espaçamento de borda e a largura do primeiro elemento TH, para obter controle sobre rax.

Alt text

Fonte

Se o atacante conseguir obter controle sobre rax na linha 00007ffe`8f330a59, a função

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable é chamada novamente na linha 00007ffe`8f330a5d 743d com os mesmos argumentos e um salto para um endereço mais alto. Depois disso, através de uma série de diferenças que começam a partir de rax, um ponteiro de função poderia ser obtido e armazenado em rdi. Se o atacante conseguisse passar uma verificação CFG nesse ponteiro de função, o ponteiro de função controlado pelo atacante seria chamado na linha 00007ffe`8f330a80.

Possível Correção do Bug

Conforme sugerido por Ivan Fratric, primeiro, a razão por trás da ocorrência da confusão de tipo deve ser detectada. De acordo com sua hipótese, dois tipos de colunas existem no DOM: colunas de tabela HTML e colunas CSS, e o IE/Edge estava se confundindo entre as duas. Então, se uma verificação de tipo fosse adicionada em algum lugar na função vulnerável, poderia ter resolvido.

Links Úteis

  • Bug Reportado por Ivan Fratric
  • Vulnerabilidade de Corrupção de Memória do Navegador Microsoft

Impactos de um Ataque RCE

  1. Acesso Inicial: Atacantes podem usar isso para obter controle sobre um dispositivo e instalar malware ou realizar outros objetivos.

  2. Divulgação de Informações: Ataques RCE ajudam a instalar malware de roubo de informações ou executar comandos que coletam e roubam dados do dispositivo afetado.

  3. Negação de Serviço: Uma falha de RCE permite que hackers executem código na máquina que hospeda a aplicação afetada e, assim, interrompam sua operação e de outros programas no sistema.

  4. Criptomineração: Malware de criptomineração é frequentemente implantado e executado em dispositivos suscetíveis.

  5. Ransomware: Ransomware é um tipo de software que impede um usuário de acessar seus arquivos a menos que pague dinheiro.

Formas de Mitigar Ataques RCE

  1. O controle de estouro de buffer pode ser usado para mitigar ataques RCE.

  2. Listas de controle de acesso são úteis para limitar privilégios de usuário e, portanto, limitar as capacidades de um atacante se ele conseguir controlar a conta de um usuário.

  3. O tráfego de rede deve ser monitorado quanto a conteúdo potencialmente malicioso, além de monitorar endpoints.

  4. Usar sanitização de entrada, que é o processo de limpar e higienizar a entrada do usuário para protegê-la de ser usada para explorar falhas de segurança.

Referências

  • https://msrc.microsoft.com/update-guide/vulnerability/CVE-2017-0037
  • https://www.checkpoint.com/cyber-hub/cyber-security/what-is-remote-code-execution-rce/#:~:text=In%20an%20injection%20attack%2C%20the%20attacker%20deliberately%20provides%20malformed%20input%20that%20causes%20part%20of%20their%20input%20to%20be%20interpreted%20as%20part%20of%20the%20command
  • https://www.bugcrowd.com/glossary/remote-code-execution-rce/
  • https://nvd.nist.gov/vuln/detail/CVE-2017-0037
  • https://bugs.chromium.org/p/project-zero/issues/detail?id=1011
  • https://blog.0patch.com/2017/03/0patching-another-0-day-internet.html
  • https://www.cs.uaf.edu/2017/fall/cs301/lecture/09_11_registers.html
  • https://reverseengineering.stackexchange.com/questions/10746/what-does-mov-qword-ptr-dsrax18-r8-mean
Baixar ferramenta