
Introdução a Ataques de Injeção de Falhas Eletromagnéticas (EMFI)
# Introdução para Iniciantes em Ataques de Injeção de Falhas: Desmistificando a Injeção de Falhas Eletromagnéticas (EMFI)
**Índice**
- [Introdução aos Ataques de Injeção de Falhas](#introdução-aos-ataques-de-injeção-de-falhas)
- [O que é Injeção de Falhas Eletromagnéticas (EMFI)?](#o-que-é-injeção-de-falhas-eletromagnéticas-emfi)
- [Como o EMFI Funciona: Da Teoria à Prática](#como-o-emfi-funciona-da-teoria-à-prática)
- [Entendendo a Interferência Eletromagnética](#entendendo-a-interferência-eletromagnética)
- [Impacto do EMFI em Circuitos Integrados (CIs)](#impacto-do-emfi-em-circuitos-integrados-cis)
- [Um Setup Compacto de EMFI: Componentes e Montagem](#um-setup-compacto-de-emfi-componentes-e-montagem)
- [Equipamento Necessário](#equipamento-necessário)
- [Diagrama de Configuração Típica](#diagrama-de-configuração-típica)
- [Considerações de Segurança](#considerações-de-segurança)
- [EMFI em Ação: Cenários de Ataque no Mundo Real](#emfi-em-ação-cenários-de-ataque-no-mundo-real)
- [Estudo de Caso 1: Extração de Chaves Criptográficas](#estudo-de-caso-1-extração-de-chaves-criptográficas)
- [Estudo de Caso 2: Ataques de Falhas em Microcontroladores Seguros](#estudo-de-caso-2-ataques-de-falhas-em-microcontroladores-seguros)
- [Estudo de Caso 3: EMFI em Sistema-em-um-Chip (SoC) Embutido](#estudo-de-caso-3-emfi-em-sistema-em-um-chip-soc-embutido)
- [Detectando Vulnerabilidades Usando EMFI](#detectando-vulnerabilidades-usando-emfi)
- [Escaneando para Resposta de Falha](#escaneando-para-resposta-de-falha)
- [Automatizando Testes de Injeção de Falhas com Python e Bash](#automatizando-testes-de-injeção-de-falhas-com-python-e-bash)
- [Mitigando Ataques de Injeção de Falhas: Medidas Defensivas](#mitigando-ataques-de-injeção-de-falhas-medidas-defensivas)
- [Aprimore seu Conhecimento: Recursos e Comunidade](#aprimore-seu-conhecimento-recursos-e-comunidade)
- [Conclusão](#conclusão)
- [Referências](#referências)
---
## Introdução aos Ataques de Injeção de Falhas
Ataques de Injeção de Falhas são uma classe de ataques de hardware nos quais um adversário **induz intencionalmente erros (falhas) no funcionamento de um dispositivo**, com o objetivo de contornar verificações de segurança, extrair dados sensíveis, ou geralmente minar a confiabilidade de um sistema. Esta técnica é especialmente relevante com a proliferação de aplicações seguras que rodam em sistemas embarcados — de cartões inteligentes a dispositivos de IoT.
As injeções de falhas podem ser realizadas usando vários métodos:
- Glitching de Voltagem/Relógio
- Injeção de Falhas a Laser
- **Injeção de Falhas Eletromagnéticas (EMFI)**
- Manipulação de Temperatura/Ambiente
Entre eles, o **EMFI** destaca-se como uma técnica flexível e sem contato, aproveitando pulsos curtos de energia eletromagnética (EM) para perturbar regiões específicas do silício, levando a falhas transitórias. Este post foca no uso do EMFI em pesquisas de cibersegurança e ataques práticos.
---
## O que é Injeção de Falhas Eletromagnéticas (EMFI)?
**Injeção de Falhas Eletromagnéticas (EMFI)** é uma técnica avançada em que uma rajada controlada de energia eletromagnética é direcionada a uma parte específica de um circuito integrado (CI) ou microcontrolador. A intenção é **perturbar a operação correta do dispositivo** induzindo falhas, como inversões de bits, violações de tempo ou pulos de instrução.
### Características Chave:
- **Não-invasiva**: Não é necessário abrir a embalagem ou contatar fisicamente o silício interno.
- **Precisa**: Pode atingir unidades funcionais específicas dentro de um chip (por exemplo, núcleo da CPU, I/O).
- **Repetível**: Configurações adequadas podem permitir uma injeção de falhas consistente e reprodutível.
- **Poderosa**: Especialmente potente contra chips com recursos de segurança como boot seguro, motores criptográficos, ou resistência a violação.
### Visão Geral do Conceito

*Figura: Princípio da Injeção de Falhas Eletromagnéticas (simplificado)*
A técnica de EMFI tipicamente:
- Usa uma **sonda baseada em bobina** (caseira ou comercial) para concentrar campos EM.
- Emprega um **gerador de pulsos EM** para gerar pulsos de alta voltagem na escala de nanossegundos.
- Sincroniza com o relógio do sistema para maximizar a probabilidade de causar falhas significativas durante fases de computação sensíveis.
**Fonte:** [arXiv:2509.18341v1](https://arxiv.org/html/2509.18341v1), [Blog da Ledger sobre EMFI Compacto](https://www.ledger.com/blog/compact-em)
---
## Como o EMFI Funciona: Da Teoria à Prática
### Entendendo a Interferência Eletromagnética
**Interferência Eletromagnética (EMI)** ocorre quando um campo eletromagnético externo perturba o funcionamento normal de circuitos eletrônicos. No contexto da injeção de falhas, o ataque é focado, intencional e altamente controlado.
**Física por trás do EMFI:**
- As equações de Maxwell determinam como campos EM se propagam e interagem com materiais.
- Transientes rápidos e de alta energia induzem correntes indesejadas nos circuitos da vítima.
- Em sistemas digitais, isso pode causar picos de voltagem (ou corrente) em portas ou células de memória críticas em momentos precisos, causando falhas.
### Impacto do EMFI em Circuitos Integrados (CIs)
Quando um pulso EM cuidadosamente elaborado é disparado em um dispositivo, diversos efeitos de ataque são possíveis:
- **Violações de Tempo:** Dados não são travados corretamente, ou sequências de controle saem de ordem.
- **Pulo de Instrução:** CPU inadvertidamente pula instruções.
- **Inversões de Bits:** Bits na memória ou registradores são invertidos devido a correntes induzidas.
- **Contornando Segurança:** Verificações de segurança ou ramos condicionais podem ser subvertidos.
**Exemplo:**
Um microcontrolador está executando um código que verifica se uma senha está correta. Um ataque de EMFI pode inverter o resultado dessa verificação, contornando a autenticação e concedendo acesso não autorizado.
---
## Um Setup Compacto de EMFI: Componentes e Montagem
Antes de lançar um ataque, vamos entender como uma configuração típica de EMFI se parece em um laboratório de segurança.
### Equipamento Necessário
1. **Gerador de Pulsos** — Gera pulsos rápidos e precisos de alta voltagem (frequentemente até centenas de volts, com larguras tão pequenas quanto alguns nanossegundos).
2. **Sonda de Injeção EM** — Tipicamente uma pequena bobina (sonda de laço) posicionada logo acima do chip alvo.
3. **Osciloscópio/Analisador de Lógica** — Monitora a resposta do sistema e auxilia na calibração de tempo.
4. **Equipamento de Gatilho e Sincronização** — Assegura que a falha seja injetada no momento exato.
5. **Dispositivo Alvo** — O sistema embarcado, microcontrolador ou SoC a ser testado.
6. **Sistema de Posicionamento** — Micro-posicionador XYZ para alinhamento preciso da sonda.
7. **Equipamento de Blindagem e Segurança** — Prevenção de interferência colateral e ferimentos.
**Nota:** Algumas configurações avançadas usam estágios motorizados, atrasos controláveis por computador, e até aprendizado de máquina para automatizar o processo.
### Diagrama de Configuração Típica
```plaintext
+---------------------+ Cabo Coaxial +-----------------------+
| Gerador de Pulsos |--------------------->| Sonda EM (laço/bobina)|
+---------------------+ +-----------------------+
|
V
+-----------+
| Alvo |
| Dispositivo |
+-----------+
|
v
+---------+ Gatilho/Sincronização +-------------+ USB/Serial +-----------+
| Computador Host |<--------------------->| Osciloscópio|--------------->| Computador Host |
+---------+ +-------------+ +-----------+
(Controle, Tempo) (Monitora Resposta)
Considerações de Segurança
- Alta Voltagem: Geradores de pulsos podem entregar voltagens perigosas; manuseie com extremo cuidado.
- Campos EM: Blindagem é necessária para localizar o ataque e minimizar emissão.
- Dano ao Dispositivo: Pulsos de alta energia repetidos podem danificar permanentemente CIs alvos.
EMFI em Ação: Cenários de Ataque no Mundo Real
Estudo de Caso 1: Extração de Chaves Criptográficas
Conceito de Ataque
Muitos dispositivos dependem de chaves criptográficas armazenadas internamente (por exemplo, chaves AES, RSA). Ao perturbar a execução durante a computação criptográfica (como multiplicação em RSA), atacantes podem induzir falhas resultando em saídas erradas das quais chaves secretas podem ser recuperadas matematicamente.
Exemplo
- Alvo: Cartão inteligente executando computação de assinatura RSA.
- Processo: Aplicar EMFI durante o cálculo de chave privada para falhar seletivamente bits cruciais.
- Resultado: Usar múltiplas saídas defeituosas e o criptograma original para reconstruir chaves usando uma técnica conhecida como Análise Diferencial de Falhas.
Fluxo de Análise Diferencial de Falhas
flowchart TD
A[Dispositivo executa algoritmo criptográfico] --> B[EMFI induz falha na computação]
B --> C[Saída é capturada (cipher/assinatura defeituosa)]
C --> D[Atacante usa equações conhecidas e múltiplas saídas defeituosas]
D --> E[Recuperação de chave via técnicas algébricas]
Estudo de Caso 2: Ataques de Falhas em Microcontroladores Seguros
Microcontroladores modernos usados em cartões de pagamento, TPMs, ou tokens de autenticação incluem recursos de segurança—mas o EMFI pode contornar esses, expondo seus segredos.
Exemplo: Pulando Verificações de Autenticação
Suponha um segmento de código alvo que realiza verificação de senha:
if (input_hash == stored_hash) {
grant_access();
}
Um pulso de EMFI, bem cronometrado durante a comparação, pode corromper o registrador de fluxo de controle da CPU ou flags, pulando o condicional e forçando o acesso a ser erroneamente concedido.
Demonstração: Visualizando Manipulação do Fluxo de Controle
| Ciclo | Operação | Estado do Registrador | Efeito do EMFI | Saída |
|---|---|---|---|---|
| T1 | Carrega input_hash | input_hash em R1 | - | - |
| T2 | Compara input_hash e armazenado | R1, R2 | Pulso EM | Resultado ruim da comparação |
| T3 | Ramifica se igual | Verificação de condição | Pulado | Acesso concedido! |
Estudo de Caso 3: EMFI em Sistema-em-um-Chip (SoC) Embutido
Com SoCs (por exemplo, ARM Cortex-M, A53), o EMFI abre uma vasta superfície de ataque:
- ROM de Boot
- Enclaves seguros
- Descriptografia de código em tempo real
- Autenticação de dados em tempo de execução
Exemplo: Ataque no Boot Seguro
Um SoC pode verificar a integridade do firmware no boot. Um atacante sincroniza um pulso de EMFI com a rotina de verificação CRC, fazendo com que ela pule ou calcule incorretamente a verificação. O dispositivo então inicia um firmware modificado pelo atacante (malicioso).
Referência do Mundo Real:
Em um Seminário da Creach Labs, pesquisadores mostraram como SoCs executando Ambientes de Execução Confiáveis poderiam ser comprometidos com EMFI.
Detectando Vulnerabilidades Usando EMFI
Pesquisadores de segurança frequentemente usam EMFI para caracterizar vulnerabilidades em novos dispositivos. O processo envolve sondagem sistemática, injeção de falhas e observação das respostas dos dispositivos.
Escaneando para Resposta de Falha
Processo Passo-a-passo:
- Identificar Código Sensível: Onde você deve focar (por exemplo, comparação de senha, rotinas criptográficas)?
- Sincronizar Pulso: Use GPIO, saída serial, ou linhas de depuração para garantir tempo preciso.
- Variação de Parâmetros: Explore largura do pulso, amplitude, deslocamento de tempo e posição da sonda.
- Coletar Saídas: Armazene respostas do dispositivo, criptogramas defeituosos ou logs de depuração para análise.
- Classificar Falhas: Use scripts para analisar saídas e categorizar por tipo de falha—pulso de instruções, inversões de bits, reinício total do dispositivo, etc.
Exemplo de Script de Escaneamento (Bash + Python):
Suponha que seu dispositivo emite informações de diagnóstico via UART e você deseja automatizar a classificação de falhas.
Bash: Iniciando uma varredura de falhas, capturando logs seriais para cada injeção:
for delay in $(seq 0 100 5000); do
echo "Injetando no atraso $delay ns"
./trigger_pulsegen --delay $delay --width 10 --voltage 200
cat /dev/ttyUSB0 > log_${delay}.txt &
sleep 0.5
pkill -f "cat /dev/ttyUSB0"
done
Python: Analisando logs para padrões de falhas (por exemplo, procurando por 'FALHA DETECTADA'):
import glob
for logfile in glob.glob("log_*.txt"):
with open(logfile) as f:
content = f.read()
if "FALHA DETECTADA" in content:
print(f"{logfile}: Falha observada")
elif "REINÍCIO" in content:
print(f"{logfile}: Reinício do dispositivo detectado")
else:
print(f"{logfile}: Sem falha")
Automatizando Testes de Injeção de Falhas com Python e Bash
Pesquisas em larga escala envolvem integrar todo o equipamento com automação de software:
- Automatize o posicionamento da sonda (via motores)
- Controle programaticamente os parâmetros de pulso
- Coleta e processamento de dados em tempo real
- Alvejamento adaptativo com base nos resultados observados
Exemplo Simples de Automação em Python:
Assuma que você tem uma API para seu gerador de pulsos e osciloscópio:
import pulsegen
import oscilloscope
# Conectar dispositivos
pulse = pulsegen.connect("COM4")
scope = oscilloscope.connect("USB0::0x1AB1::0x0588::DS1ET141904883")
delays = range(1000, 5000, 200) # em ns
for d in delays:
pulse.setup(delay=d, width=10, voltage=250) # definir parâmetros de injeção
pulse.fire() # injetar!
trace = scope.capture()
# Salvar, analisar, ou visualizar a captura de traço:
filename = f"trace_{d}ns.csv"
with open(filename, "w") as f:
f.write(trace)
Nota: A automação na vida real pode envolver bibliotecas complexas, tratamento de erros e integração com posicionadores de sondas.
Mitigando Ataques de Injeção de Falhas: Medidas Defensivas
À medida que o EMFI amadurece, as contramedidas também o fazem—fabricantes de hardware agora projetam com resistência a falhas:
- Sensores: Detectores integrados para campos EM fortes ou anomalias de voltagem.
- Computação Redundante: Lógica crítica é duplicada, e os resultados são comparados (Redundância Modular Dupla, DMR).
- Atrasos Aleatórios/Ofuscação: Adiciona ruído à execução de tempo, tornando a mira precisa mais difícil.
- Blindagem Física: Adiciona barreiras condutivas e absorventes de EM sobre áreas sensíveis dos CIs.
- Sensoriamento por Software: O software monitora estados impossíveis (por exemplo, salto impossível na lógica).
Exemplo de Software: Execução Triplicada para Verificação:
// Pseudocódigo
resultado1 = calc_hash(entrada);
resultado2 = calc_hash(entrada);
resultado3 = calc_hash(entrada);
if ((resultado1 == resultado2) && (resultado2 == resultado3))
usar(resultado1);
else
acionar_alerta();
Aprimore seu Conhecimento: Recursos e Comunidade
Se você está ansioso para ir além do básico, os seguintes recursos e comunidades são inestimáveis:
- Artigos de Pesquisa:
- Seminários e Workshops:
- Ferramentas Open-Source:
Leve Sua Carreira em Cibersegurança para o Próximo Nível
Se você achou este conteúdo valioso, imagine o que você poderia alcançar com nosso programa de treinamento de elite abrangente de 47 semanas. Junte-se a mais de 1.200 alunos que transformaram suas carreiras com as técnicas da Unidade 8200.
