Verificando se o software de código aberto não foi adulterado

7

Estou prestes a baixar alguns softwares de software livre, e gostaria de garantir (com um grau razoável de certeza) que ele não foi adulterado para inserir malware. Especificamente, é um gerenciador de senhas ( KeePassX ), que parece ser um alvo extremamente suculento para hackear, então estou me sentindo particularmente paranóico.

Os dois vetores para inserção de malware que eu posso imaginar são:

  • Malware entrando no código-fonte oficial.
  • Um fork ou build malicioso sendo substituído pelo oficial no site.

A página de download fornece checksums; no entanto, isso não parece proteger contra os dois hacks acima.

Eu não tenho conhecimento nem tempo para fazer uma auditoria de código-fonte.

Quais são as práticas recomendadas para verificar softwares de código aberto de natureza confidencial em busca de malware?

    
por Reid 27.09.2011 / 16:00

4 respostas

3

Se você tem medo da fonte, que é o que a sua pergunta implica, não há como confiar no software.

A solução é parar de temer a fonte.

Para fazer isso, você pode se concentrar no fato de que dentre milhares, provavelmente milhões, de projetos de software de OSS, o número de projetos que foram infectados e que o código infectado foi aprovado e fundido na base de código principal é nulo. p>

Você também pode se concentrar na lógica do problema: devido ao grande número de olhos passando por cada parte do código, e as chances extremamente baixas de que um número suficiente desses olhos seja comprado pelos fabricantes de malware para forçar o código nefasto a ser incluído, a probabilidade de que um código inválido tenha sido transformado em uma ferramenta como essa também é nula.

Por essas razões, tento me ater a ferramentas de OSS respeitáveis, bem recomendadas, bem suportadas e ativamente desenvolvidas para software crítico. Em todas essas situações, estamos jogando com chances. E, embora as probabilidades padrão sejam extremamente baixas, as chances de um projeto de software ativo ser infectado são ainda menores do que o padrão.

    
por 27.09.2011 / 16:11
4

Quão paranóico você quer ser? Você confia no seu compilador? Existe uma interessante história (leia a seção Reflexões sobre confiança] ), de Ken Thompson, um dos criadores originais do Unix. Ele descreve um sistema no qual o programa de login possui um backdoor permitindo que ele acesse qualquer máquina. O compilador é modificado, de modo que quando alguém compila a fonte limpa do programa de login, o compilador percebe e insere o código de backdoor.

O compilador também percebe se alguém está compilando a fonte limpa do compilador e também insere o código correto. Naqueles dias, tudo estava disponível como fonte, mas você precisaria de uma versão binária do compilador como um lugar para começar. Assim, o código malicioso nunca aparece no código-fonte, mas se propaga à medida que bits do sistema são recompilados. Isso seria incrivelmente difícil de descobrir, basicamente exigindo a auditoria do código de execução.

De volta à pergunta original, você precisa confiar em alguém. A questão é até que ponto da cadeia você precisa ir? Com um projeto bem conhecido, as chances são de que alguém notará se houver um problema rapidamente.

    
por 27.09.2011 / 17:38
2

Se você encontrar um espelho dos pacotes, poderá comparar com seus checksums.

Isso protegeria contra o segundo vetor, desde que os pacotes fossem espelhados antes de serem substituídos.

Para proteger contra o primeiro vetor, você provavelmente terá que observar as alterações no código-fonte.

    
por 27.09.2011 / 17:00
1

Malware making its way into the official source code.

A menos que você esteja lidando com construções diárias, é improvável que isso aconteça.

A malicious fork or build being substituted for the official one on the website.

Isso exigiria acesso ao site, o que é improvável que aconteça sem ser notado por alguém, você deve estar muito mais preocupado com o comprometimento do site do MySQL.

The download page does provide checksums; however, this wouldn't seem to protect against the above two hacks.

Claro que sim ... Alguém tinha que postar esses valores que não foram gerados automaticamente.

    
por 27.09.2011 / 16:22