Análise da vulnerabilidade 0day do sistema Windows da Microsoft: pode ter um impacto significativo no ecossistema Web3
No mês passado, o patch de segurança da Microsoft incluía uma vulnerabilidade de elevação de privilégios win32k que estava sendo explorada. Esta vulnerabilidade parece não ser acionável nas versões do sistema Windows 11, existindo apenas em versões anteriores. Este artigo analisará como os atacantes podem continuar a explorar essa vulnerabilidade no contexto de melhorias nas novas medidas de mitigação em andamento. O processo de análise foi realizado em um ambiente Windows Server 2016.
A vulnerabilidade 0day refere-se a falhas que não foram divulgadas ou corrigidas, podendo ser exploradas maliciosamente por atacantes sem serem detectadas, frequentemente apresentando grande potencial de destruição. A vulnerabilidade 0day descoberta desta vez existe no nível do sistema Windows, permitindo que hackers obtenham controle total sobre o Windows. Isso pode levar ao roubo de informações pessoais, falhas do sistema, perda de dados, prejuízos financeiros e a inserção de malware. Do ponto de vista do Web3, as chaves privadas dos usuários podem ser roubadas e os ativos digitais transferidos. Em uma escala maior, essa vulnerabilidade pode até afetar todo o ecossistema Web3 que opera sobre a infraestrutura do Web2.
A análise do patch revelou que o problema estava na contagem de referências de um objeto que foi processada uma vez a mais. Através de comentários no código fonte anterior, é possível ver que o código anterior apenas bloqueava o objeto da janela, sem bloquear o objeto do menu dentro do objeto da janela, onde o objeto do menu pode ter sido referenciado erroneamente.
Para validar a vulnerabilidade, implementámos uma prova de conceito (PoC). Ao construir um menu de múltiplos níveis especial, é possível desencadear a vulnerabilidade na função xxxEnableMenuItem. O ponto chave é remover a relação de referência entre o menu C e o menu B no momento certo, libertando com sucesso o objeto do menu C. Assim, quando a função xxxEnableMenuItem retorna, o objeto do menu C referenciado já se tornou inválido.
Ao implementar a exploração de vulnerabilidades (Exp), considerámos principalmente duas abordagens: executar código shellcode e utilizar primitivas de leitura e escrita para modificar o endereço do token. No final, escolhemos a segunda, pois este método ainda tem explorações públicas disponíveis para referência nos últimos dois anos. Todo o processo de exploração é dividido em duas etapas: primeiro, exploramos a vulnerabilidade UAF para controlar o valor de cbwndextra e, em seguida, estabelecemos primitivas de leitura e escrita estáveis.
Através de um layout de memória cuidadosamente projetado, podemos alcançar um controle preciso sobre o objeto alvo. Utilizando as funções GetMenuBarInfo() e SetClassLongPtr() para realizar leituras e gravações arbitrárias, respetivamente. Exceto pela operação de escrita que substitui o TOKEN, que depende do objeto de classe da segunda janela, todas as outras escritas utilizam o objeto de classe da primeira janela com um deslocamento para escrever.
De um modo geral, embora a vulnerabilidade win32k exista há bastante tempo, a Microsoft está tentando reestruturar essa parte do código do núcleo usando Rust, e é possível que sistemas futuros eliminem esse tipo de vulnerabilidade. Atualmente, o processo de exploração desse tipo de vulnerabilidade não é muito difícil, dependendo principalmente do vazamento do endereço do manipulador da pilha de desktop. Para sistemas mais antigos, isso ainda representa um risco de segurança.
Do ponto de vista da descoberta de vulnerabilidades, uma detecção de cobertura de código mais completa pode ajudar a identificar tais vulnerabilidades. Para a detecção de exploração de vulnerabilidades, além de se concentrar nos pontos-chave das funções que acionam as vulnerabilidades, também deve haver uma detecção direcionada de anomalias na disposição da memória e leituras e gravações de deslocamento anômalo de dados de classe de janela, o que pode ser uma das vias eficazes para descobrir vulnerabilidades do mesmo tipo.
Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
7 gostos
Recompensa
7
2
Partilhar
Comentar
0/400
HalfIsEmpty
· 17h atrás
O Huazi deu novamente problemas, corre!
Ver originalResponder0
SignatureCollector
· 17h atrás
Deve ser preciso trocar de computador novamente, não é?
A vulnerabilidade 0day do Windows ameaça a segurança do Web3, aumentando o risco de roubo de Chave privada.
Análise da vulnerabilidade 0day do sistema Windows da Microsoft: pode ter um impacto significativo no ecossistema Web3
No mês passado, o patch de segurança da Microsoft incluía uma vulnerabilidade de elevação de privilégios win32k que estava sendo explorada. Esta vulnerabilidade parece não ser acionável nas versões do sistema Windows 11, existindo apenas em versões anteriores. Este artigo analisará como os atacantes podem continuar a explorar essa vulnerabilidade no contexto de melhorias nas novas medidas de mitigação em andamento. O processo de análise foi realizado em um ambiente Windows Server 2016.
A vulnerabilidade 0day refere-se a falhas que não foram divulgadas ou corrigidas, podendo ser exploradas maliciosamente por atacantes sem serem detectadas, frequentemente apresentando grande potencial de destruição. A vulnerabilidade 0day descoberta desta vez existe no nível do sistema Windows, permitindo que hackers obtenham controle total sobre o Windows. Isso pode levar ao roubo de informações pessoais, falhas do sistema, perda de dados, prejuízos financeiros e a inserção de malware. Do ponto de vista do Web3, as chaves privadas dos usuários podem ser roubadas e os ativos digitais transferidos. Em uma escala maior, essa vulnerabilidade pode até afetar todo o ecossistema Web3 que opera sobre a infraestrutura do Web2.
A análise do patch revelou que o problema estava na contagem de referências de um objeto que foi processada uma vez a mais. Através de comentários no código fonte anterior, é possível ver que o código anterior apenas bloqueava o objeto da janela, sem bloquear o objeto do menu dentro do objeto da janela, onde o objeto do menu pode ter sido referenciado erroneamente.
Para validar a vulnerabilidade, implementámos uma prova de conceito (PoC). Ao construir um menu de múltiplos níveis especial, é possível desencadear a vulnerabilidade na função xxxEnableMenuItem. O ponto chave é remover a relação de referência entre o menu C e o menu B no momento certo, libertando com sucesso o objeto do menu C. Assim, quando a função xxxEnableMenuItem retorna, o objeto do menu C referenciado já se tornou inválido.
Ao implementar a exploração de vulnerabilidades (Exp), considerámos principalmente duas abordagens: executar código shellcode e utilizar primitivas de leitura e escrita para modificar o endereço do token. No final, escolhemos a segunda, pois este método ainda tem explorações públicas disponíveis para referência nos últimos dois anos. Todo o processo de exploração é dividido em duas etapas: primeiro, exploramos a vulnerabilidade UAF para controlar o valor de cbwndextra e, em seguida, estabelecemos primitivas de leitura e escrita estáveis.
Através de um layout de memória cuidadosamente projetado, podemos alcançar um controle preciso sobre o objeto alvo. Utilizando as funções GetMenuBarInfo() e SetClassLongPtr() para realizar leituras e gravações arbitrárias, respetivamente. Exceto pela operação de escrita que substitui o TOKEN, que depende do objeto de classe da segunda janela, todas as outras escritas utilizam o objeto de classe da primeira janela com um deslocamento para escrever.
De um modo geral, embora a vulnerabilidade win32k exista há bastante tempo, a Microsoft está tentando reestruturar essa parte do código do núcleo usando Rust, e é possível que sistemas futuros eliminem esse tipo de vulnerabilidade. Atualmente, o processo de exploração desse tipo de vulnerabilidade não é muito difícil, dependendo principalmente do vazamento do endereço do manipulador da pilha de desktop. Para sistemas mais antigos, isso ainda representa um risco de segurança.
Do ponto de vista da descoberta de vulnerabilidades, uma detecção de cobertura de código mais completa pode ajudar a identificar tais vulnerabilidades. Para a detecção de exploração de vulnerabilidades, além de se concentrar nos pontos-chave das funções que acionam as vulnerabilidades, também deve haver uma detecção direcionada de anomalias na disposição da memória e leituras e gravações de deslocamento anômalo de dados de classe de janela, o que pode ser uma das vias eficazes para descobrir vulnerabilidades do mesmo tipo.