📬 Toda semana, um resumo de segurança, Clean Code e IA no seu e-mail Inscreva-se →

Ceticismo com hardware: por que confiar cegamente é um erro de engenharia

Você recebe um lote de chips do fornecedor, roda o teste funcional de aceitação, tudo passa, e o projeto segue para produção. “Funcionou” e “é seguro” são duas afirmações completamente diferentes, e é exatamente aí que muita gente que trabalha com hardware — smartphone, notebook, ou o sistema embarcado mais simples — comete o erro de tratar como sinônimos. Neste artigo eu quero justificar por que ceticismo com hardware não é paranoia, é workload normal de quem projeta ou integra hardware sério, e mostrar onde especificamente esse ceticismo precisa se concentrar: cadeia de suprimentos e projeto do próprio circuito.

A cadeia de suprimentos é o primeiro lugar onde a confiança quebra

A complexidade crescente de sistemas de hardware trouxe à tona um problema estrutural: confiar na cadeia de suprimentos inteira, do momento em que a especificação sai da sua empresa até o produto final testado, envolve múltiplas etapas que podem ser comprometidas — e você não controla a maioria delas diretamente.

Terceirização e propriedade intelectual de terceiros. Grandes empresas de design de microchip usam componentes e ferramentas de terceiros com frequência. Esses elementos nem sempre vêm de fonte auditada, e podem carregar vulnerabilidade não intencional ou até backdoor deliberado inserido por quem os desenvolveu.

Fundições offshore. Fabricar em fundição localizada fora do seu controle direto aumenta o risco de interceptação ou alteração de design durante o processo — e essa alteração pode passar despercebida até o produto final já estar entregue e em uso.

Essa rede de fornecedores e processos cria uma situação incômoda: mesmo que a fase de especificação do seu produto seja segura, o “meio do caminho” — onde implementação e fabricação de fato acontecem — pode não ser confiável, e você frequentemente não tem visibilidade direta sobre isso.

O projeto do próprio hardware também introduz vulnerabilidade

Além do risco de cadeia de suprimentos, o design do circuito em si pode abrir brecha. É comum engenheiro focar em desempenho e deixar segurança em segundo plano — não por negligência proposital, mas porque a métrica que está sendo cobrada é velocidade ou consumo, não resistência a ataque. O resultado é falha crítica que só aparece depois.

Codificadores lógicos mal especificados. Imagine um codificador de 3 entradas (x, y, z) que converte o sinal em um código de 2 bits. No design ideal, a saída é determinada pela negação de certas entradas de forma bem definida. Na prática, dois problemas aparecem com frequência:

  • Colisão de código: a combinação de entrada 000, por exemplo, pode resultar numa saída idêntica à combinação 100 — criando, de fato, uma espécie de backdoor não intencional no sistema.
  • Saída não especificada: entradas fora do esperado podem gerar códigos que a especificação original nunca previu, abrindo espaço para ataque como injeção de falha (fault injection).

Máquinas de estado finito com backdoor. Sistemas sequenciais baseados em máquina de estados (FSM) apresentam um risco parecido. Se um estado crítico — que deveria ser inacessível — acaba tendo uma transição não planejada, um atacante pode explorar isso para ganhar acesso não autorizado:

  • Estados escondidos: quando o design inclui estado não documentado na especificação oficial, esse estado funciona como backdoor. Um atacante pode literalmente testar entradas quase ao acaso até encontrar a transição que leva a um estado restrito.
  • Ataque de random walk: usando entradas aleatórias sistematicamente, um atacante consegue forçar o sistema a transitar por estados não autorizados, comprometendo a segurança sem precisar conhecer o design internamente.

O padrão comum entre esses dois exemplos: nenhum dos dois é um “bug” no sentido tradicional de software. É um comportamento que passa despercebido em teste funcional normal, porque teste funcional normal verifica se o sistema faz o que deveria fazer — não se ele também faz algo que não deveria, sob uma entrada que ninguém pensou em testar.

Consequências e o que fazer a respeito

Vulnerabilidade de hardware desse tipo pode ter consequência séria: de interceptação de dado até controle completo do sistema por quem descobriu o comportamento não documentado. Por isso, adotar medida que reforce segurança desde a fase de projeto até a produção final é necessário, não opcional.

Práticas concretas que reduzem esse risco:

  • Auditoria rigorosa de cadeia de suprimentos: verificar a origem de cada componente e a integridade dos processos de fabricação envolvidos, não só confiar no contrato assinado.
  • Projeto com segurança como prioridade desde o início: implementar metodologia que trata segurança como requisito de primeira classe, mesmo que isso signifique custo de desenvolvimento maior — e geralmente significa.
  • Teste extensivo, incluindo pentest de hardware: simulação e teste de penetração voltados a encontrar backdoor ou comportamento inesperado, não só validar o caminho feliz da especificação.
  • Revisão cruzada de projeto e hardware: incentivar revisão por pares e colaboração entre times diferentes para detectar vulnerabilidade antes do produto chegar ao mercado — o mesmo princípio de code review aplicado a HDL, não só a software.

O ponto que eu quero deixar claro

Num cenário onde a confiança no hardware pode ser comprometida em várias etapas diferentes — cadeia de suprimentos e projeto do próprio circuito —, adotar postura cética e rigorosa não é exagero, é parte do trabalho. Implementar medida de segurança robusta custa mais tempo e mais dinheiro no curto prazo, mas o custo de não fazer isso, quando o problema aparece depois de fabricado e distribuído, costuma ser ordens de grandeza maior.

Se esse tema te interessa, os artigos aqui no blog sobre hardware trojans e sobre metering de circuito integrado aprofundam especificamente os mecanismos de inserção maliciosa e as contramedidas de rastreabilidade que mitigam boa parte do que descrevi acima.

Leandro Rosendo Candido

Leandro Rosendo Candido

Engenheiro de Computação, mestre pela USP, 10+ anos com Embedded Linux. Escreve e grava sobre segurança, Clean Code e IA aplicada à programação.

Rolar para cima