Backdoor XZ (CVE-2024-3094)

Em 30 de março de 2024, a Red Hat junto a Agência de Segurança Cibernética e de Infraestrutura dos EUA (CISA) emitiram em conjunto um aviso informando que a popular ferramenta de compactação Linux XZ Utils tem uma vulnerabilidade de alto risco com amplo impacto (pontuação CVSS 10). Verificar e corrigir essa vulnerabilidade esta sendo a prioridade máxima para varias equipes corporativas de TI e segurança esta semana.

A vulnerabilidade, numerada CVE-2024-3094, afeta a ferramenta XZ-Utils (anteriormente LZMA Utils) nas versões 5.6.0 e 5.6.1, essa biblioteca é um conjunto de ferramentas amplamente usado para processar arquivos .xz em sistemas compatíveis com POSIX, como Linux e Unix. Inclui componentes como liblzma e xz e está integrado na maioria dos repositórios de distribuição Linux.

Esta vulnerabilidade afeta OpenSSH, embora o OpenSSH não esteja vinculado diretamente à biblioteca liblzma, ele se comunica com o systemd de uma forma que deixa o OpenSSH exposto a ataques de malware, uma vez que o systemd está vinculado ao liblzma.

Histórico do evento

Em outubro de 2021, JiaT75, o desenvolvedor que implantou a vulnerabilidade do tipo backdoor, começou a participar do desenvolvimento do projeto XZ-Utils, gradualmente ganhou confiança e assumiu a autoridade de manutenção do projeto em 2023.

Em fevereiro de 2024, ele enviou um arquivo malicioso para liblzma/xz, introduzindo um backdoor secreto que permite que invasores acessem SSH sem autorização, e os mantenedores da distribuição Linux foram contatados para solicitar que a biblioteca com o código malicioso fosse empacotada e distribuída aos usuários finais.

Em 29 de março, o desenvolvedor Andres Freund estava analisando Falhas de desempenho SSH, descobrindo assim o ataque de supply chain.

Atualmente, o GitHub encerrou todo o projeto XZ-Utils.

O usuário Evan Boehs documentou a cronologia dos eventos em seu blog, o post intitulado “Tudo oque sei sobre o backdoor XZ”, descreve em detalhes todos fatos que precederam a inserção da falha revelando como é simples se infiltrar-se na esteira de desenvolvimento de um software open-source.

Impacto

Versões afetadas: 5.6.06.1.0

Nota: Nenhum código malicioso foi encontrado na distribuição Git do XZ, ele estava presente apenas no pacote completo de download.

Distribuições Linux afetadas atualmente conhecidas:

  • Fedora Rawhide (versão de desenvolvimento)
  • Fedora 41
  • MACOS HomeBrew x64
  • openSUSE Tumbleweed e MicroOS (lançado de 7 a 28 de março)
  • Kali Linux (xz-utils 5.6.0-0.2 lançado de 26 a 28 de março)
  • Debian (XZ beta versão 5.5 .1alpha-0.1 a 5.6.1- 1)

Para consultar todos os impactos visite: https://repology.org/project/xz/versions

Versão não afetada: <5.6.0

Nota: Como o desenvolvedor que implantou o backdoor começou a participar da manutenção do projeto em 2021, é aconselhado a fazer o downgrade do XZ-Utils para a versão 5.4 ou versões anteriores por motivos de segurança.

Repositórios LTS estáveis como CentOS/Redhat/Ubuntu/Debian/Fedora não são afetados.

Como detectar a vulnerabilidade?

Para verificar se a versão do xz que está usando é afetada executando o seguinte comando:

xz –version

Visando solucionar o problema rapidamente, um usuário da comunidade disponibilizou uma correção automática, basta executar o script:

#! /bin/bash
# Modified to run both (redudantly, yes, I know, I am paranoid, you should be too) checks
#
set -eu

# find path to liblzma used by sshd
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"
echo 'Check one: does it even exist?'
# does it even exist?
if [ "$path" == "" ]
then
  echo probably not vulnerable
  # exit
fi
echo 'Check 2: function signature'
# check for function signature
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
  echo probably vulnerable
else
  echo probably not vulnerable
fi

Fonte do código: https://gist.github.com/darkerego/b8fe6b2ebf2949b5dbfa1593204ae659

Correção

Atualmente não há anúncio oficial ou atualização de versão para esta vulnerabilidade.

Os usuários relevantes podem fazer downgrade do xz-utils para versões anteriores a 5.6.0 ou substituí-lo por componentes como 7zip.

A atualização do brew foi revertida de 5.6.1 para 5.4.6; O Debian lançou uma atualização de utilitários xz com o número de versão 5.6.1+really5.4.5;

Reflexões

Este incidente tem e terá muito impacto sobre a comunidade open-source, as bibliotecas deve priorizar a segurança e a qualidade, e não a quantidade de entregas.

No futuro, a introdução do mantenedores nos projetos abertos deveram se tornar mais conservadora, especialmente para a pacotes considerados primordiais ou frequentemente usados.

A cadeia de fornecimento de um software será levada mais a sério, a construção de softwares livres deverá consistentemente passar por inspeções amortizando ataques na cadeia de suprimentos, tornando-as ainda mais voltadas ao Open-Closed Principle.

Ferramentas de analise serão consequentemente mais demandadas, tornando o mercado mais competitivo.

O software livre sempre foi grande empreendimento, a abertura do código fonte dissemina a tecnologia de forma mais justa, com bibliotecas de alta qualidade que são fornecidas aos desenvolvedores “downstream” a custo quase zero.

No entanto, os requisitos de entrada para a comunidade FOSS só irão piorar a medida comunidade que aumentar a probabilidade de tais problemas de segurança – aumentando assim os custos para os desenvolvedores.

Há uma necessidade de financiamento contínuo no apoio a projetos FOSS, para garantir e encorajar mais desenvolvedores a se dedicarem ao desenvolvimento e manutenção de software livre de forma consistente.

O open-soure é um dos milagre desta era tecnológica, é a sorte desta era, precisa ser protegido e mantido por todos.

Sobre Nicolau 18 Artigos
Fuçando o desenvolvimento de software desde 2013, sou da turma do código aberto, vivo pesquisando e garimpando a segurança na web. Sommelier de sucos e chocólatra de carteirinha. Hic svnt dracones.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*