
Índice
Canais clandestinos microarquiteturais são uma preocupação crítica na segurança moderna de computadores. No cerne, esses canais exploram comportamentos sutis de hardware para vazar informações entre fronteiras de segurança isoladas, passando por defesas tradicionais de sistemas operacionais e em nível de aplicação. Com a computação em nuvem e ambientes multiusuário se tornando a norma, a detecção automática e mitigação dessas ameaças nunca foi tão importante.
AutoCC é uma estrutura inovadora que automatiza a descoberta desses canais de temporização clandestinos, permitindo que tanto os interessados ofensivos quanto defensivos avancem seu entendimento e proteções. Neste guia, vamos cobrir a tecnologia e pesquisa por trás do AutoCC, passar por dicas práticas de detecção e explicar a importância dos canais clandestinos microarquiteturais no cenário atual de ameaças.
Na segurança de computadores, um canal clandestino é um caminho de comunicação não intencional que pode ser explorado para transferir informações de maneira que viole as políticas de segurança do sistema. Diferente de canais laterais (que geralmente vazam dados através de radiações não intencionais ou observações), canais clandestinos são usados para transmitir informações secretamente entre agentes cooperantes, muitas vezes burlando controles de acesso.
Características chaves:
Microarquitetura refere-se aos detalhes de implementação em nível de hardware de um processador projetados para parecer invisíveis para o software através de abstração.
Canais clandestinos microarquiteturais exploram essas transições de estado de hardware, que são:
Citação de pesquisa:
Canais microarquiteturais exploram estados de hardware invisíveis à arquitetura de conjunto de instruções (ISA) para permitir fluxo de informações não autorizado.
A lacuna entre os recursos de hardware (e.g., caches, buffers, preditores de desvio) e a visão abstrata fornecida pela ISA abre oportunidades para canais clandestinos.
Programas compartilhando o mesmo hardware podem influenciar o tempo de execução ou comportamento uns dos outros, mesmo na ausência de canais de comunicação diretos.
Canais de temporização são os canais clandestinos microarquiteturais mais comuns. Eles operam através de:
Recursos típicos abusados:
Canais frequentemente surgem quando dois processos competem por um recurso de hardware limitado (e.g., um conjunto de cache, fila do controlador de memória).
Canais clandestinos microarquiteturais exploram alterações no tempo de execução resultantes do acesso concorrente a recursos de hardware limitados.
Essa competição provoca diferenças de tempo mensuráveis que podem codificar informações ocultas.
O cache da CPU, compartilhado entre vários núcleos/threads, é um campo fértil para a exploração de canais clandestinos.
Cenário:
Prime+Probe: Usa o acesso de temporização para verificar se a linha de cache foi substituída.
Flush+Reload: Baseia-se em memória compartilhada, mais precisa que Prime+Probe.
# Código Pseudocódigo: Loop Prime+Probe em Python (conceitual)
import time
CACHE_SET = 0xdeadbeef # Endereço simulado
def access_memory(addr):
# Simula o acesso a uma linha de cache
pass
def prime():
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
def probe():
start = time.perf_counter_ns()
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
end = time.perf_counter_ns()
return end - start
# Emissor prepara, espera, então receptor sonda e cronometra o acesso
Embora não sejam puramente canais clandestinos (frequentemente classificados como vulnerabilidades de canal lateral), esses ataques inspiraram interesse renovado em vazamentos de informações microarquiteturais ao mostrar como a especulação e execução fora de ordem podem quebrar fronteiras de segurança e vazar segredos através de mudanças de status microarquiteturais.
Ataques estilo Spectre: Abusam da execução especulativa para injetar dados controlados pelo atacante em estruturas microarquiteturais, afetando a execução do código da vítima de maneiras observáveis.
AutoCC significa Descoberta Automática de Canais Clandestinos no Tempo. É uma abordagem sistemática e ferramenta desenvolvida para encontrar automaticamente canais de temporização clandestinos em recursos microarquiteturais de CPU.
De Marcelo et al., MICRO 2023:
AutoCC:
Insight de Pesquisa Chave:
AutoCC encontrou canais previamente não documentados e fraquezas em CPUs populares, indicando a necessidade urgente de análise e defesa automatizadas.
AutoCC usa uma mistura de técnicas:
Com AutoCC, tanto atacantes quanto defensores ganham:
Prevenir ou mitigar canais clandestinos é desafiador devido à sua origem em nível de hardware. No entanto, algumas estratégias de alto nível incluem:
Sistemas operacionais podem ajudar:
rdtsc ou instruções semelhantes.Fornecedores de hardware podem:
O Linux oferece contadores de monitoramento de performance através da ferramenta perf, que pode ser usada para detectar atividade microarquitetural suspeita ou anomalias de performance que possam indicar o uso de canais clandestinos.
perf list
# Record cache misses and cycles for process with PID 1234
sudo perf stat -e cache-misses,cycles -p 1234
# Output parsing (example output)
# 1,234,567 cache-misses
# 23,456,789 cycles
Aplicações usando rdtsc ou /dev/tsc podem ser indícios de código de ataque baseado em temporização.
# List processes using /dev/tsc or similar
lsof | grep '/dev/tsc'
# Find binaries that reference rdtsc opcode (0f 31)
grep -rl -E $'\x0f\x31' /usr/bin /usr/local/bin
# Alternative: Use strace to monitor time-related syscalls in a suspect process
strace -e trace=clock_gettime,gettimeofday -p <pid>
import subprocess
def monitor_perf(pid, duration=10):
cmd = [
'perf', 'stat', '-e', 'cache-misses,cycles',
'-p', str(pid), 'sleep', str(duration)
]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
return out.decode(), err.decode()
# Example usage
out, err = monitor_perf(1234)
print("Perf Output:", out)
print("Perf Errors:", err)
Para automação mais profunda, você pode analisar a saída do perf para mudanças suspeitas nas taxas de falhas de cache, possivelmente sugerindo atividade clandestina baseada em cache.
import re
def parse_perf_output(perf_err):
cache_misses = re.search(r'([\d,]+)\s+cache-misses', perf_err)
cycles = re.search(r'([\d,]+)\s+cycles', perf_err)
return {
'cache_misses': int(cache_misses.group(1).replace(',', '')) if cache_misses else 0,
'cycles': int(cycles.group(1).replace(',', '')) if cycles else 0,
}
metrics = parse_perf_output(err)
print(f"Cache Misses: {metrics['cache_misses']}, Cycles: {metrics['cycles']}")
Canais clandestinos devem ser incluídos em modelos de ameaças para:
Questões a serem consideradas:
Red teams podem implantar ferramentas estilo AutoCC para identificar métodos viáveis de exfiltração e simular ataques do mundo real.
Blue teams e analistas forenses podem usar contadores de performance, logs de rastreamento do SO e perfis de comportamento para caçar anomalias sintomáticas de atividade clandestina.
Canais clandestinos microarquiteturais representam uma das ameaças mais insidiosas na segurança de hardware hoje. Muito abaixo do nível de vulnerabilidades clássicas de rede ou camada de aplicação, eles exploram os próprios blocos de construção da computação moderna para permitir o fluxo de informações não autorizado entre usuários e processos isolados.
AutoCC e pesquisas semelhantes estão avançando no campo, fornecendo as ferramentas e metodologias necessárias para descobrir e fechar esses canais—antes que os atacantes tenham a chance de usá-los. Conforme tanto CPUs quanto defensores evoluem, a única constante é que devemos continuar procurando (e aprendendo com) cada canal oculto que emerge.
Ao integrar monitoramento, análise e modelagem proativa de ameaças nos processos de segurança, as organizações podem ficar à frente desse vetor de ameaças sutil, mas poderoso.
AutoCC: Automatic Discovery of Covert Channels in Time
Autores: Marcelo Santos, et al. MICRO 2023
Texto Completo (PDF)
Prevention of Microarchitectural Covert Channels on an Open-Source 64-bit RISC-V Processor
Autores: Wistoff et al.
Preprint arXiv
Texto Completo (PDF)
Documentação do Linux perf
https://perf.wiki.kernel.org/index.php/Main_Page
Intel® 64 e Manual de Referência de Otimização de Arquiteturas IA-32
https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Ataques Spectre e Meltdown
https://meltdownattack.com/
Interessado em mais guias detalhados? Inscreva-se em nosso boletim informativo de insights sobre cibersegurança!
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.