Tá, mas e se eu contar pra vocês que nos últimos dias tá rolando uma história de intriga digna de filme de espionagem, tudo em torno de uma tentativa de invadir máquinas no mundo todo?
Vem na thread que vou te explicar. 🧵 #bolhasec
O "xz" é uma aplicação de compressão usada em várias distros linux. Ele em geral atinge taxas de compressão menores que o tradicional gzip, ao custo de usar mais memória, então ele vem sendo escolhido pra cada vez mais aplicações. Até aí tudo ótimo.
O xz, como várias ferramentas Linux, oferece suas funcionalidades tanto como uma aplicação de terminal quanto uma biblioteca que pode ser consumida por outras aplicações - nesse caso a liblzma, nomeada pelo algoritmo LZMA que o xz usa.
O problema foi descoberto ontem - com uma postagem na lista de emails "oss-security" feita pelo @AndresFreundTec, um dev do PostgreSQL. O Andres começou a perceber lentidão em sessões SSH no Debian Linux e foi investigar. O que ele não esperava era encontrar um backdoor.
@AndresFreundTec A versão 5.6.0 do xz introduziu uma mudança que é injetada, aparentemente, SÓ nos releases. O código malicioso não está no repo - ele é injetado apenas na hora de gerar o release, o que torna ele mais difícil de detectar.
@AndresFreundTec A alteração injetada consiste em uma única linha no script "configure" () que, por sua vez, altera o Makefile do projeto. A alteração no Makefile, por sua vez, descomprime e executa um dos arquivos na pasta tests do projeto.salsa.debian.org/debian/xz-util…
@AndresFreundTec Aqui vale um parêntese: Como o xz é uma aplicação de compressão, tem vários arquivos comprimidos na pasta tests pra testar vários casos de descompressão.
@AndresFreundTec Esse arquivo foi adicionado como se fosse um teste normal, mas ele continha código bash comprimido que o código adicionado no Makefile descomprime e executa.
@AndresFreundTec Tem mais alguns passos no meio pra dificultar entender o que está acontecendo, mas o efeito final é: Se o build do xz estivesse rodando em uma máquina Debian ou sendo iniciado pelo gerenciador de pacotes RPM, ele linkava uma versão modificada do código da liblzma.
@AndresFreundTec Nesse código, algumas funções relacionadas com checagens de integridade foram alteradas para modificar dinamicamente a função RSA_public_decrypt caso ela fosse chamada.
@AndresFreundTec Essa função *não existe* no código da liblzma - ao invés disso, ela é usada (a partir do OpenSSL) pelo SSH no Debian na autenticação da conexão.
@AndresFreundTec Ou seja - uma alteração é injetada de forma extremamente circuitosa para no final afetar binários do SSH que usam compressão xz no Debian, e provavelmente permitir invasão de máquinas e execução remota de código. E é esse o backdoor que o Andres encontrou.
@AndresFreundTec Vocês podem ver a notificação completa sobre o backdoor aqui: . Também recomendo se vocês tiverem o xz versão 5.6.x instalado em qualquer máquina, vocês atualizarem imediatamente.
@AndresFreundTec Bom, vou introduzir o segundo personagem da nossa história: O "Jia Tan", um contribuidor frequente do xz. Como vocês podem ver aqui, ele vinha contribuindo para o xz desde o fim de 2022. 13/20 play.clickhouse.com/play?user=play…
O Jia Tan, sob seu usuário do GitHub JiaT75, introduziu os commits com o backdoor no projeto. Mas após o backdoor ter sido descoberto, também foi descoberto que ele fez muito mais do que só isso. 14/20
Por exemplo, nosso hacker também contribuía para o projeto "xz-java" e ele adicionou o seguinte aviso (traduzido por mim):
"Se você descobrir uma vulnerabilidade de segurança neste projeto, por favor a reporte em privado. (...) Não crie um issue público".
Lendo entre as entrelinhas e agora sabendo do contexto, podemos entender como: "Me garanta tempo para ajustar meus exploits e tornar eles mais difíceis de achar".
Além disso, alguns mantenedores de distribuições Linux vieram a público dizer que essa pessoa estava em contato com eles, buscando convencê-los a atualizar tão rapidamente quanto possível para versões 5.6.x do xz pois "tinha muitas features novas incríveis".
Então é essa a situação: Temos uma pessoa que se infiltrou num projeto open-source, ganhando confiança por mais de um ano e adicionando vários arquivos binários ao projeto. Essa pessoa então usou a confiança vinda disso pra tentar acelerar a adoção do seu backdoor.
No final, terminamos com mais perguntas do que começamos: Quem é Jia Tan? Em algum momento a conta foi legítima e ela foi comprometida ou sempre foi um ator malicioso? O que mais ele pode ter escondido no xz nos mais de 12 meses que passou no projeto?
E talvez a pergunta mais importante: Quais são os interesses por trás disso?
Além disso: será que o código no backdoor realmente afeta só o SSH ou há outras funcionalidades ainda não descobertas? Eu pretendo seguir acompanhando essa história nos próximos dias.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Se vocês quiserem só uma coisa pra estudar em 2026
Estudem formalização.
Bastante gente já sacou que com volumes cada vez maiores de código sendo produzidos cada vez mais rápido, o único jeito de controlar isso é formalização.
Recursos pra estudar no fim do fio.
Empresas de formalização e sistemas de prova estão recebendo investimentos milionários. E tem pouquíssima gente capacitada pra fazer isso.
É uma área difícil de entrar no momento, exige construir bases matemáticas fortes, mas vai ter retornos grandes.
Enfim, é uma oportunidade única na carreira de um dev. Se você quiser trabalhar pra fora e fazer algo que não vai perder com a IA, mas só se fortalecer, é algo que realmente vale a pena. É um caminho que com certeza vai ter demanda de empresas gringas.
Todo mundo fala "é a IA", mas IAs nem usam o tipo de RAM que vai em computadores domésticos (elas usam VRAM de alta banda)
Então por que? Mini-fio 👇
O resumo é: O tipo de RAM que IAs usam pode não ser o mesmo que você quer comprar pro seu computador - mas os chips pros dois são feitos nas mesmas máquinas.
E as máquinas têm uma capacidade máxima de produção. Além disso, o maquinário usado pra VRAM HBM (o tipo usado pelas IAs) é o mesmo maquinário usado pra RAM DDR5.
Pra piorar tudo, só existem essencialmente 3 empresas que fazem memória no mundo. O resto compra os chips delas.
Ontem de noite a Cloudflare postou o postmortem da indisponibilidade. Vou fazer um breve resumo dos pontos mais interessantes:
A causa raiz da Cloudflare sair do ar foi um arquivo que é gerado e colocado no sistema de arquivos da máquina toda vez que uma máquina da Cloudflare é deployada. Esse arquivo contém configurações pro modelo de detecção de bots da Cloudflare.
Esse arquivo, por sua vez, é gerado a partir de configurações armazenadas em um banco de dados distribuído.
O problema foi ao configurar esse banco. Uma configuração errada fez com que o arquivo contivesse várias cópias das regras.
Estes dias, estou fazendo fios sobre cada item do OWASP Top 10, porque muitos devs não têm noções básicas de segurança de aplicações web.
No último fio, falamos de designs inseguros. Hoje vamos falar do 3o item mais importante: Injeção.
Injeção, resumidamente, é quando o input de um sistema externo pode entrar, sem controle, num comando que vai ser passado pra outro sistema. Por exemplo, se você usa um banco SQL, se você permite que o comando SQL seja definido por quem está enviando input.
Mas SQL Injection não é o único tipo de injeção relevante. Por exemplo, se você gera uma página HTML a partir de input do usuário, você pode facilmente permitir ao seu usuário injetar componentes que fazem requisições HTTP numa página.
É comum a gente explicar IA usando simplificações. Afinal, nem todo mundo pode ou quer se aprofundar. Mas simplificações levam a erros, tipo dizer que LLMs modernos são limitados porque "só geram texto".
Segue aqui pra entender 👇 (imagem meramente chamativa)
A gente escuta muitas vezes que o que um LLM faz é "só prever a próxima palavra". Isso é praticamente verdade, mas muitas vezes falam isso com desdém, como se isso significasse que a operação é "burra" e inevitavelmente cometerá erros.
1/17
Minha impressão é que as pessoas pensam, intuitivamente, que como um LLM só "prevê texto" isso significa que ela não tem como ter nenhum contexto do *significado* daquele texto, tornando ele "vazio".