Análise de Vulnerabilidades Críticas do Sistema Windows da Microsoft: Pode Levar a Grandes Riscos de Segurança no Web3
No mês passado, um patch de segurança da Microsoft corrigiu uma vulnerabilidade de elevação de privilégios no sistema Windows que estava sendo explorada por hackers. Essa vulnerabilidade existe principalmente em versões anteriores do Windows e não pode ser ativada no Windows 11. Embora esse tipo de vulnerabilidade exista há anos, ainda vale a pena analisar como os atacantes continuam a explorá-la no contexto atual de aprimoramento das medidas de segurança.
Esta análise é baseada no sistema Windows Server 2016. Trata-se de uma vulnerabilidade zero-day não divulgada, que permite a hackers obter controle total sobre o sistema Windows. Uma vez que o sistema é controlado, as consequências podem incluir vazamento de informações pessoais, falhas no sistema, perda de dados, perdas financeiras, entre outras. Para os usuários de Web3, as chaves privadas podem ser roubadas e ativos digitais podem ser transferidos. Em uma escala maior, essa vulnerabilidade pode até afetar todo o ecossistema Web3 que opera com infraestrutura baseada em Web2.
Através da análise do patch, descobrimos que o problema está na gestão da contagem de referências dos objetos. Comentários no código fonte anterior mostram que o código apenas bloqueava o objeto da janela, sem bloquear o objeto do menu dentro da janela, levando a referências erradas do objeto do menu.
Para reproduzir essa vulnerabilidade, construímos uma estrutura de menu aninhado especial com várias camadas, e definimos propriedades específicas para cada menu, a fim de passar pelas verificações relevantes do sistema. O ponto chave é remover a relação de referência entre os menus ao retornar à camada do usuário, liberando com sucesso o objeto de menu alvo. Assim, quando a função do núcleo referenciar novamente esse menu, acessará um objeto inválido.
Na utilização prática, consideramos principalmente duas soluções: executar shellcode e utilizar primitivas de leitura e escrita para modificar o endereço do token. Tendo em conta os mecanismos de segurança das versões mais recentes do Windows, escolhemos a segunda opção. Todo o processo de exploração pode ser dividido em duas etapas: primeiro, controlar o valor de cbwndextra através da vulnerabilidade UAF, e depois, com base nisso, estabelecer primitivas de leitura e escrita estáveis.
Para alcançar um layout de memória estável, projetámos uma estrutura de três objetos HWND consecutivos, libertando o objeto intermédio e utilizando o objeto HWNDClass. Os objetos HWND nas extremidades são utilizados para verificação através do sistema e como meio de leitura e escrita final. Também avaliamos com precisão se a disposição dos objetos corresponde às expectativas através do endereço de manipulador de núcleo vazado.
Na leitura e escrita de primitivas, usamos GetMenuBarInfo() para realizar leituras arbitrárias e SetClassLongPtr() para realizar gravações arbitrárias. Além da operação de substituição de TOKEN, todas as outras operações de gravação são realizadas usando o objeto de classe do primeiro objeto de janela.
No geral, embora a Microsoft esteja reestruturando o código do núcleo relacionado em Rust para melhorar a segurança, essas vulnerabilidades ainda representam uma ameaça séria para os sistemas existentes. O processo de exploração de vulnerabilidades é relativamente simples, dependendo principalmente da revelação do endereço do manipulador de heap da área de trabalho. No futuro, a detecção de layouts de memória anômalos e operações de janela pode ajudar a identificar vulnerabilidades semelhantes.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
10 Curtidas
Recompensa
10
5
Compartilhar
Comentário
0/400
GasFeeCry
· 08-02 20:43
Win perdeu tudo
Ver originalResponder0
MiningDisasterSurvivor
· 08-02 20:43
Outra onda de idiotas vai ser feita de parvas, assim como na onda de 2018 em que as chaves privadas foram roubadas.
A vulnerabilidade do Windows ameaça a segurança do Web3: hackers podem controlar o sistema para roubar a chave privada
Análise de Vulnerabilidades Críticas do Sistema Windows da Microsoft: Pode Levar a Grandes Riscos de Segurança no Web3
No mês passado, um patch de segurança da Microsoft corrigiu uma vulnerabilidade de elevação de privilégios no sistema Windows que estava sendo explorada por hackers. Essa vulnerabilidade existe principalmente em versões anteriores do Windows e não pode ser ativada no Windows 11. Embora esse tipo de vulnerabilidade exista há anos, ainda vale a pena analisar como os atacantes continuam a explorá-la no contexto atual de aprimoramento das medidas de segurança.
Esta análise é baseada no sistema Windows Server 2016. Trata-se de uma vulnerabilidade zero-day não divulgada, que permite a hackers obter controle total sobre o sistema Windows. Uma vez que o sistema é controlado, as consequências podem incluir vazamento de informações pessoais, falhas no sistema, perda de dados, perdas financeiras, entre outras. Para os usuários de Web3, as chaves privadas podem ser roubadas e ativos digitais podem ser transferidos. Em uma escala maior, essa vulnerabilidade pode até afetar todo o ecossistema Web3 que opera com infraestrutura baseada em Web2.
Através da análise do patch, descobrimos que o problema está na gestão da contagem de referências dos objetos. Comentários no código fonte anterior mostram que o código apenas bloqueava o objeto da janela, sem bloquear o objeto do menu dentro da janela, levando a referências erradas do objeto do menu.
Para reproduzir essa vulnerabilidade, construímos uma estrutura de menu aninhado especial com várias camadas, e definimos propriedades específicas para cada menu, a fim de passar pelas verificações relevantes do sistema. O ponto chave é remover a relação de referência entre os menus ao retornar à camada do usuário, liberando com sucesso o objeto de menu alvo. Assim, quando a função do núcleo referenciar novamente esse menu, acessará um objeto inválido.
Na utilização prática, consideramos principalmente duas soluções: executar shellcode e utilizar primitivas de leitura e escrita para modificar o endereço do token. Tendo em conta os mecanismos de segurança das versões mais recentes do Windows, escolhemos a segunda opção. Todo o processo de exploração pode ser dividido em duas etapas: primeiro, controlar o valor de cbwndextra através da vulnerabilidade UAF, e depois, com base nisso, estabelecer primitivas de leitura e escrita estáveis.
Para alcançar um layout de memória estável, projetámos uma estrutura de três objetos HWND consecutivos, libertando o objeto intermédio e utilizando o objeto HWNDClass. Os objetos HWND nas extremidades são utilizados para verificação através do sistema e como meio de leitura e escrita final. Também avaliamos com precisão se a disposição dos objetos corresponde às expectativas através do endereço de manipulador de núcleo vazado.
Na leitura e escrita de primitivas, usamos GetMenuBarInfo() para realizar leituras arbitrárias e SetClassLongPtr() para realizar gravações arbitrárias. Além da operação de substituição de TOKEN, todas as outras operações de gravação são realizadas usando o objeto de classe do primeiro objeto de janela.
No geral, embora a Microsoft esteja reestruturando o código do núcleo relacionado em Rust para melhorar a segurança, essas vulnerabilidades ainda representam uma ameaça séria para os sistemas existentes. O processo de exploração de vulnerabilidades é relativamente simples, dependendo principalmente da revelação do endereço do manipulador de heap da área de trabalho. No futuro, a detecção de layouts de memória anômalos e operações de janela pode ajudar a identificar vulnerabilidades semelhantes.