Pode não parecer, mas o mundo dos administradores de sistemas debian estremeceu nos últimos dias. Um idi... empacotador debian, modificou o código fonte do SSL sem submeter suas mudanças para o time de desenvolvimento da biblioteca. Ele modificou o código para eliminar alguns warnings que sempre apareciam ao depurar o progama no Valgrind.
Mas na verdade ele detonou a entropia necessário para gerar chaves criptográficas, limitando seu universo a apenas 65535 chaves possíveis. Ou seja, qualquer engraçadinho com 20 minutos pode testar TODAS as chaves dentro desse universo.
Um dos desenvolvedores do openssl disse que se tivesse recebido o patch da modificação, rolaria de rir mas teria impedido essa tragédia.
Como funcionaria um ataque usando essa vulnerabilidade :
-
A autenticação por chaves funciona com duas chaves, uma privada e outra pública, a chave privada é secreta e fica com o usuário em sua máquina. Já a pública fica armazenada no servidor no arquivo .authorized keys.
-
No momento do login o servidor manda uma mensagem criptografada com a chave pública para o cliente, essa criptografia só pode ser desfeita com a chave privada. Então o cliente decifra a mensagem e devolve para o servidor, então o servidor entende que o acesso é legitimo e estabelece a conexão.
-
A falha do debian limitou a variedade de chaves em 65 mil pares, então basta que o atacante teste todas, o que não demora mais de 20 minutos em uma máquina ligada na internet com uma conexão rápida.
Se eu compreendi bem o problema, o triste dessa história é que se o joao usa ubuntu (que também foi afetado), se conecta num servidor gentoo (não afetado por esse problema) usando as chaves geradas no ubuntu, um eventual atacante pode ganhar acesso no gentoo !!! Pois a chave privada que casa com a chave pública que ele possui casa com um das 65 mil, então é só testar todas !!!
Por isso não adianta apenas atualizar o sistema, TODAS as chaves criptográficas devem ser regeredas e reinstaladas
O time do debian em conjunto com os desenvolvedores oficiais lançaram uma ferramenta que verifica na conta de todos os usuários se algum deles tem chaves comprometidas, e não permite que o sshd estabeleça qualquer conexão com essas chaves comprometidas. A ferramenta se chama ssh-vulkey, e como root deve ser executada da seguinte forma :
ssh-vulkey -a
Com isso basta obrigar seus usuários a apagarem suas chaves, ou faze-lo você mesmo, eu faria :(
A parte triste dessa história é que por enquanto apenas o debian(e seus derivados) possuem essa ferramenta, eu que tenho fedora , gentoo e mac os x tive que apagar todas as chaves de todos meus usuários para garantir.
Em 8 anos de linux nunca vi uma falha tão grande, e que bota em risco todas as distribuições linux, BSD e sistemas Unix e não Unix que se autenticam por chaves geradas com openssl... Triste, muito triste.
Agora é definitivo, nunca mais confio em distribuições baseadas em debian em minhas máquinas, meu último debian em um Imac G3 será devidamente formatado na primeira oportunidade que tiver.