Os pacotes ubuntu (deb-files) são apenas protegidos pelo md5sum?

13

Introdução à pergunta abaixo ###

(para que a pergunta seja mais utilizável para mais pessoas)
Dentro de um pacote no estilo Ubuntu / debian (arquivo * .deb), há um arquivo nomeado /DEBIAN/md5sumscom o conteúdo deste formulário:

212ee8d0856605eb4546c3cff6aa6d35 usr / bin / file1
4131b66dc3913fcbf795159df912809f caminho / para / file2
8c21de23b7c25c9d1a093607fc27656a caminho / para / file3
c6d010a475366e0644f3bf77d7f922fd caminho / para / place / of / file4

Como presumo que este arquivo será usado para verificar se os arquivos que acompanham o pacote não foram corrompidos de alguma forma. Como o arquivo é chamado `/ DEBIAN / md5sums", presumo que o número hexadecimal antes do caminho + nome do arquivo seja o Hash do algoritmo MD5 digerido por mensagens dos arquivos do pacote.

Agora, todos os interessados ​​sabem que o MD5 Hash foi quebrado há muito tempo. Portanto, é totalmente possível alterar o conteúdo de um arquivo no pacote (por exemplo, maliciosamente) e ainda ter o arquivo com o mesmo MD5-Hash (consulte, por exemplo, Prove do conceito "Prevendo o vencedor ...." ).

Questão

Tendo em mente as informações acima, quero saber o seguinte:

** Supondo que eu instale um pacote no meu sistema Ubuntu. É o DEBIAN/md5sumsúnico meio de garantir que os dados não sejam violados? **

Respondendo à pergunta, acho que poderia ajudar a descobrir o seguinte:

  • Os pacotes deb como um todo também têm hash (valores de hash criados para), para que haja outra maneira de garantir que os arquivos recebidos sejam "seguros" / "não alterados"
  • Se houver outras maneiras, o DEBIAN/md5sumsarquivo para garantir a integridade, qual é o arquivo incluído nos pacotes * .deb?
  • O Ubuntu usa hashes para repositório / sistema de pacotes "menos danificados" que o SHA-1 e MD5?

que infelizmente também não conheço.

Qualquer resposta que possa esclarecer a questão (ou mesmo apenas uma subquestão) é muito bem-vinda

atualizar

(1) https://help.ubuntu.com/community/Repositories/Ubuntu#Authentication_Tab parece indicar que há (como eu esperava) alguma chave de gpg pública / privada em andamento (para manter os repositórios e sistemas de pacotes) seguros de ataques. As informações no local vinculado não são muito. Não diz quase nada sobre o aspecto de segurança do sistema de pacotes. De qualquer forma, suponho que o link já indique que a resposta para a pergunta será "NÃO - pelo menos os pacotes deb do repositório - também são protegidos por ....". Espero que alguém tenha algumas idéias para usar como resposta aqui.

(2) Essa pergunta parece ser também sobre o tópico "segurança" no sistema de pacotes do Ubuntu. Então, eu apenas o adiciono aqui para que seu anúncio apareça se alguém tentar descobrir a pergunta: por que as correções propostas do BADSIG (na atualização do apt-get) são seguras?

humanandpeace
fonte
1
debian.org/doc/debian-policy/… indica suporte para as somas de verificação por arquivo SHA-1 e SHA256, mas não sei qual apté a política de soma de verificação.
chronitis
1
@chronitis obrigado pelo link lá. De fato, os hashes SHA- * são mencionados lá, ainda preciso descobrir como eles aparecem nos pacotes (que ainda não vi) ou no sistema de pacotes. Bem, a indicação já é um bom passo
humanidadeANDpeace

Respostas:

21

O Ubuntu publica um manifesto assinado com uma chave RSA. O manifesto lista Packagesarquivos de índice individuais , cada um com hashes MD5, SHA-1 e SHA-256. Cada Packagesarquivo lista .debarquivos individuais com hashes MD5, SHA-1 e SHA-256.

Para verificação, o apt usa o melhor hash suportado e é publicado pelo arquivo do qual está baixando. No caso do arquivo Ubuntu, este é o SHA-256.

Portanto, toda a cadeia de instalação de pacotes no seu sistema Ubuntu é protegida por RSA e SHA-256.

A proteção MD5 existente no dpkg é realmente útil apenas para corrupção acidental e não é necessária para proteger o caminho da instalação.

Você pode estar interessado no debsumspacote, mas como ele usa MD5s, também é útil apenas para verificar se há corrupção acidental.

Se você deseja verificar a modificação do sistema malicioso, essas não são as ferramentas apropriadas para você. Você precisará colocar o sistema offline e verificar com um registro anterior, os arquivos do pacote original ou os hashes seguros gerados a partir deles.

Observe que, como uma modificação mal-intencionada bem-sucedida pode ser simplesmente fazer o downgrade de um pacote para o pacote anterior a uma atualização de segurança, verificar se todos os arquivos do pacote instalado correspondem aos originais também não é suficiente.

Robie Basak
fonte
1
Eu ganhei uma visão mais clara. Onde você conseguiu todas essas informações, que eu tenho tanta dificuldade em encontrar? Você tem alguns documentos / links que você usou? Também aprecio a menção do "perigo de rebaixamento" que você mencionou, por isso ainda não entendo o quanto isso pode ser explorado. Ótimo! obrigado
humanidadeANDpeace
Não acredito que o formato do repositório apt esteja especificado ou documentado corretamente em qualquer lugar. Isso é ruim, mas é como é. A melhor documentação verdadeira (e que eu saiba) é a fonte. Conheço os detalhes porque trabalhei na fonte. Por outro lado, o formato dpkg está muito bem especificado na política Debian. Ele cobre o que acontece depois que os pacotes terminam no seu sistema, mas não como eles chegam lá. A última parte é feita pelo apt.
Robie Basak
Risco de downgrade: isso é um aparte e não está diretamente diretamente conectado à sua pergunta original. Se a exploração X for descoberta na versão A, você receberá uma atualização de segurança para a versão B, onde a vulnerabilidade foi corrigida. Se um invasor puder explorar o X na versão A, você estará seguro, pois você atualizou para B. Mas se o invasor também puder fazer o downgrade de você para A, você estará vulnerável novamente. Você não vai perceber isso, mesmo se todos os seus hashes seguros corresponder os pacotes que você instalou, desde seu banco de dados pacote vai dizer que você é suposto para ter um instalado e não B.
Robie Basak
2
@RobieBasak "Não acredito que o formato do repositório apt esteja devidamente especificado ou documentado em qualquer lugar." Obviamente isso não é verdade. Você apenas tem que procurar. Debian Wiki: RepositoryFormat
gertvdijk
6

Eu queria que isso fosse um comentário, mas não consegui encaixá-lo na caixa, então estou colocando aqui.

Sim, o md5 foi quebrado criptograficamente, mas isso não significa que seja um algoritmo de hash de propósito geral ruim. Modificar um arquivo para que ele tenha o mesmo hash é incrivelmente difícil, e fazer isso com uma alteração maliciosa específica é quase impossível. Observando o exemplo que você referenciou ( Prevendo o vencedor ), veja o seguinte:

"Os documentos foram cuidadosamente preparados como documentos PDF válidos, com um objeto de imagem oculta incorporado, contendo uma quantidade suficiente de bits aleatórios. Em seguida, de acordo com a estrutura de diamante mostrada acima, onze colisões de prefixos escolhidos foram computadas e colocadas dentro da oculta objetos de imagem precisamente nos pontos adequados. Dessa maneira, os doze documentos foram transformados em uma colisão múltipla MD5 ".

O que foi feito foi preencher os arquivos com dados aleatórios para fazer com que os hashes correspondessem. A tecnologia não é nem de longe capaz de adicionar código malicioso específico a um arquivo e alinhar os hashes sem quebrá-lo ou tornar óbvio que o arquivo foi alterado (não sei se o apt faz, mas muitos hashes de arquivo são acompanhado pelo tamanho dos arquivos para aumentar a dificuldade de uma colisão de hash indetectável).

jackweirdy
fonte
3
obrigado pela resposta. Eu acho que é uma boa resposta, no sentido de que dá mais luz a todo o plano de fundo :) Infelizmente "Stack ... Ask Ubuntu" às vezes é difícil com "responder estritamente apenas à pergunta" e, por isso, é ótimo você ter coragem para elaborar sobre o tópico.
humanityANDpeace
Os arquivos PDf preparados têm dados aleatórios e são apenas 104kb com todo esse esforço. Por que você diria que isso é impossível então? Deve haver toneladas de arquivos nos pacotes deb> 200kb, onde deve ser possível fazer isso. Eu não me sinto tão segura depois de ter visto a prova de conceito, que espantou e me chocou
humanityANDpeace
Há muitos lugares em arquivos legítimos nos quais uma mudança sutil não parece estranha, por exemplo, pequenas diferenças de espaço em branco em um arquivo de texto. Você só precisa encontrar cerca de 128 desses locais para ter um escopo suficiente para criar um arquivo malicioso que pareça legítimo e que também corresponda ao MD5 de destino desejado. Não tenho certeza se esse ataque específico pode ser aplicado a essa situação.
precisa saber é o seguinte
@RobieBasak, você não entende o ataque. Você não pode simplesmente alterar 128 bytes em um arquivo e preservar o md5sum. Você precisa inserir um pedaço do que, de outra forma, parece ser dois conjuntos de dados aleatórios em duas cópias de um arquivo, e eles terão o mesmo md5sum um do outro, apesar do fato de que os dois blocos de dados "aleatórios" são diferentes.
psusi
1

MD5 não foi "quebrado". O que eles encontraram foi uma maneira de criar cuidadosamente uma mensagem original e uma mensagem modificada com o mesmo hash. Não é possível pegar uma mensagem original não criada especialmente para violar (o arquivo correto) e modificá-la de maneira a preservar seu md5sum.

psusi
fonte
Está bem. Mas qual seria a boa maneira de se referir ao estado atual da segurança do MD5 agora, se não "quebrado"? Eu posso entender o que você diz e agradeço por apontar isso. Eu ainda me pergunto como avaliar a segurança atual pelo MD5 etc.
humanidadeANDpeace
@humanityANDpeace, "muito bem".
psusi
Eu gosto da atitude otimista. Eu ainda estava impressionado com a prova de conceito afinal. obrigado!
humanityANDpeace
1
"Os especialistas em criptografia consideram o MD5 quebrado. Portanto, deve ser considerado quebrado". não é assim que o mundo funciona @RobieBasak Como entusiasta de criptografia (não posso me chamar de "especialista", mas eu tive que cavar isso há alguns anos)) eu não diria que o MD5 está quebrado. Simplesmente existe um caso interessante que vale a pena conferir, mas parece caixa eletrônico teórico. Mas ele não vai quebrar embalagem do Ubuntu;) Voltar a 0 psusi;)
Rinzwind
1
@ Jackweirdy, na verdade, existe, e é por isso que eles não fizeram isso. O método deles baseia-se nos dois conjuntos de dados com propriedades muito específicas. É muito parecido com um par de chaves público. Você pode gerar um par de chaves que se combinam, mas, com apenas uma, não é possível descobrir a outra.
Psusi