Invasão do kernel.org


Você conhece a Linux Foundation? É uma organização não-governamental, fundada em 2000, com o objetivo de promover o Linux nas mais diversas formas. Entre os grandes colaboradores, está (obviamente) o criador do Linux, Linus Torvalds. Você também pode fazer parte da Linux Foundation. E não precisa ser um super-programador. Basta se inscrever e colaborar ‘simbolicamente’. Sou membro há algum tempo, e com isso tenho acesso a materiais exclusivos, como artigos e notícias quentinhas. Faça parte você também.

Todo esse papo é para introduzir algo igualmente sério. Recentemente, o servidor principal do site kernel.org, mantido pela Linux Foundation, foi hackeado. O invasor, não identificado, teve acesso de root. Traduzindo, obteve poderes totais no servidor. Houve muito barulho em volta desse tema. Neste artigo você encontrará a tradução livre de uma matéria da Linux Foundation, do autor Corbet. Você encontrará aqui uma tradução livre da versão oficial do que ocorreu, e quais as suas consequências.

Se dominar o idioma do tio Sam, sinta-se livre para ler o artigo original:

The cracking of kernel.org | The Linux Foundation

The cracking of kernel.org

Como foi recentemente anunciado na página principal do kernel.org, seu servidor principal (conhecido como “hera”) foi comprometido por um invasor desconhecido. Esta pessoa foi capaz de ganhar acesso de root, ou seja, obteve controle total do sistema.

Falando apenas como um dos muitos membros da comunidade de desenvolvedores do kernel, apenas posso dizer que este episódio é perturbador e constrangedor. Mas posso dizer também que não há necessidade de se preocupar com a integridade da fonte do kernel ou de qualquer outro software hospedado em sistemas dos servidores do kernel.org.

A págna kernel.org é, obviamente, o endereço oficial do kernel Linux. Muitos outros projetos também estão lá. Portanto, kernel.org é um alvo tentador para um ataque. Qual cracker não iria querer uma oportunidade de colocar alguns códigos especiais no kernel Linux? Esse código poderia, ao longo do tempo, estar em milhões de máquinas em todo o mundo. A colocação de backdoors ou outros tipos de malware é uma preocupação para qualquer mantenedor de software – de código aberto ou não – porém estamos bem protegidos contra esse tipo de ataque.

Se todos os desenvolvedores do kernel fizessem envio simples de arquivos com o código fonte, eles provavelmente seriam altamente vulneráveis a ataques. Mas não é assim que o trabalho é feito. O código para o kernel (e para muitos outros projetos) é gerenciado por um sistema que não permite alteração de código modificado por terceiros. Veja como isso funciona.

Uma “função hashing” de criptografia é uma fórmula matemática que resume o conteúdo de um arquivo a um pequeno número. “Pequeno” aqui é algo bem relativo; na verdade, produz números de 160 bits, muito grandes para os padrões medianos – é aproximadamente igual ao número de átomos na Terra.

A chave para a função hash é que, se o conteúdo do arquivo sofre alteração, o hash também sofre. A criação de um arquivo que tenha correspondência exata ao hash de um arquivo existente não é possível na prática; se você quer que novo arquivo seja parecido com o antigo, com exceção de um pequeno trecho de código prejudicial, o desafio é ainda maior. Assim, um atacante seria incapaz de alterar um arquivo sem alterar seu hash também. O sistema realiza verificações regulares.

Assim, uma tentativa simplista de corromper um arquivo seria identificada quase que imediatamente.

O hash não para por aí. Para qualquer estado da árvore de diretórios do kernel, é calculado um hash com base em (1) os hashes de todos os arquivos contidos dentro daquela árvore, e (2) os hashes de todos os estados anteriores da árvore. Assim, por exemplo, o hash para o kernel na versão 3.0 é 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe. Não há forma de alterar qualquer um dos arquivos dentro desse lançamento – ou em qualquer versão anterior – sem alterar esse hash. Se alguém (mesmo que seja o kernel.org) mostrar um kernel 3.0 com um hash diferente, seria imediatamente evidente que algo não estava certo.

Você pode estar pensando que 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe é um número muito longo para memorizar e verificar. Se estivéssemos dependentes de seres humanos para verificar os valores, teríamos razão para nos preocupar. Mas não temos esses problemas quando usamos computadores. E há um grande número de computadores disponíveis para fazer a verificação.

A máquina que eu (Corbet) estou escrevendo este artigo tem uma cópia completa do repositório do kernel. Na verdade, ele tem mais de um. Todos os desenvolvedores do kernel – e muitas pessoas que não são desenvolvedores do kernel – possuem pelo menos uma cópia do repositório em algum lugar. Se um invasor corromper o repositório kernel.org, os outros desenvolvedores notariam logo na próxima vez que atualizassem seus repositórios pessoais – algo que acontece muitas vezes todos os dias.

Se o atacante fosse simplesmente adicionar novos patches que não haviam passado por cópia pessoal de Linus Torvalds do repositório (que não é a cópia em kernel.org), ele iria perceber da próxima vez que tentasse fazer uma mudança de sua autoria. O sistema verá que os valores de hash não são os que deveriam – soará o alarme.

Claro que o endereço kernel.org pode parecer o lugar onde o desenvolvimento do kernel é feito, mas não é. É apenas um ponto de distribuição. A integridade desse ponto de distribuição é protegida pela combinação de software inteligente e milhares de cópias do repositório distribuído em todo o mundo. Assim, quando dizemos que sabemos que a fonte do kernel não foi comprometida em kernel.org, nós realmente sabemos.

Os administradores do kernel.org têm se mostrado capazes e cuidadosos durante muitos anos. Parece que eles tiveram algumas noites sem dormir, com a perspectiva de algumas noites como essa no futuro. Será necessário reconstruir a infra-estrutura do kernel.org e descobrir como o atacante “entrou”. A integridade desses sistemas foi perdido; restaurá-la e protegê-la no futuro demandará uma quantidade considerável de trabalho. Mas aqueles que usam o Linux em seu dia-a-dia não precisam se preocupar com a integridade de seus kernels, que é protegida por defesas muito mais fortes do que os de qualquer computador.

2 Responses to Invasão do kernel.org

  1. William Moreira disse:

    Gostei das informações, muito útil mesmo…
    Como poderiamos realizar o cadastro no Linux Foundation?

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: