Greg Kroah-Hartman, responsável pela manutenção da ramificação estável do kernel Linux, decidiu proibir a aceitação de quaisquer mudanças no kernel Linux provenientes da Universidade de Minnesota, bem como reverter todos os patches anteriormente aceitos e revisá-los novamente. A razão para o bloqueio foi a atividade de um grupo de pesquisa que estudava a possibilidade de introduzir vulnerabilidades ocultas no código de projetos abertos. O grupo mencionado enviou patches que incluíam vários tipos de erros, observou a reação da comunidade e explorou maneiras de enganchar o processo de revisão das mudanças. Na opinião de Greg, a realização de tais experimentos para injetar mudanças maliciosas é inaceitável e antiética.
O motivo do bloqueio foi o envio, por parte dos membros deste grupo, de um patch que adicionava uma verificação de ponteiro para evitar possíveis chamadas duplas da função 'free'. Considerando o contexto de uso do ponteiro, a verificação era sem sentido. O objetivo do envio do patch era investigar se a alteração errônea passaria pela revisão dos desenvolvedores do kernel. Além do patch mencionado, surgiram outras tentativas de desenvolvedores da Universidade de Minnesota de fazer alterações duvidosas no kernel, incluindo as relacionadas à adição de vulnerabilidades ocultas.
O participante que enviou os patches tentou se justificar alegando que estava testando um novo analisador estático e que a modificação foi preparada com base nos resultados da verificação nele. Mas Greg chamou a atenção para o fato de que as correções propostas não eram características dos erros identificados por analisadores estáticos, e todos os patches enviados não corrigiam nada. Considerando que o grupo de pesquisadores em questão já havia tentado no passado promover correções com vulnerabilidades ocultas, é evidente que eles continuaram seus experimentos em relação à comunidade de desenvolvedores do kernel.
É interessante que, no passado, o líder do grupo que realiza experimentos participou da correção legítima de vulnerabilidades, como a descoberta de vazamentos de informações no stack USB (CVE-2016-4482) e no subsistema de rede (CVE-2016-4485). No estudo sobre a promoção oculta de vulnerabilidades, o grupo da Universidade de Minnesota cita a vulnerabilidade CVE-2019-12819, causada por uma correção implementada no kernel em 2014. A correção adicionou uma chamada put_device ao bloco de tratamento de erros no mdio_bus, mas, cinco anos depois, surgiu que essa manipulação leva a um acesso à memória após sua liberação ("use-after-free").
No entanto, os autores do estudo afirmam que, em seu trabalho, generalizaram dados sobre 138 patches que introduzem erros e não estão relacionados aos participantes da pesquisa. As tentativas de enviar patches com erros eram limitadas a trocas de e-mail, e essas alterações não foram incluídas no Git (se, após o envio do patch por e-mail, o mantenedor considerasse o patch normal, ele era solicitado a não incluir a alteração, pois havia um erro, após o que um patch correto era enviado).
Adendo 1: Judging pela atividade do autor da correção criticada, ele já há bastante tempo envia patches para diversos subsistemas do kernel. Por exemplo, mudanças com a chamada pm_runtime_put_autosuspend(dev->dev) foram recentemente aceitas nos drivers radeon e nouveau no bloco de erro, o que pode levar ao uso de um buffer após a liberação da memória associada.
Adendo 2: Greg reverteu 190 commits relacionados a endereços "@umn.edu" e iniciou sua nova revisão. O problema é que os participantes com endereços "@umn.edu" não apenas experimentaram a promoção de patches duvidosos, mas também eliminaram vulnerabilidades reais, e reverter essas mudanças pode levar ao retorno de problemas de segurança que já foram corrigidos. Alguns mantenedores já reexaminaram as mudanças revertidas e não encontraram problemas, mas um dos mantenedores indicou que um dos patches enviados a ele continha erros.
Fonte: opennet.ru
