Logo

O Caso XZ Utils: Como um Atraso de 500 Milissegundos Salvou a Internet do Maior Ataque da História

A história real da infiltração de \'Jia Tan\', a pressão sobre um programador solitário e o desmonte do backdoor que quase dominou o Linux mundial.

Marcus Tavares
·
💬 Seja o primeiro a comentar
O Caso XZ Utils: Como um Atraso de 500 Milissegundos Salvou a Internet do Maior Ataque da História

Na tarde de sexta-feira, 29 de março de 2024, poucas horas antes do feriado prolongado de Páscoa, a maioria dos profissionais de tecnologia ao redor do globo já se preparava para desconectar os computadores. Em San Francisco, na Califórnia, um engenheiro de software alemão chamado Andres Freund, funcionário da Microsoft especializado no banco de dados PostgreSQL, estava debruçado sobre rotinas banais de benchmarking de desempenho quando algo microscópico chamou sua atenção.

Ao realizar testes repetidos de conexão e desconexão via protocolo SSH em uma máquina de testes rodando a distribuição Debian, Freund percebeu que as autenticações estavam demorando cerca de 500 milissegundos a mais do que o normal. Meio segundo. Para um usuário comum, uma fração de tempo imperceptível ao piscar de olhos. Para um desenvolvedor de infraestrutura de baixo nível obcecado por métricas de latência e consumo de ciclos de processador (CPU), aquele atraso era uma anomalia gritante.

O que se seguiu nas horas seguintes não foi a correção de um simples bug de desempenho, mas o desmonte em tempo real de uma das operações de espionagem cibernética mais pacientes, complexas e assustadoras de toda a história da computação: o ataque à cadeia de suprimentos do XZ Utils, catalogado sob a vulnerabilidade crítica CVE-2024-3094 com nota máxima 10 no padrão de severidade CVSS.

Se aquele atraso acidental de meio segundo não tivesse instigado a curiosidade cirúrgica de Andres Freund, versões infectadas do software teriam chegado nas semanas seguintes às versões estáveis de distribuições de classe corporativa, como o Ubuntu 24.04 LTS e o Fedora 40. O resultado seria o comprometimento silencioso e em escala planetária de centenas de milhões de servidores, bancos, sistemas governamentais e dispositivos conectados à internet.

Esta é a história completa, didática e passo a passo de como um adversário misterioso passou quase três anos arquitetando uma identidade falsa, manipulou psicologicamente um desenvolvedor sobrecarregado, construiu um cavalo de Troia criptográfico quase indetectável e como a infraestrutura digital do mundo foi salva no último instante.

O castelo de cartas invisível do software livre

Para compreender a magnitude do caso XZ, é fundamental entender antes como a internet contemporânea é estruturada. Quase todos os servidores em nuvem, sistemas operacionais de grandes data centers, supercomputadores e smartphones operam sobre alicerces de código aberto (Open Source).

Existe uma célebre tirinha do quadrinho técnico xkcd (número 2347) que ilustra perfeitamente essa realidade: uma gigantesca e intrincada torre de blocos sustentando toda a tecnologia financeira, bancária e corporativa do século XXI, equilibrada precarious e solitariamente sobre um pequeno pilar na base rotulado como: “Um projeto mantido voluntariamente por um rapaz aleatório em Nebraska desde 2003”.

No caso do XZ Utils, o “rapaz de Nebraska” era Lasse Collin, um desenvolvedor finlandês competente, calmo e extremamente dedicado.

O XZ Utils (antigamente conhecido como LZMA Utils) é um pacote utilitário de compressão de dados sem perdas amplamente empregado no ecossistema Unix e Linux. Ele fornece a biblioteca fundamental liblzma, responsável por compactar e descompactar arquivos no formato .xz com taxas de compressão excepcionais.

Por quase duas décadas, Lasse Collin manteve o XZ Utils praticamente sozinho em seu tempo livre. O projeto não recebia financiamento milionário de fundos de venture capital, nem contava com um batalhão de engenheiros dedicados. Era um trabalho de amor ao código aberto, sustentado pela boa vontade de Collin.

Com o passar dos anos, o XZ tornou-se uma dependência vital incorporada diretamente ao núcleo das maiores distribuições Linux do planeta (Debian, Red Hat, Fedora, Arch Linux, Alpine, Gentoo, SUSE e Ubuntu). Ao mesmo tempo, o volume de solicitações de suporte, relatórios de bugs e pedidos de novas funcionalidades crescia exponencialmente.

Conforme desabafaria mais tarde na lista de discussão oficial do projeto, Lasse Collin estava enfrentando esgotamento mental severo (burnout) e problemas pessoais de saúde. Ele se sentia esmagado pela responsabilidade de manter uma biblioteca usada pelo mundo inteiro sem qualquer rede de apoio.

Foi exatamente nessa brecha emocional e humana que o agente da conspiração encontrou sua porta de entrada.

A construção do fantasma: surge ‘Jia Tan’

Em novembro de 2021, uma conta com o pseudônimo Jia Tan (identificador @JiaT75 no GitHub) surgiu repentinamente na comunidade de desenvolvedores.

Diferente de hackers amadores que utilizam scripts prontos para disparar invasões barulhentas, o operador por trás de Jia Tan demonstrava os traços clássicos de um grupo financiado por um Estado-nação (Advanced Persistent Threat ou APT). Ele possuía três recursos que organizações amadoras não têm: dinheiro, conhecimento técnico de altíssimo nível e tempo ilimitado.

Jia Tan não começou atacando o XZ Utils de imediato. Nos primeiros meses, o perfil iniciou uma cuidadosa construção de reputação no ecossistema de compressão de dados. Enviou correções pequenas e pertinentes para o projeto libarchive, outro utilitário amplamente utilizado, demonstrando familiaridade com a linguagem C e respeitando pacientemente os padrões da comunidade.

Em 2022, Jia Tan começou a enviar seus primeiros patches para o repositório do XZ Utils. As contribuições eram impecáveis: pequenos aprimoramentos de desempenho, correções de sintaxe e soluções para problemas pendentes. Para Lasse Collin, exausto e sem tempo, a ajuda parecia uma bênção divina.

Porém, nos bastidores, Jia Tan não estava sozinho. Uma coordenada campanha de astroturfing e engenharia social estava sendo colocada em prática.

A emboscada psicológica: as contas de pressão

Entre maio e junho de 2022, perfis secundários desconhecidos começaram a surgir na lista de discussão do projeto XZ Utils, enviando e-mails agressivos e pressionando Lasse Collin.

Uma dessas personas fictícias, que se apresentava pelo nome de “Jigar Kumar”, enviou mensagens duras cobrando o lançamento urgente de uma nova versão do software. Quando Collin respondeu explicando com humildade que estava enfrentando problemas de saúde mental e que fazia o melhor que podia em suas horas vagas, “Jigar Kumar” retrucou com frieza:

“O progresso não vai acontecer até que haja um novo mantenedor. Por que você não passa o projeto para outra pessoa? Por que você continua segurando o desenvolvimento se não tem tempo?”

Outro perfil, sob o nome de “Dennis Ens”, apareceu para reforçar a cobrança, sugerindo sutilmente que Lasse Collin delegasse o controle do repositório a alguém que já estava colaborando ativamente: especificamente, o solícito e prestativo Jia Tan.

Pesquisadores de cibersegurança concluíram posteriormente que personas como “Jigar Kumar” e “Dennis Ens” eram fantoches (sockpuppets) operados pelo mesmo grupo ou pelo próprio criador de Jia Tan.

O plano foi desenhado com requintes de tortura psicológica: primeiro, criava-se a angústia e a culpa no mantenedor sobrecarregado através dos perfis agressivos; em seguida, Jia Tan surgia como o “bom samaritano”, oferecendo-se pacientemente para assumir tarefas administrativas sem criar conflitos.

A tática funcionou com precisão cirúrgica. Em meados de 2022, Lasse Collin, sentindo-se aliviado por ter alguém de confiança para dividir o fardo, concedeu a Jia Tan privilégios de escrita (commit access) no repositório oficial do projeto no GitHub e, posteriormente, acesso como mantenedor autorizado para gerar pacotes de distribuição (tarballs).

O cavalo de Troia acabava de cruzar os portões de Tróia com aplausos e agradecimentos.

A paciência do predador: a longa dormência

Uma vez dentro do repositório com poderes de mantenedor, a maioria dos invasores teria pressa para plantar o código malicioso. Jia Tan não. Ele esperou mais de um ano e meio.

Durante todo o ano de 2023, Jia Tan trabalhou como um mantenedor modelo. Corrigiu dezenas de bugs reais, organizou discussões no GitHub, respondeu a usuários e até negociou a integração do XZ Utils com o sistema de testes de segurança automatizados do Google, o OSS-Fuzz.

Ironicamente, Jia Tan solicitou que o OSS-Fuzz desativasse temporariamente certas verificações que causavam alertas falsos em seus testes. Na época, a justificativa técnica soou absolutamente plausível. Na verdade, ele estava silenciosamente desarmando os alarmes de segurança da sala em que planejava executar o roubo.

Em janeiro de 2024, Jia Tan assumiu o controle do site do projeto e da documentação no domínio oficial. A armadilha estava montada. Em fevereiro de 2024, após mais de dois anos de preparação meticulosa, o invasor iniciou a fase ofensiva da operação.

O cavalo de Troia invisível: como esconder um backdoor à vista de todos

A grande dificuldade em infectar um projeto de código aberto é que qualquer desenvolvedor no planeta pode auditar cada linha de código inserida no repositório Git. Se Jia Tan simplesmente colasse uma rotina maliciosa dentro do código-fonte em linguagem C, milhares de olhos curiosos perceberiam o golpe quase instantaneamente.

Para contornar esse obstáculo, o atacante arquitetou um mecanismo de inserção em múltiplas etapas, empregando técnicas de ofuscação que beiram a genialidade diabólica.

1. Os falsos arquivos de teste corrompidos

No dia 23 de fevereiro de 2024, Jia Tan subiu um commit inofensivo adicionando novos arquivos para a suíte de testes de descompressão do XZ: bad-3-corrupt_lzma2.xz e good-large_compressed.lzma.

Para qualquer revisor de código, esses arquivos pareciam exatamente o que diziam ser: arquivos de dados binários compactados propositalmente com falhas de cabeçalho para validar se o algoritmo do software disparava mensagens de erro corretas quando encontrava arquivos corrompidos na vida real. Ninguém estranharia que um arquivo de teste fosse um bloco opaco de bytes sem sentido aparente.

Entretanto, aqueles blocos binários não eram dados aleatórios: eles eram cargas maliciosas criptografadas e fatiadas aguardando o momento de serem montadas.

2. O desvio entre o repositório Git e o pacote de lançamento

No mundo Linux, os desenvolvedores de distribuições raramente compilam programas clonando diretamente a branch principal do repositório Git. Eles utilizam os arquivos oficiais de lançamento disponibilizados pelo mantenedor, conhecidos como tarballs (pacotes no formato .tar.gz ou .tar.xz).

Esses pacotes de distribuição são gerados com scripts auxiliares de automação chamados macros m4 e arquivos configure, responsáveis por verificar as características da máquina antes de compilar o software.

Jia Tan incluiu o código malicioso de montagem apenas dentro dos tarballs de release oficiais (versões 5.6.0 e 5.6.1), deixando o repositório público do GitHub aparentemente limpo.

Durante o processo de compilação nas máquinas dos mantenedores do Debian e Fedora:
1. O script de configuração verificava se o sistema operacional era Linux de 64 bits (x86-64) e se estava sendo construído com o compilador GCC. Se qualquer condição falhasse, o script abortava silenciosamente e o software compilava de forma 100% normal e limpa.
2. Caso os critérios fossem atendidos, o script extraía os bytes escondidos dentro dos arquivos de teste bad-3-corrupt_lzma2.xz, decodificava o código malicioso, juntava as peças e injetava um arquivo de objeto modificado diretamente durante o processo de ligação do software.

Quando o binário final da biblioteca liblzma.so era gerado, ele continha uma porta dos fundos invisível. Mas o alvo nunca foi o utilitário de compressão em si. O alvo era algo muito maior.

A ponte improvável: como a liblzma foi parar dentro do OpenSSH

A pergunta inevitável que intriga qualquer pessoa com conhecimentos técnicos é: o que uma biblioteca utilitária de compactação de arquivos tem a ver com o OpenSSH (sshd), o serviço que permite acesso remoto a servidores de todo o planeta?

Nativamente, o OpenSSH não utiliza o XZ Utils para absolutamente nada. Ele não precisa compactar arquivos .xz para estabelecer sessões seguras criptografadas.

No entanto, em grandes distribuições voltadas para facilidade de uso corporativo, como o Debian e o Ubuntu, os empacotadores aplicavam um patch customizado no OpenSSH para integrá-lo ao systemd, o gerenciador central de inicialização e serviços do Linux. Essa modificação permitia que o serviço sshd utilizasse a função systemd-notify para avisar ao sistema operacional quando o servidor de login estava pronto para receber conexões.

Para habilitar esse recurso, o binário do sshd era compilado apontando para a biblioteca compartilhada libsystemd. E a libsystemd, por sua vez, carrega internamente a biblioteca liblzma para conseguir descompactar relatórios de erro e dumps de memória do sistema.

Por uma cadeia de dependências indiretas, o processo do OpenSSH passou a carregar automaticamente a biblioteca liblzma no exato momento em que o servidor ligava.

Ao ser carregada na memória do sshd, a versão infectada da liblzma utilizava um mecanismo avançado dos compiladores modernos chamado IFUNC (Indirect Functions). O IFUNC permite resolver endereços de funções em tempo de execução antes que o programa principal comece a executar.

A backdoor usava essa oportunidade inicial para sobrescrever os ponteiros de memória do OpenSSH, sequestrando especificamente a função fundamental de criptografia: a RSA_public_decrypt.

A chave mestra criptográfica: um exploit para um único mestre

A maioria das vulnerabilidades conhecidas na história da computação opera como uma falha estrutural: se um hacker descobre a brecha, qualquer outro usuário que examine o código pode construir um exploit e abusar do mesmo erro.

O backdoor do XZ Utils era radicalmente diferente. Como demonstrado pelas análises detalhadas do renomado criptógrafo Filippo Valsorda e de especialistas em segurança reversa, o implante de Jia Tan continha uma blindagem criptográfica baseada em curvas elípticas de alta segurança (Ed448).

A mecânica do ataque funcionava da seguinte forma:

  1. O servidor OpenSSH infectado continuava funcionando de forma aparentemente impecável, aceitando logins normais de usuários autorizados com suas senhas e chaves SSH habituais.
  2. Caso um invasor desejasse assumir o controle da máquina, ele iniciava uma conexão SSH normal, mas inseria uma carga especial assinada dentro do campo de certificação da chave de autenticação.
  3. O backdoor interceptava a requisição antes que o OpenSSH processasse o login e verificava a assinatura matemática daquela mensagem utilizando uma chave pública que Jia Tan havia embutido diretamente no código do malware.
  4. Se a assinatura não fosse perfeitamente válida, a conexão seguia seu fluxo normal e falhava sem deixar nenhum rastro suspeito nos logs. Ninguém conseguiria escanear a internet procurando servidores infectados com robôs automatizados, porque o backdoor simplesmente não respondia a quem não possuísse a chave privada correspondente.
  5. Se a assinatura fosse legítima, o backdoor decodificava o comando enviado pelo invasor e o executava imediatamente como usuário root (administrador máximo do sistema), sem precisar fornecer nenhuma senha, sem acionar mecanismos de duplo fator e sem registrar a sessão no histórico do sistema.

Jia Tan não havia criado apenas uma invasão: ele havia forjado uma chave mestra invisível capaz de abrir as portas de qualquer servidor Linux moderno do mundo, da qual apenas o seu esquadrão detinha o segredo.

O atraso de meio segundo: o herói acidental

Com as versões 5.6.0 e 5.6.1 lançadas, Jia Tan iniciou a fase final do plano: pressionar os mantenedores do Debian, Fedora, Ubuntu e openSUSE para atualizarem seus repositórios imediatamente com as novas versões do XZ, alegando que elas corrigiam problemas críticos de dependências e aceleravam o processamento.

A armadilha estava a poucos passos de se fechar. As distribuições de testes (como o Debian Sid e o Fedora Rawhide) já haviam incorporado os pacotes venenosos. Em pouquíssimas semanas, essas versões seriam congeladas e migradas para os lançamentos oficiais LTS (Long Term Support), que sustentam os servidores das maiores corporações da Terra por anos seguidos.

Foi aí que o destino colocou Andres Freund no caminho da operação.

Freund estava testando instalações do PostgreSQL no Debian instável e notou que o consumo de CPU do processo sshd saltava de forma inesperada durante o encerramento das conexões, adicionando meio segundo de lentidão ao ciclo de testes.

Incomodado com a anomalia, o engenheiro decidiu não reiniciar o computador. Ele abriu ferramentas de diagnóstico forense de baixo nível, como o analisador de memória Valgrind e o depurador GDB.

O Valgrind começou a emitir relatórios estranhos: leituras de memória não inicializada ocorrendo dentro da liblzma.so durante rotinas do OpenSSH. O que diabos uma biblioteca de descompressão de arquivos estava fazendo interferindo na decodificação de chaves públicas de criptografia do SSH?

Freund aprofundou a escavação. Analisou linha por linha o código dos tarballs oficiais, comparou com o histórico do Git e localizou os scripts m4 ofuscados e os falsos arquivos binários de teste. A máscara de Jia Tan caiu por terra.

No dia 29 de março de 2024, Andres Freund publicou um memorando calmo, extremamente técnico e aterrorizante na lista oficial de segurança do código aberto (oss-security), intitulado com modéstia:

“Backdoor in upstream xz/liblzma leading to sshd accept-intercept” (Backdoor no projeto raiz xz/liblzma levando a interceptação no sshd).

O anúncio provocou um abalo sísmico instantâneo na comunidade global de segurança. Em questão de horas, a Agência de Cibersegurança dos Estados Unidos (CISA), a Red Hat, a Debian e governos de todo o mundo emitiram alertas vermelhos de emergência, orientando a reversão imediata das versões 5.6.0 e 5.6.1 para a versão estável 5.4.x.

Quem era realmente ‘Jia Tan’?

Assim que o backdoor foi exposto, pesquisadores começaram a cruzar dados de histórico de commits, fusos horários de envio de e-mails, endereços de IP e metadados de arquivos.

O que se descobriu foi um retrato assustador de profissionalismo:

  • Controle de Fuso Horário: Os commits de Jia Tan alternavam horários consistentes com os fusos UTC+2 e UTC+3 (regiões da Europa Oriental ou Oriente Médio), embora em feriados específicos de certas regiões o perfil ficasse inativo para tentar despistar analistas.
  • Técnicas de Inteligência Estatal: O nível de sofisticação, a paciência de esperar três anos sem disparar nenhum ataque prematuro e a complexidade criptográfica do exploit exigiam investimentos financeiros que dificilmente pertencem a criminosos comuns em busca de ransomware.
  • Desaparecimento Imediato: Minutos após a publicação do e-mail de Andres Freund, a persona “Jia Tan” evaporou da internet. Contas em redes sociais, mensagens em fóruns e canais de contato foram completamente silenciados.

Até hoje, nenhuma agência de inteligência do planeta confirmou publicamente a identidade real ou a nacionalidade exata dos operadores do codinome Jia Tan, embora especialistas em espionagem apontem com frequência para agências de inteligência cibernética estatal como o SVR russo ou grupos de elite chineses.

As lições definitivas do caso XZ

O caso do XZ Utils entrou instantaneamente para a história como o ataque cibernético que quase mudou os rumos da segurança digital mundial. Se tivesse tido sucesso integral, o backdoor teria concedido a um governo hostil acesso irrestrito e silencioso à espinha dorsal de nuvens públicas, servidores de governo, roteadores e infraestruturas bancárias.

O episódio deixou cicatrizes e lições profundas que continuam moldando a tecnologia:

  1. A Fragilidade Humana do Software Livre: Não basta auditar o código-fonte de sistemas complexos; é imperativo financiar e apoiar psicologicamente os mantenedores de bibliotecas críticas. Deixar projetos que sustentam a infraestrutura mundial nas costas de voluntários solitários e exaustos é um risco de segurança inaceitável.
  2. O Perigo das Dependências Cruzadas: O fato de o OpenSSH ter sido infectado porque uma distribuição alterou seu código para depender do libsystemd, que por sua vez dependia da liblzma, forçou a indústria a rever o acúmulo desnecessário de bibliotecas em processos com privilégios de administrador.
  3. A Diferença Entre Git e Tarballs de Distribuição: Ficou comprovado que examinar apenas o repositório Git não é suficiente. A cadeia de construção de pacotes precisa ser reprodutível e hermética para impedir que scripts de compilação injetem artefatos não rastreados.
  4. O Valor Inestimável da Atenção aos Detalhes: Acima de tudo, o caso XZ é um monumento à dedicação profissional de engenheiros de software. Toda a internet foi salva do colapso não por um algoritmo avançado de inteligência artificial ou por uma agência de espionagem multibilionária, mas porque um programador dedicado olhou para um atraso de 500 milissegundos e se recusou a ignorá-lo.

No final das contas, o código aberto provou que sua maior virtude ainda se mantém de pé: a transparência colaborativa permite que pessoas brilhantes e atentas encontrem uma agulha venenosa no mais profundo palheiro digital. Que os guardiões da rede nunca percam de vista esses preciosos meio-segundos.

Marcus Tavares

Marcus é o fundador da Seletronic. Além disso, é programador, e editor no site. Ama ajudar as pessoas a resolverem problemas com tecnologia, por isso criou esse site. Segundo ele: "A tecnologia foi feita para facilitar a vida das pessoas, então devemos ensinar a usá-la". Apesar de respirar tecnologia, ama plantas, animais exóticos e cozinhar.
    💬

    Nenhum comentário!

    Seja o primeiro a compartilhar sua opinião ou fazer uma pergunta.