Percio Castelo.
EN Início
DDC: como detectar ataques invisíveis em compiladores
← Voltar para blog

DDC: como detectar ataques invisíveis em compiladores

07/06/2026 · 2 min · Cibersegurança · 561 visualizações

O especialista David A. Wheeler propôs a técnica Diverse Double-Compiling (DDC) para resolver um problema crítico de segurança: o ataque Trusting Trust em compiladores.

Ataque trusting trust#

Ken Thompson descreveu esse ataque em 1984: um compilador comprometido pode inserir backdoors em programas compilados e até contaminar novos compiladores, mesmo quando o código-fonte parece limpo.

Isso cria uma situação perigosa: o binário final está adulterado, mas o código fonte não evidencia o ataque de forma direta.

A solução: DDC (compilação dupla diversificada)#

A DDC valida se o executável final realmente corresponde ao código-fonte.

Fluxo resumido:

  1. Compile o fonte do compilador A com o próprio compilador A e gere X.
  2. Compile o mesmo fonte com um compilador B confiável e tecnicamente diverso,

gerando Y.

  1. Use Y para recompilar o mesmo fonte e gerar Z.
  2. Compare X e Z bit a bit.

Se X == Z, o resultado é consistente. Se diferirem, existe sinal de adulteração no caminho de compilação.

Exemplo prático com script Bash#

#!/bin/bash
# Verificacao DDC simples

SOURCE="compilador_A.c"
SUSPECT_COMPILER="./gcc-bad"
TRUSTED_OUTPUT="./output-from-trusted-path"

echo "Iniciando verificacao DDC..."

# 1. Gera binario com compilador suspeito
$SUSPECT_COMPILER -o bin_suspeito $SOURCE

# 2. Compara hashes SHA-256
HASH_A=$(sha256sum bin_suspeito | cut -d ' ' -f 1)
HASH_Z=$(sha256sum $TRUSTED_OUTPUT | cut -d ' ' -f 1)

if [ "$HASH_A" = "$HASH_Z" ]; then
  echo "SUCESSO: hashes coincidem."
else
  echo "ALERTA: divergencia detectada."
  diffoscope bin_suspeito $TRUSTED_OUTPUT
fi

Ferramentas úteis#

  • diffoscope: compara binários em profundidade e mostra diferenças reais. https://domain.com/
  • disorderfs: ajuda a encontrar fontes de não determinismo na build. https://domain.com/reproducible-builds/disorderfs

Projetos de referência#

  • Bootstrappable Builds https://domain.com/
  • GNU Mes https://domain.com/software/mes/
  • Reproducible Builds (Debian, Fedora, Arch e outros https://domain.com/
  • Trabalhos de David Wheeler sobre DDC https://domain.com/dwheeler.html

A DDC aumenta a confiança na cadeia de compilação ao validar compiladores com diversidade de ferramentas. O custo de ataques invisíveis sobe e a auditoria da supply chain fica muito mais robusta.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

561 leituras
Creative Commons Atribuição-NãoComercial

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários