Após patch mal feito, 0day de bug do Windows se torna publico

m junho, a Microsoft lançou uma correção para uma vulnerabilidade no sistema operacional Windows que permitia que os invasores aumentassem suas permissões para o nível do kernel em uma máquina comprometida. O patch não aderiu.

O problema, que hackers avançados exploraram como um dia zero em maio, ainda é explorável, mas por um método diferente, como os pesquisadores de segurança demonstram com código de prova de conceito disponível publicamente.

Maddie Stone, pesquisadora de segurança do Google Project Zero, descobriu que o patch da Microsoft em junho não corrigiu a vulnerabilidade original (CVE-2020-0986) e ainda pode ser aproveitado com alguns ajustes.

Em maio de 2020, o problema foi  explorado livremente para o escalonamento de privilégios, juntamente com um bug no Internet Explorer que permitia a execução remota de código. Ambas as falhas eram de zero dias no momento do ataque descoberto pelo Kaspersky .

Stone diz que um invasor ainda pode acionar o CVE-2020-0986 para aumentar suas permissões para o nível do kernel enviando um deslocamento em vez de um ponteiro.

No Twitter, o pesquisador explica explicitamente que o bug original era uma desreferenciação arbitrária de ponteiros, permitindo que um invasor controlasse os ponteiros “src” e “dest” para uma função memcpy.

O patch da Microsoft era impróprio porque alterava os ponteiros para offsets, de forma que os parâmetros da função ainda pudessem ser controlados.

Em um breve relatório técnico de hoje, ela explica como acionar a vulnerabilidade, agora identificada como CVE-2020-17008:

A low integrity process can send LPC messages to splwow64.exe (Medium integrity) and gain a write-what-where primitive in splwow64’s memory space. The attacker controls the destination, the contents that are copied, and the number of bytes copied through a memcpy call. The offset for the destination pointer calculation is only constrained to be:

Offset <= 0x7FFFFFFF
Offset + perceived size of structure <= 0x7FFFFFFF

Splwow64 passes the LPC message to GdiPrinterThunk. The vulnerable memcpy is in message 0x6D.

Para mostrar que a exploração ainda é possível após o patch da Microsoft, Stone publicou um código de prova de conceito (PoC) adaptado do original da Kaspersky, junto com instruções sobre como executá-lo corretamente.

O pesquisador acrescenta que o que o PoC faz é disparar a vulnerabilidade duas vezes: “primeiro para vazar o endereço de heap onde a mensagem está armazenada e qual o deslocamento é adicionado para gerar os ponteiros e depois fazer o write-what-where.”

A Microsoft recebeu um relatório em 24 de setembro e confirmou o problema um dia depois, atribuindo a ela o número de rastreamento CVE-2020-17008. A empresa planejou um patch para novembro de 2020, mas os problemas identificados durante o estágio de teste empurraram o lançamento para a próxima Patch Tuesday, em 12 de janeiro de 2021.

O Google Project Zero tem uma política de divulgação de vulnerabilidade de 90 dias, com uma extensão de 14 dias se mais tempo for necessário para forçar uma correção. Como a Microsoft informou que um patch não estaria disponível antes de 6 de janeiro, nenhum dos dois prazos foi cumprido.

Além disso, como Stone diz, os invasores exploraram o bug no passado, estão familiarizados com ele e podem aproveitá-lo novamente quando uma correção incorreta estiver disponível.

Fonte: https://www.bleepingcomputer.com/