Explicação da ofuscação na etapa Bash
- Foi encontrado um backdoor no xz/liblzma. Ele afeta servidores OpenSSH.
- Mais do que o binário com o backdoor incluído, o foco está na parte inicial em bash e no método de ofuscação simples, porém engenhoso, usado.
- Este texto explica como a etapa bash é ofuscada e extraída.
Antes de começar
- Duas versões do xz/liblzma (5.6.0 e 5.6.1) foram afetadas. Há diferenças sutis entre elas.
- A parte em bash é dividida em três etapas (ou quatro?) e cada etapa é nomeada de Stage 0 a Stage 2.
- Também será mencionado o "Stage 3", mas ele pode ainda não estar totalmente implementado.
- As etapas ofuscadas/criptografadas e o backdoor binário posterior estão escondidos em dois arquivos de teste.
Stage 0
- Começa no arquivo m4/build-to-host.m4. Esse código é executado em algum ponto do processo de build para extrair o script Stage 1.
- Lê bytes do arquivo de teste, envia para a saída padrão e usa o comando
tr para mapear caracteres para outros caracteres.
Stage 1
- Um arquivo bash que começa com "####Hello####". Ele é feito para rodar apenas no Linux.
- Inclui o uso de
eval para extrair srcdir de config.status e uma cadeia complexa de comandos head que pula e imprime bytes específicos.
- Usa o comando
tr para aplicar uma cifra de substituição simples, depois descompacta com o comando xz e executa.
Stage 2
- O Stage 2 é o script bash que modifica o processo real de compilação.
- Parece haver um sistema de "extensão/patch", permitindo executar novos scripts sem continuar modificando os arquivos de teste.
- Inclui código para extrair arquivos
.o e integrá-los ao processo de compilação/linkedição.
Resumo
- Esse processo é extremamente oculto e foi construído de forma complexa usando apenas ferramentas padrão de linha de comando.
- Com a execução em 3 etapas e o sistema de "extensão", ele foi projetado para o futuro, evitando a necessidade de alterar novamente os arquivos binários de teste.
- O fato de esse ataque ter sido descoberto por acaso deixa muitas questões para a comunidade de segurança.
Opinião do GN⁺
- Este artigo enfatiza a importância da segurança de software e dos ataques à cadeia de suprimentos. Ele chama a atenção para vulnerabilidades que podem surgir no processo de build de software e relembra a importância de revisão de código e auditorias de segurança.
- As técnicas de ofuscação e os métodos de ataque em múltiplas etapas mostram o quão sofisticadamente um invasor pode se infiltrar em sistemas. Essas técnicas também têm valor educacional para profissionais de segurança.
- Outras ferramentas ou projetos de segurança com funções semelhantes incluem o Dependency-Check da OWASP e a Nexus Platform da Sonatype. Eles ajudam a identificar vulnerabilidades de segurança em dependências de software.
- Ao adotar esse tipo de tecnologia, é preciso reforçar a segurança em todas as etapas da cadeia de suprimentos de software. O ganho é aumentar a segurança do sistema; o custo é que, se invasores usarem esses métodos, a detecção pode ser difícil.
- Este caso revela ao mesmo tempo os pontos fortes e fracos da comunidade de código aberto. A revisão e a contribuição baseadas na comunidade são importantes para o crescimento e a segurança dos projetos, mas também existe o risco representado por contribuidores maliciosos.
Ainda não há comentários.