Dentro da política de segurança do Google Project Zero está a cláusula de divulgação de 90 dias. Com isso, os fornecedores têm até de 90 dias para resolver problemas encontrados pela gigante das buscas. Porém, às vezes, o processo de entender e corrigir essa falha, leva bem mais de 90 dias, como é o caso de uma falha descoberta pelo pesquisador do Google, James Forshaw.
A falha se refere ao sistema de verificação de permissões para abrir arquivos do Windows. A descoberta explora a maneira como o Windows executa verificações de permissões ao abrir arquivos ou outros objetos protegidos. Um exame mais detalhado mostrou que havia todos os elementos básicos para criar uma elevação significativa de privilégios do usuário, ou seja, qualquer usuário pode abrir qualquer arquivo no sistema, seja tendo permissão para isso ou não.
Como o sistema funciona?
Quando uma solicitação para abrir um arquivo está sendo feita a partir do modo de usuário, o sistema deve verificar se o usuário que está executando o aplicativo tem permissão para acessá-lo. Isso é feito ao examinar a lista de controle de acesso do arquivo, e comparando com o ID do usuário.
Entretanto, se a solicitação estiver sendo feita no modo kernel, as verificações de permissões são ignoradas, isso porque, o kernel, em geral, precisa de acesso livre e irrestrito a todos os arquivos.
O problema
Por algum motivo, o Windows está permitindo que haja exceções nas verificações básicas do modo usuário e do modo kernel. O código do kernel pode forçar drivers a executar uma verificação de permissões, mesmo não sendo necessário. Também pode ser feito o contrário, no modo de usuário, pode-se ignorar a verificação de parâmetros antes de se instalar algum componente.
Outro ponto que foi observado diz respeito ao Gerenciador de Entradas e Saídas. Quando o Gerenciador de Objetos direciona um componente para verificação de permissão, dois sinalizadores diferentes são utilizados para verificar qual componente é responsável por fazer a verificação. O que Forshaw descobriu é que há sutis maneiras de interação entre esses componentes que, se mal administrados, podem trazer problemas de segurança.
Quando o Gerenciador de Entradas e Saídas é avisado para pular a validação de parâmetros, ele faz isso através de uma requisição no modo kernel, mesmo que a solicitação tenha vindo do modo de usuário. Dessa maneira, a solicitação para pular a validação também desabilita a verificação de permissões, que é extremamente necessária.
A partir disso o problema surge: uma solicitação de arquivo que vem do modo de usuário, pode ter o sinalizador definido para ignorar a validação do parâmetro. O autor do driver sabe que eles ainda precisam executar a verificação de permissões, por esse motivo, eles configuram o sinalizador para forçar a verificação de permissões também. No entanto, eles não definem o sinalizador do Gerenciador de Objetos para forçar a verificação de permissões.
O Gerenciador de Entrada e Saída converterá isso em uma solicitação originada do modo kernel, fazendo com que seja possível pular todas as etapas para que um driver seja instalado mesmo sem passar por todas as verificações. Isso pode abrir portas para diversos softwares mal-intencionados ao computador do usuário.
O que foi feito?
Ao descobrir essa possível falha, Forshaw avisou a Microsoft sobre isso. A empresa começou a testar combinações de iniciadores e receptores de acesso dos arquivos, para encontrar possíveis combinações que apresentem esse erro e possam comprometer a segurança de seus consumidores.
Após os testes, foram encontrados 11 iniciadores e 16 receptores em potencial. Forram verificados também, drivers de terceiros que acompanham o Windows, por meio da análise dos binários e fazendo engenharia reversa para verificar potenciais problemas, e garantir que eles não fossem explorados.
Para prevenir um problema maior, a Microsoft vai lançar uma série de correções para isso em seu próximo update para Windows 10, a versão 1903. A atualização deve chegar a todos os usuários no próximo mês.
Via: ARS Technica