Backdoor XZ (CVE-2024-3094)

O pesquisador de segurança da Microsoft Andres Freund fez um descoberta no mínimo “intrigante” que praticamente abalou o mundo ao revelar que um backdoor foi plantado intencionalmente no xz Utils, começando com a versão 5.6.0. O xz Utils é um utilitário de compressão de dados de código aberto que está disponível em quase todas as instalações do Linux e outros sistemas operacionais semelhantes ao Unix.

🚨 O CVE-2024-3094 é muito recente e tem o score de 10.0 – Crítico

De acordo com a AKAMAI o backdoor foi adicionado ao daemon SSH na máquina vulnerável, permitindo que um invasor remoto execute código arbitrário . Isto significa que qualquer máquina com o pacote vulnerável que exponha o SSH à Internet é potencialmente vulnerável.

Texto traduzido “@AndresFreundTec@mastodon.social “

“Eu estava fazendo alguns micro-benchmarking na época, precisava acalmar o sistema para reduzir ruídos. Vi que os processos sshd estavam usando uma quantidade surpreendente de CPU, apesar de falharem imediatamente por causa de nomes de usuários errados etc. Fiz um perfil do sshd, mostrando muito tempo de CPU em liblzma, com o perf incapaz de atribuir isso a um símbolo. Fiquei desconfiado. Lembrei que tinha visto uma reclamação estranha do valgrind em testes automatizados do postgres, algumas semanas antes, após atualizações de pacotes.”
Realmente exigiu muitas coincidências.

A intenção desse backdoor é um  ataque à cadeia de suprimentos.

Vou trazer aqui uma tradução do trabalho magnifico do Thomas Roccia @fr0gger_ que nos dá uma visão bem completa em uma ordem cronológica.

Tradução do XZ Outbreak by @Fr0gger_

Resumo da Atividade no GitHub (usuário: JiaT75)

  • 2021: Usuário Jia Toin (JiaT75) cria sua conta no GitHub.
  • 2022-02-06: Primeiro commit de JiaT75 para o repositório xz.
  • 2023-06-28: Teste de infraestrutura potencial: “Adicionar implementação crc64_fast.c” a liblzma.
  • 2023-07-08: PR aberto no oss-fuzz para desativar o fuzzing em builds. Alegadamente para mudar os módulos de música.
  • 2024-02-16: Malicioso “build-to-host.m4” adicionado ao .gitignore, tarde incorporado no lançamento do pacote.
  • 2024-03-09: Backdoor obfuscado/criptografado de estágio binário oculto em dois arquivos de teste:
    • tests/files/bad-3-corrupt_lzma2.xz
    • tests/files/good-large_compressed.lzma

M4/build-to-host.m4

  • A macro M4 é executada durante o processo de build e executa o código malicioso abaixo.

Stage 1 – Arquivo Bash

  • Versão 5.6.0:
    • Bytes em comentário: 8F FA 57 F2 1E 68 AC
    • Substituição personalizada (mapeamento de valor de byte)
  • Versão 5.6.1:
    • Bytes em comentário: 55 E9 9B 7A 9D 0B 17
    • Verifica se é executado em Linux
    • Substituição personalizada (mapeamento de valor de byte)

Stage 2 – Arquivo Bash

  • Extração de Backdoor v5.6.0:
    1. Extrair o trecho do arquivo teste contaminado com um arquivo grande e comprimido.
    2. Manipulação de saída com ‘LC_ALL=C sed “s/\M^I/\n/g”‘
    3. Decifrar output com ‘awk -v RS=’\n’ -f decode.awk’
    4. Decompilar com ‘xlc –script=<malicious_script>’
    5. Binário backdoor armazenado como liblzma_la-crc64_fast.o

liblzma_la-crc64_fast.o é então adicionado ao processo de compilação/ligação!

Mecanismo de Extensão v5.6.1

  1. Procurar arquivos: grep -broaf em ‘tests/files/’ para assinaturas:
    • saída: a[!-~]W*|!_K[!-~]
    • arquivos: file_name,offset,signature
  2. Se encontrado:
    • Salvar o offset de início como ‘aStart’
    • Salvar o offset final como ‘aEnd’
  3. Próximos passos:
    • Juntar segmentos de código
    • Mapear o endereço pelo mapeamento binário
    • Decompilar e executar o dado

A segunda imagem é fácil de entender pois está focando nos aspectos técnicos chave da exploração e execução do backdoor em liblzma.

Verificação

O engenheiro desenvolvedor de software Leonardo Araujo @cyberhermitt escreveu um Shell Script para validar ser nossos sistemas estão afetados.

Análise do Malware

Anthony Weems Criou um repositório xzbot para análise da Exploração do backdoor xz (CVE-2024-3094). Inclui o seguinte:

  • honeypot : servidor vulnerável falso para detectar tentativas de exploração
  • Patch ed448 : patch liblzma.so para usar nossa própria chave pública ED448
  • formato backdoor : formato da carga útil do backdoor
  • demonstração backdoor : cli para acionar o RCE assumindo conhecimento da chave privada ED448

Weems fez a engenharia reversa do backdoor xz e documentou o formato do Payload e escreveu uma prova de conceito para explorar o RCE.

Threat Hunting

Como o backdoor realmente executa comandos do sistema e não apenas permite a autenticação, pode ser possível detectar esse comportamento por meio do rastreamento de processos.

Normalmente, durante o logon, um novo shell é criado para o usuário que está registrando e executa o processo de shell padrão (como o bash). No entanto, com esse backdoor, o comando malicioso é na verdade executado pelo processo daemon SSH, sshd , o que pode desencadear uma anomalia.

🚀 Outro material importante foi criado por Wagner Souza Threat Hunting Vulnerabilidade RCE ao SSH (cve-2024-3094).

Neutralizando o Backdoor

De acordo com algumas análises do backdoor , ele parece ter um kill switch de variável de ambiente. Adicionar a chave yolAbejyiejuvnup=Evjtgvsh5okmkAvj às variáveis ​​de ambiente do sistema pode desabilitar o backdoor.

Vídeo sobre o tema

Este vídeo traz uma ótima explicação sobre todas as ações relacionadas a esse backdoor.

Referencias

Anúncio

Sobre Daniel Donda 533 Artigos
Olá, meu nome é Daniel Donda e sou especialista em cibersegurança, autor de livros, professor e palestrante. Saiba mais

4 Comentários

  1. Gostei muito deste seu resumo, Daniel. Esse infográfico feito pelo Thomas está animal e tornou bem mais fácil entender o que ocorreu. Achei esse ataque extremamente sofisticado, principalmente pela paciência do ofensor durante todo esse tempo agindo “under the radar”. Impressionante. Se permite, vou fazer uma referência para teu artigo na próxima edição da minha newsletter, ok? Um abraço!

  2. Olá Daniel. Abandonei o Windows há mais de 15 anos, e nesse tempo testei inúmeras versões do Linux: Curumim, Mandriva, Suse, Ubuntu, Fedora etc… De todas, a que mais gostei foi a Mint, com base no Ubuntu. Não sou especialista, apenas um usuário um pouco mais avançado, rs e um entusiasta de carteirinha ao software livre,
    Senpre acompanho o noticiário e fiquei bem preocupado com esse sofisticado backdoor. Pra mim, o Linux sempre foi uma plataforma “invulnerável”, rsrs… Mas está aí, um cybercriminoso colocando suas mão sujas num sistema que a filosofia de desenvolvimento e uso, em nada se adéqua à esse comportamento.
    Sya matéria é densa porém bem escrita e agradável de ler. Parabéns!!
    Fiz o teste em meu sistema com o comando apresentado por Leonardo Araújo e meu “liblzma” está na versão 5.2.5. Fiquei mais tranquilo.

    Pergunto, Daniel: Como barrar qualquer atualização de sistema que possa inserir o backdoor sem que eu saiba ou concorde??

    Abraços e vida longa !!!

Faça um comentário

Seu e-mail não será divulgado.


*