FlowTracker: Detecção de Código Nao Isócrono via Análise Estática de Fluxo

FlowTracker é uma ferramenta disponı́vel para uso online, capaz de analisar programas escritos em linguagem C ou C++ e reportar traços de instruções vulneráveis à ataques por análise de variação de tempo. Esses ataques são comuns em implementações de primitivas criptográficas e são possı́veis devido a presença de canais laterais nas respectivas implementações. Um canal lateral ocorre quando bits da chave criptográfica ou de outra informação sigilosa acabam por influenciar a execução de desvios condicionais, alterando o fluxo de controle da aplicação e consequentemente variando o seu tempo de execução. Eles também ocorrem quando esses mesmo bits são utilizados como ı́ndices de acesso à memória, o que também pode afetar o tempo de execução devido às falhas de cache. FlowTracker foi testado em duas famosas e reconhecidas bibliotecas criptográficas: OpenSSL e NaCl. Foi possı́vel validar a ausência de canais laterais em NaCl, e detectar centenas de trechos vulneráveis em OpenSSL.