De modo geral, pelo menos o mantenedor do subsistema e, normalmente, pelo menos um ou dois outros desenvolvedores interessados no tópico geral do seu patch. Por exemplo, um patch de melhoria de segurança normalmente envolveria desenvolvedores focados na segurança, bem como os mantenedores dos subsistemas que estão sendo modificados. Patches mais complexos recebem mais atenção, a menos que seus desenvolvedores não consigam que ninguém se interesse neles. Patches que introduzem muito custo de manutenção não entram (veja este exemplo por você realmente ).Who and how many persons review the code that is provided?
Is there a chance that a backdoor could go undedected, in particular considering firmware blobs?
Os blobs de firmware são muito opacos por definição, então sim, há uma chance de que um backdoor não seja detectado. Mais geralmente, quando você vê a complexidade de alguns ataques em navegadores da web, por exemplo, é concebível que um backdoor possa ser introduzido durante o curso de vários patches aparentemente não relacionados. Isso é especialmente verdadeiro se os patches aparentemente não relacionados acabarem sendo revisados e aprovados por diferentes desenvolvedores.
Are static/dynamic code analysis tools used, and if so to guard against accidental bugs only, or also against deliberate backdoors implants?
Não como parte do processo de revisão, tanto quanto eu sei; mas há vários grupos que executam ferramentas de análise no kernel em intervalos regulares, e reportam e / ou corrigem os problemas levantados. Um exemplo é o as verificações do Coverity .
What this obviously correct?
Isso varia muito. Patches são cuidadosamente revisados (veja este comentário em um patch simples ), mas um remetente de correções pode receber menos reação do que o esperado, especialmente porque eles estão menos familiarizados com o código que estão mudando do que o mantenedor do subsistema - portanto, uma mudança que pode parecer complexa para seu autor pode parecer óbvia para o mantenedor. A comunidade de desenvolvimento de núcleos também tende a evitar a síndrome de “revisões relaxadas de grandes patches”, exigindo que grandes patches sejam divididos em partes analisáveis, e freqüentemente exigindo que grandes conjuntos de patches obtenham mais revisões. Revisões cuidadosas não garantem correção, infelizmente; uma das minhas correções foi consertada pelo mantenedor do subsistema, com o resultado que foi mesclado com um erro desagradável! (Há uma análise recente de como os mantenedores lidam com seus próprios patches, o que é relevante.)
Os patches também são revistos em agregado quando os mantenedores do subsistema mesclam as árvores, até o mantenedor principal (Linus, Greg e os vários mantenedores estáveis). Isso geralmente não resulta em alterações solicitadas, mas isso acontece algumas vezes.
É importante considerar o aspecto social de tudo isso também. É muito mais fácil para um desenvolvedor conhecido obter comentários. minha experiência geral no mundo do desenvolvimento de software também sugeriria que desenvolvedores conhecidos pudessem ver seus patches menos examinados ... Para desenvolvedores menos conhecidos, ter um revisor bem conhecido aprovando seu patch pode facilitar a entrada também. Em geral, ajuda a conhecer as pessoas certas ou a apoiar os esforços corretos ( por exemplo, participa de uma campanha de endurecimento).