Falha grave no Linux dá acesso root ao sistema e afeta até o Android

Em abril de 2021, Max Kellermann descobriu um comportamento estranho em um servidor Linux. Parecia ser apenas uma anormalidade isolada, mas o problema voltou a ocorrer meses depois. Como especialista em segurança, ele desconfiou que aquilo poderia ser sinal de vulnerabilidade e tratou de investigar o problema. Não deu outra. A falha é tão séria que recebeu até nome: Dirty Pipe.

Kellermann relata que essa história começou quando um cliente se queixou de não conseguir descompactar logs de acesso oriundos de um servidor Linux. O pesquisador descobriu que o arquivo de log estava corrompido, mas julgou se tratar de uma falha pontual.

Meses depois, o problema voltou a ocorrer, várias vezes. Desconfiado, o pesquisador iniciou uma investigação e, com esse trabalho, descobriu que os arquivos apresentavam o mesmo padrão de dano. Ficou claro para ele que existia um bug ali.

A investigação continuou. Max Kellermann acabou descobrindo que a vulnerabilidade existia, de fato, e em uma parte crítica do sistema operacional: o kernel Linux.

Como se não bastasse, o pesquisador também descobriu que, muito mais do que corromper arquivos, a falha pode ser explorada para que um invasor tenha acesso ao sistema com privilégios de administrador (root).

Acesso root ao sistema

Na prática, o bug permite que arquivos que têm permissões somente de leitura sejam temporária ou permanentemente sobrescritos. Isso é feito por meio do preenchimento de pipelines (mecanismos de comunicação entre processos) com dados específicos.

Esse truque pode ser usado para código ser injetado em processos de modo a possibilitar um escalonamento de privilégios no acesso ao sistema.

Depois disso, uma série de ações maliciosas pode ser realizada, como instalação de backdoors, roubo de dados sigilosos, modificação de configurações de segurança e assim por diante.

A falha recebeu a identificação CVE-2022-0847 e tem lá suas semelhanças com um bug crítico no Linux descoberto em 2016, o Dirty Cow — daí os nomes de ambos os problemas serem parecidos.

O Dirty Cow também permite que uma conta comum tenha acesso root ao sistema, mas o Dirty Pipe é, em comparação, mais fácil de ser explorado, tanto que provas de conceito foram feitas por pelo menos outros dois pesquisadores.

Falha já tem correção

O Dirty Pipe exige acesso local, ou seja, não pode ser explorado remotamente. Apesar disso, o problema é considerado grave porque pode afetar, se não todas, grande parte das distribuições Linux. O Android também pode ser afetado, basta que o sistema operacional tenha como base uma das versões do kernel Linux vulneráveis.

Quais são elas? O kernel 5.8, lançado em agosto de 2020, e versões sucessoras.

Felizmente, a falha foi corrigida em fevereiro com o lançamento das versões 5.16.11, 5.15.25 e 5.10.102 do kernel. Quase que ao mesmo tempo, o Google implementou correções para o problema no Android. Distribuições Linux e fabricantes de celulares já estão distribuindo as atualizações.