Voltar para blog

DDC: como detectar ataques invisíveis em compiladores

23/04/2025 · 2 min · Cibersegurança

Compartilhar

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.

O problema: 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

Projetos de referência

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.

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.