Universidade de Minnesota suspensa do desenvolvimento do kernel Linux por enviar patches questionáveis

Greg Kroah-Hartman, responsável por manter o ramo estável do kernel Linux, decidiu proibir a aceitação de quaisquer alterações vindas da Universidade de Minnesota no kernel Linux, e também reverter todos os patches aceitos anteriormente e revisá-los novamente. O motivo do bloqueio foram as atividades de um grupo de pesquisa que estudava a possibilidade de promover vulnerabilidades ocultas no código de projetos de código aberto. Este grupo enviou patches contendo vários tipos de bugs, observou a reação da comunidade e estudou maneiras de enganar o processo de revisão de alterações. Segundo Greg, conduzir tais experimentos para introduzir alterações maliciosas é inaceitável e antiético.

O motivo do bloqueio foi que os membros deste grupo enviaram um patch que adicionou uma verificação de ponteiro para eliminar a possível chamada dupla da função “livre”. Dado o contexto de uso do ponteiro, a verificação foi inútil. O objetivo do envio do patch era verificar se a alteração errônea passaria pela revisão dos desenvolvedores do kernel. Além deste patch, surgiram outras tentativas de desenvolvedores da Universidade de Minnesota de fazer alterações duvidosas no kernel, incluindo aquelas relacionadas à adição de vulnerabilidades ocultas.

O participante que enviou os patches tentou se justificar dizendo que estava testando um novo analisador estático e que a mudança foi preparada com base nos resultados dos testes nele. Mas Greg chamou a atenção para o fato de que as correções propostas não são típicas de erros detectados por analisadores estáticos, e todos os patches enviados não corrigem absolutamente nada. Dado que o grupo de investigação em questão tentou implementar patches para vulnerabilidades ocultas no passado, é claro que eles continuaram as suas experiências com a comunidade de desenvolvimento do kernel.

Curiosamente, no passado, o líder do grupo que conduziu os experimentos esteve envolvido na correção legítima de vulnerabilidades, por exemplo, identificando vazamentos de informações na pilha USB (CVE-2016-4482) e no subsistema de rede (CVE-2016-4485) . Em um estudo sobre propagação de vulnerabilidades furtivas, uma equipe da Universidade de Minnesota cita o exemplo da CVE-2019-12819, uma vulnerabilidade causada por um patch de kernel lançado em 2014. A correção adicionou uma chamada para put_device ao bloco de tratamento de erros em mdio_bus, mas cinco anos depois descobriu-se que tal manipulação leva ao acesso ao bloco de memória após ele ser liberado (“use-after-free”).

Ao mesmo tempo, os autores do estudo afirmam que em seu trabalho resumiram dados de 138 patches que introduziram erros e não estavam relacionados aos participantes do estudo. As tentativas de enviar seus próprios patches com erros limitavam-se à correspondência por e-mail, e tais alterações não chegavam ao Git (se, após enviar o patch por e-mail, o mantenedor considerasse o patch normal, então ele foi solicitado a não incluir a alteração, pois não houve um erro, após o qual eles enviaram o patch correto).

Adição 1: A julgar pela atividade do autor do patch criticado, ele envia patches para vários subsistemas do kernel há muito tempo. Por exemplo, os drivers radeon e nouveau adotaram recentemente alterações com uma chamada para pm_runtime_put_autosuspend(dev->dev) em um bloco de erro, possivelmente fazendo com que o buffer seja usado após liberar a memória associada a ele.

Adendo 2: Greg reverteu 190 commits associados a "@umn.edu" e iniciou uma nova revisão deles. O problema é que os membros com endereços “@umn.edu” não apenas experimentaram enviar patches questionáveis, mas também corrigiram vulnerabilidades reais, e a reversão de alterações pode resultar no retorno de problemas de segurança corrigidos anteriormente. Alguns mantenedores já verificaram novamente as alterações revertidas e não encontraram problemas, mas um dos mantenedores indicou que um dos patches enviados a ele apresentava erros.

Fonte: opennet.ru

Adicionar um comentário