A XZ Backdoor no Linux e a importância do software de código aberto

Código livremente visível e um olhar atento impediram um incidente de segurança global

2024-04-24
The XZ backdoor could have broken Linux security.
Um programador com um problema técnico impediu um incidente de segurança global ao descobrir uma backdoor que tinha sido adicionada à biblioteca de compressão de dados UZ Utils incluída na maioria das distribuições Linux. Esta descoberta chegou mesmo a tempo, antes que grandes distribuições como Debian ou Redhat quisessem introduzir este código malicioso nas suas versões. Isto mostra que o software de código aberto é essencial para manter a segurança digital.

O que é que aconteceu?

Sente-se e aperte o cinto, porque esta história é louca.

Em março de 2024, Andreas Freund, um empregado da Microsoft, estava a investigar alguns problemas de desempenho enfrentados pelo Debian-sid. Ele notou que ele estava gerando um grande número de conexões SSH que estavam consumindo uma quantidade anormal de recursos da CPU. Após uma inspeção mais aprofundada, ele relatou este problema ao Projeto OpenWall e ele foi então pego por um número de vendedores de software para uma inspeção mais aprofundada.

Eis que o Sr. Freund descobriu um pedaço de código oculto que tinha sido colocado nas últimas versões 5.6.0 e 5.6.1 do XZ pelo colaborador de longa data Jian Tan.

As alterações incluídas nestas versões comprometem a segurança do sistema operativo, dando a um atacante acesso administrativo completo.

O Sr. Freund descreveu a descoberta deste grande ataque à cadeia de fornecimento, que é semelhante ao da SolarWinds, como tendo "realmente exigido muitas coincidências" e que "parece-me que tivemos muita, muita sorte aqui".

O que faz o código backdoor XZ

O código malicioso que foi adicionado furtivamente ao projeto XZ Utils visa o sshd, que é um ficheiro executável utilizado para estabelecer ligações SSH remotamente. Se um atacante tiver acesso à chave de encriptação correcta, poderá então adicioná-la aos certificados de início de sessão SSH, enviá-los e depois executá-los através dos dispositivos com backdoor.

A ligação entre o software de compressão XZ e o SSH deve-se a um patch na Debian, entre outras distros, que cria uma ligação entre o SSH e o systemd. O systemd, por sua vez, está ligado à biblioteca LZMA do XZ, que cria o caminho do backdoor do XZ até o acesso ao SSH.

Um infográfico detalhado explicando os passos exatos do processo foi feito por Thomas Roccia:

Roccia's infographic explaining the XZ backdoor aka CVE-2024-3094

O que é particularmente surpreendente sobre esse backdoor é o quão sofisticado ele é e os passos dados pelo atacante para se inserir no projeto XZ ao longo dos anos, a fim de obter acesso suficiente para tentar executar o ataque. Na sequência desta descoberta, os investigadores de ameaças concentraram-se num dos principais colaboradores que usa o pseudónimo Jian Tan.

Quem é Jian Tan?

No momento, não sabemos a verdadeira identidade do usuário que opera sob o nome de Jian Tan. Mas os investigadores descobriram algumas pistas. Jian Tan, operando sob o nome de usuário JiaT75, apareceu pela primeira vez trabalhando no código XZ Utils em 2021. Isso não é um grande motivo de alarme, já que o XZ é um projeto de código aberto e qualquer pessoa pode oferecer sua ajuda para melhorá-lo ou eliminar bugs. Ao longo dos anos, Tan continuou a fazer pequenas contribuições para o projeto, o que aumentou a sua reputação e confiança na comunidade criada em torno do projeto.

Em maio de 2022, um utilizador desconhecido que usava o pseudónimo Dennis Ens começou a queixar-se de uma atualização recente, a que se seguiu outra figura desconhecida que usava o nome Jigar Kumar, para pressionar o principal programador do XZ Utils a adicionar um novo mantenedor (alguém que constrói e organiza o código-fonte de projectos de código aberto) para que o desenvolvimento pudesse avançar mais rapidamente. Esta pressão acabou por levar a que Jian Tan fosse adicionado como mantenedor do projeto.

Em meados de 2023, Tan solicitou a desativação de um verificador de vulnerabilidades público, o que tornaria possível a introdução do código backdoor.

A screenshot of Tan's request to have ifunc disabled.

Captura de ecrã do pedido de Tan no GitHub para desativar o ifunc.

Depois de continuar a trabalhar no projeto, em fevereiro de 2024, Tan fez os commits da versão final dos XZ Utils 5.6.0 e 5.6.1, que contêm a backdoor maliciosa.

Este ataque de engenharia social a longo prazo ganhou a confiança de uma comunidade de código aberto que deu a Tan o acesso necessário para tentar efetuar o ataque. O tempo investido e o elevado nível técnico da própria backdoor levam alguns investigadores de segurança a acreditar que há um ator patrocinado pelo Estado por detrás dela.

O que vem a seguir para a XZ?

O site da XZ Utils está totalmente sob o controlo do seu principal programador, Lasse Collin, e Jian Tan foi completamente removido do projeto. A página do GitHub para o projeto está novamente online e Collin informou que estão atualmente a rever o repositório e, uma vez concluído, planeia publicar um artigo sobre o incidente.

Na altura da descoberta, foi confirmado que as seguintes distribuições Linux foram afectadas pela backdoor:

Homebrew, o gestor de pacotes para MacOS, estava a utilizar a versão 5.6.x mas voltou a utilizar o XZ Utils 5.4.6.

Se desejar verificar se tem uma versão backdoored do XZ Utils no seu dispositivo, pode executar "xz --version" no seu terminal. Se a versão 5.6.0 ou 5.6.1 estiver instalada, recomenda-se que reverta para a versão 5.4.x.

O código aberto é a única maneira de fornecer software seguro

Tivemos muita sorte. Se o projeto XZ Utils fosse mantido de forma privada e Freund tivesse sido forçado a enviar um ticket de suporte, poderíamos estar em uma posição muito diferente hoje. O incidente com o backdoor XZ é um exemplo perfeito de por que a publicação de software de código aberto oferece grandes benefícios de segurança. Só permitindo a todos o acesso à revisão do código fonte é que damos aos investigadores de segurança a possibilidade de descobrir este tipo de ataques antes que as coisas corram horrivelmente mal.

O software de código aberto aumenta a segurança de todos:

  • Permitir a revisão pública do código de segurança traz críticas construtivas de especialistas de todas as especialidades e origens.
  • Uma comunidade pode detetar erros e vulnerabilidades mais rapidamente do que uma equipa de desenvolvimento de código fechado.
  • Aumentar a confiança através da transparência permite que os utilizadores finais saibam que podem confiar nos produtos que escolhem para se protegerem a si próprios e aos seus dados.

O software de fonte aberta é um aspeto crucial de toda a segurança digital. O projeto XZ Utils é utilizado por produtos empresariais e, sem permitir o escrutínio da comunidade, este ataque interno pode ter passado despercebido. Com o software de fonte fechada, apenas pessoas seleccionadas têm o privilégio de ver o código-fonte, o que acaba por tornar mais provável a omissão de alterações como esta.

Embora as grandes empresas de tecnologia tenham muitos programadores nas suas equipas que visualizam o código, nunca há garantia de que um funcionário seja como Jian Tan, tentando introduzir código malicioso. O código aberto garante que mais olhos estejam no código - o que significa que, além de fortes protocolos de segurança e repetidas revisões de código, mais olhos podem detetar mais problemas. De acordo com a lei de Linus: Com olhos suficientes, todos os bugs são superficiais.

Na Tuta, lançamos todos os nossos protocolos de encriptação e código de cliente de fonte aberta para garantir aos nossos utilizadores que podem confiar que estamos a cumprir as promessas de segurança que fazemos. Não só a nossa encriptação é desenvolvida e testada por especialistas em criptografia, como também é disponibilizada para todos os investigadores de segurança testarem e analisarem. A confiança é conquistada e, ao publicar nosso código totalmente aberto, estamos provando que o Tuta fornece a melhor segurança de e-mail disponível.

Fique seguro e feliz encriptando.