Estudo de caso técnico do backdoor do XZ Utils (CVE-2024-3094), abordando abuso de confiança na cadeia de suprimentos, artefatos de release maliciosos, injeção na fase de build, abuso de dependência do sshd, engenharia de detecção e lições de Red Team.
O CASE-002 reconstrói o backdoor do XZ Utils / liblzma divulgado em 29 de março de 2024 como CVE-2024-3094.
O relatório acompanha a operação desde a confiança de longo prazo no mantenedor e a autoridade de release, passando pela divergência entre o código-fonte Git revisado e os tarballs de release distribuídos, até a extração de payload em tempo de build, a modificação da liblzma, o caminho de dependência transitiva até o sshd, o abuso de GNU IFUNC / dynamic-linker e o gatilho de pré-autenticação exclusivo do operador.
O foco não é apenas o que o backdoor fazia, mas como múltiplas relações de confiança legítimas foram convertidas em um caminho de execução.
Lição central: revisão de código-fonte não é verificação de release, e um artefato upstream assinado é tão confiável quanto o humano e o processo de build que o produziram.
Verificação de integridade: report/SHA256SUMS.txt
Contributor trust
↓
Maintainer / release authority
↓
Opaque test artifacts
↓
Tarball-specific build logic
↓
Build-time malicious object extraction
↓
Payload linked into liblzma
↓
Trusted distro package build
↓
Transitive load into sshd
↓
IFUNC / loader-time symbol redirection
↓
Operator-only cryptographic SSH trigger
↓
Pre-authentication bypass / command capability
| Descoberta | Por que é importante |
|---|---|
| A confiança no mantenedor fazia parte da cadeia de exploração | O atacante operava de dentro de um papel legítimo no projeto, em vez de simplesmente roubar uma conta de pacote no estágio final. |
| O código-fonte Git e os tarballs de release não eram equivalentes em segurança | A lógica de build gerada apenas no release introduziu um caminho que a revisão comum do Git não expunha. |
| Dados de teste opacos se tornaram entrada executável de build | Fixtures .xz / .lzma manipuladas carregavam estágios ocultos que eram recuperados durante a compilação. |
| O payload dependia de um caminho de dependência transitiva | O próprio OpenSSH não foi backdoorizado; a liblzma alcançou builds selecionados do sshd indiretamente por meio da integração systemd específica da distribuição. |
| A ativação em tempo de execução era deliberadamente restrita | Barreiras de plataforma, build, processo, ambiente e criptográficas reduziam a exposição acidental e a análise. |
| A descoberta veio da investigação de anomalias | Irregularidades de CPU, latência e Valgrind expuseram um comprometimento da cadeia de suprimentos que os sinais estáticos de confiança haviam aceitado. |
sshd → libsystemd → liblzmaEste estudo de caso vai intencionalmente além do resumo do incidente.
O relatório mapeia seis conversões de confiança:
contributor → maintainer → release artifact → distro package → runtime library → SSH control path
Em cada ponto de conversão, identifica a alavancagem do atacante e um ponto de estrangulamento defensivo.
A análise transforma o incidente em hipóteses testáveis em torno de:
A seção de emulação foca em testes seguros de caminhos de confiança, como divergências benignas entre tarball e código-fonte e validação de caminhos de dependência, sem exigir um backdoor funcional de autenticação SSH.
O PDF é gerado a partir de HTML/CSS versionado por .github/workflows/publish-report.yml.
O workflow renderiza o corpo e a capa dedicada separadamente, mescla-os, calcula o SHA-256, faz commit do PDF gerado e publica o asset da release. Isso mantém a própria publicação alinhada à lição central do caso: o caminho do código-fonte ao artefato deve ser observável e reproduzível.
Evidências primárias têm prioridade sobre comentários retrospectivos. O relatório separa comportamento técnico confirmado, registros do projeto, exposição de distribuições, engenharia reversa posterior e conclusões analíticas.
.
├── .github/workflows/
│ └── publish-report.yml
├── assets/
│ └── cover-mobile-safe.svg
├── docs/
│ ├── METHODOLOGY.md
│ └── REFERENCES.md
├── report/
│ ├── cover.html
│ ├── source.html
│ ├── XZ_Utils_Backdoor_Case_Study_Michel-DV.pdf
│ └── SHA256SUMS.txt
├── CHANGELOG.md
├── CITATION.cff
├── DISCLAIMER.md
├── RELEASE_NOTES.md
├── LICENSE
└── README.md
Se este estudo de caso for útil em pesquisa, treinamento, trabalhos acadêmicos ou documentação interna, cite o repositório ou use CITATION.cff.
Autor: @Michel-DV
Série: Michel-DV Threat Case Studies — CASE-002
Release: v1.0.0
Ano: 2026
© 2026 Michel-DV.
Esta publicação está licenciada sob Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).
Este é um estudo técnico independente baseado em informações publicamente disponíveis. Não é afiliado nem endossado pelo Tukaani Project, Red Hat, Debian, OpenSSF, OpenSSH, systemd, Kaspersky ou outras organizações referenciadas.
O incidente do XZ não foi um único patch malicioso. Foi uma cadeia de transferências confiáveis que ninguém controlou de forma independente.