
Índice
Com o avanço das arquiteturas de computadores, os processadores modernos tornaram-se suscetíveis a uma ampla gama de ataques que exploram recursos de hardware de baixo nível. Canais microarquiteturais—incluindo canais colaterais e ocultos—transformaram-se de curiosidades teóricas em ameaças de segurança práticas, permitindo que atacantes vazem informações sensíveis sem nunca acionar alarmes de segurança clássicos.
Um caso de uso particularmente preocupante é a criação de canais ocultos de alta capacidade, que podem transmitir grandes quantidades de informações secretas de maneira confiável entre dois processos aliados, mesmo através de fronteiras de processo ou segurança. Como descoberto e analisado em Compreendendo e Melhorando Canais Ocultos de Alta Capacidade via Engenharia de Canais Microarquiteturais (HPCA 2015) e pesquisas subsequentes, esses vetores de ataque têm impacto no mundo real e exigem um exame rigoroso.
Esta publicação explica os canais microarquiteturais, do iniciante ao avançado, explora como canais de alta capacidade são projetados, fornece exemplos de código para detecção e medição, revisa as mitigações disponíveis e detalha a importância deste tópico na cibersegurança moderna.
Canais microarquiteturais surgem da implementação física da arquitetura de um processador—a chamada “microarquitetura”. Enquanto a arquitetura descreve o que o processador faz (o conjunto de instruções), a microarquitetura descreve como ele alcança isso (pipelines, caches, buffers, tabelas preditoras, etc.).
Os processadores são projetados para desempenho—não para isolamento de segurança ao nível microarquitetural. Recursos compartilhados levam a variações no tempo, disponibilidade ou comportamento observáveis por outros softwares, que podem ser usados para vazar segredos.
Ideia chave: Mesmo que dois processos não compartilhem memória, eles podem compartilhar hardware—facilitando a comunicação.
Diferença:
Os canais colaterais vazam segredos involuntariamente; os canais ocultos são construídos explicitamente para comunicação entre conspiradores através de fronteiras de segurança.
Canais ocultos modernos podem ser projetados para confiabilidade e alta capacidade (largura de banda), sendo capazes de vazar dados substanciais em curtos períodos de tempo. Vamos destrinchar como os atacantes conseguem esse feito.
Para que os canais ocultos funcionem, são essenciais recursos microarquiteturais compartilhados. Conforme delineado por AutoCC: Descoberta Automática de Canais Ocultos em Processadores Multiplexados por Divisão de Tempo (Princeton, 2023):
| Tipo de Recurso | Mecanismo de Exemplo | Vetor de Ataque |
|---|---|---|
| Caches | Caches de dados e instruções L1/L2/L3 | Prime+Probe, Flush+Reload |
| Preditores de ramificação | Tabelas de história de direção, BTB, RSB | BranchShadowing |
| TLBs | Buffers de tradução lookaside compartilhados | Ataques estilo TLBleed |
| Barramentos de memória | Bancos DRAM, buffers de linhas | Canalização de linhas DRAM |
| Buffers de prefetch | Preditores de hardware, prefetch de vítima | Variantes do Spectre |
Um processo emissor pode preparar um conjunto de cache (carregar endereços específicos). O receptor, executando mais tarde, verifica o tempo de acesso aos mesmos endereços:
Descrição:
O emissor preenche (prepara) um conjunto de cache. Se o probe do receptor mostrar leituras lentas, infere-se que o cache foi substituído entre os probes (indicando um bit específico).
Usado para:
Vazar dados de ambientes seguros ou isolados (ex.: JavaScript de navegador) para processos inescrupulosos.
Largura de banda:
Dependendo do hardware, centenas de kilobits por segundo são possíveis, conforme demonstrado no HPCA 2015.
Descrição:
Baseia-se em memória compartilhada, como bibliotecas de código mapeadas no mesmo local em vários processos (ex.: através de bibliotecas compartilhadas no Linux).
A detecção é desafiadora, uma vez que as operações de canais ocultos imitam padrões de acesso a recursos benignos. No entanto, com medição cuidadosa, os canais podem ser descobertos e caracterizados.
rdtsc no x86).Vamos revisar etapas práticas para pesquisadores de segurança.
hwloc, lscpu, dmidecode# Imprime cache e topologia da CPU
lscpu
hwloc-ls
dmidecode --type cache
import time
start = time.perf_counter_ns()
# Acessar memória/chamar função
end = time.perf_counter_ns()
print(f"Decorrido (ns): {end - start}")
Use rdtsc para medir tempos de acesso.
#include <stdio.h>
#include <x86intrin.h>
int main() {
volatile int data = 0;
unsigned long t1, t2;
int iterations = 1000;
for (int i = 0; i < iterations; i++) {
t1 = __rdtsc();
data += i; // Acessar memória
t2 = __rdtsc();
printf("%lu\n", t2 - t1); // Imprimir ciclos necessários para o acesso
}
return 0;
}
Suponha que você tenha um arquivo timings.txt (do exemplo de C acima):
# Imprime tempo mínimo, máximo, médio
awk '{sum+=$1; if(min==""||$1<min) min=$1; if($1>max) max=$1} END {print "Min:", min, "Max:", max, "Avg:", sum/NR}' timings.txt
# Usando perf para monitorar eventos de cache (requer root)
sudo perf stat -e cache-misses,cache-references -p <pid>
Conforme discutido em Prevenção de Canais Ocultos Microarquiteturais em um SoC (Wistoff et al. 2020):
perf, analisadores estáticos, e recursos de segurança específicos do fabricante (ex.: Intel CAT, AMD SEV).Os canais ocultos microarquiteturais representam uma classe sofisticada e ainda em evolução de vetores de ameaça em cibersegurança. À medida que atacantes desenvolvem canais confiáveis e de alta capacidade aproveitando o compartilhamento de recursos de hardware, os defensores devem mesclar estratégias de hardware, sistema operacional e software para mitigar esses canais.
Compreender o como e o por que por trás dessas vulnerabilidades capacita os profissionais a detectar, prevenir e minimizar riscos. Com pesquisas contínuas, desde o HPCA 2015 até ferramentas como AutoCC e trabalhos contemporâneos, a luta entre atacantes e defensores continua nos níveis mais baixos da computação.
Por [Seu Nome], Pesquisador de Cibersegurança — [Seu Site/Contato]
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.