Colapso total?
Você achou que o Meltdown foi ruim? Aplicações não privilegiadas sendo capazes de ler a memória do kernel a velocidades possivelmente tão altas quanto megabytes por segundo não eram boas.
Conheça o patch do Windows 7 Meltdown a partir de janeiro. Parou o Meltdown, mas abriu uma vulnerabilidade muito pior ... Permitiu que qualquer processo lesse o conteúdo completo da memória a gigabytes por segundo, oh - também era possível gravar em memória arbitrária.
Nenhuma façanha extravagante era necessária. O Windows 7 já fazia o trabalho pesado de mapear a memória necessária em todos os processos em execução. A exploração era apenas uma questão de ler e escrever na memória virtual em processo já mapeada. Não requer APIs ou syscalls sofisticados - apenas leitura e gravação padrão!
Conheça o patch do Windows 7 Meltdown a partir de janeiro. Parou o Meltdown, mas abriu uma vulnerabilidade muito pior ... Permitiu que qualquer processo lesse o conteúdo completo da memória a gigabytes por segundo, oh - também era possível gravar em memória arbitrária.
Nenhuma façanha extravagante era necessária. O Windows 7 já fazia o trabalho pesado de mapear a memória necessária em todos os processos em execução. A exploração era apenas uma questão de ler e escrever na memória virtual em processo já mapeada. Não requer APIs ou syscalls sofisticados - apenas leitura e gravação padrão!
Acessando a memória em mais de 4 GB / s, a descarga no disco é mais lenta devido às velocidades de transferência do disco. |
Como isso é possível?
Em suma - o bit de permissão User / Supervisor foi definido como User na entrada de auto-referência PML4. Isso disponibilizou as tabelas de páginas para o código do modo de usuário em todos os processos. Normalmente, as tabelas de páginas devem estar acessíveis apenas pelo próprio kernel.
O PML4 é a base da hierarquia de tabela de páginas na memória de 4 níveis que a Unidade de Gerenciamento de Memória da CPU (MMU) usa para converter os endereços virtuais de um processo em endereços de memória física na RAM. Para informações mais detalhadas sobre paginação, dê uma olhada em Obtendo Físico: Abuso Extremo de Sistemas de Paginação baseados em Intel - Parte 1 e Parte 2 .
Entrada de auto-referência PML4 no deslocamento 0xF68 com o valor 0x0000000062100867. |
O Windows tem uma entrada especial na tabela de páginas PML4 que se referencia a si mesma, uma entrada de auto-referência. No Windows 7, a auto-referência do PML4 é fixada na posição 0x1ED, offset 0xF68 (é randomizada no Windows 10). Isso significa que o PML4 sempre será mapeado no endereço: 0xFFFFF6FB7DBED000 na memória virtual. Este é normalmente um endereço de memória apenas disponibilizado para o kernel (Supervisor). Como o bit de permissão foi erroneamente configurado para User, isso significa que o PML4 foi mapeado em todos os processos e disponibilizado para executar códigos no modo de usuário.
Endereços de memória "endereço do kernel" mapeados em cada processo como páginas de leitura / gravação no modo usuário. |
Uma vez que o acesso de leitura / gravação tenha sido adquirido para as tabelas de páginas, será trivialmente fácil obter acesso à memória física completa, a menos que ela seja adicionalmente protegida por EPTs (Extended Page Tables) usadas para virtualização. Tudo o que precisamos fazer é escrever suas próprias Page Table Entries (PTEs) nas tabelas de páginas para acessar memória física arbitrária.
O último '7' no PML4e 0x0000000062100867 (a partir do exemplo acima) indica que os bits 0, 1, 2 estão definidos, o que significa que ele está presente, gravável e acessível pelo modo de usuário conforme a descrição no Manual da Intel.
Trecho do Manual da Intel, se o bit 2 for definido como '1', o acesso ao modo de usuário é permitido. |
Sim absolutamente. A técnica foi adicionada como um dispositivo de aquisição de memória ao kit de ferramentas de ataque de acesso direto à memória PCILeech . Basta baixar o PCILeech e executá-lo com o tipo de dispositivo: -device totalmeltdownem um sistema Windows 7 vulnerável.
Despeje a memória para arquivar com o comando: pcileech.exe dump -out memorydump.raw -device totalmeltdown -v -force .
Se você tiver o driver do sistema de arquivos Dokany instalado, poderá montar os processos em execução como arquivos e pastas no Sistema de Arquivos do Processo de Memória - com a memória virtual do kernel e os processos como leitura / gravação.
Para montar os processos, emita o comando:Montagem do pcileech.exe - totalmeltdown do dispositivo .
Lembre-se de reinstalar as atualizações de segurança se você desinstalar temporariamente a última para testar essa vulnerabilidade.
Um sistema vulnerável é "explorado" e os processos em execução são montados com o PCILeech. Mapas de memória de processo e PML4 são acessados. |
Meu sistema é vulnerável?
Apenas os sistemas Windows 7 x64 corrigidos com os patches 2018-01 ou 2018-02 são vulneráveis. Se o seu sistema não for corrigido desde dezembro de 2017 ou se for corrigido com os patches de 2018-03 ou mais tarde, ele será seguro.
Outras versões do Windows - como o Windows 10 ou 8.1 são completamente seguras em relação a esse problema e nunca foram afetadas por ele.
Outro
eu descobri essa vulnerabilidade logo após ter sido corrigido no Patch 2018-03 na terça-feira. Não consegui correlacionar a vulnerabilidade a CVEs conhecidos ou outros problemas conhecidos.
A atualização do
Windows 2008R2 também era vulnerável.
Esta vulnerabilidade foi limpa como ok para blogar com o Microsoft Security (MSRC) em 2018-03-26.
FONTE:FRIZK
Comentários
Postar um comentário