Ataques de canal lateral contra aplicações web
Introdução
O propósito desse artigo é informar o leitor a respeito de ataques de canal lateral, em especial, ataques baseados em aferição de delta temporal de resposta contra aplicações web. De forma muito breve, o leitor é exposto ao modelo de segurança de uma aplicação e à definição de “canal lateral”. Em seguida, uma visita à metodologia de ataque de aferição de delta temporal contra aplicações web é apresentada. Finalmente, uma possível contramedida a esse tipo de ataque, por parte de engenheiros de software, é discutida.
Modelo de Segurança de Aplicações
Uma aplicação qualquer se comunica com o mundo externo através de canais de entrada/saída projetados para essa finalidade. Por exemplo, podemos pensar em uma aplicação web que se comunica com o usuário através de uma interface no browser e com um banco de dados hospedado em um servidor externo como se ela tivesse dois canais de comunicação: um com o usuário que a acessa usando o browser, através do protocolo HTTP, e outro com o banco de dados que ela utiliza, através de um protocolo baseado em SQL. Esses canais de entrada/saída são chamados de “fronteiras de confiança” (de security boundaries), para denotar que a aplicação não pode “confiar”, a priori, em nada que venha do mundo externo (entrada). Da mesma forma, a aplicação deve tomar cuidado com o que ela externaliza (saída), de forma a evitar retornar em suas saídas informação que ela não deveria.
Ao conjunto de todas as fronteiras de confiança de uma aplicação se dá o nome de “superfície de ataque” (de attack surface). Portanto, para se proteger de ataques, a aplicação deve ser capaz de reconhecer entradas maliciosas, de forma a tomar a providência defensiva aplicável (por exemplo, parar de aceitar entradas do IP de onde partiu a entrada maliciosa, criar uma linha de log para o evento ocorrido, bloquear a conta de usuário associada à entrada, etc.) Ademais, a aplicação deve evitar, a todo custo, retornar como saída informação que possa trazer benefícios a um adversário que tenha provido entradas maliciosas. Assim, durante o projeto de uma aplicação, é preciso que os engenheiros de software encarregados conheçam muito bem todas as fronteiras de confiança que compõem a superfície de ataque da aplicação desenvolvida, para que sejam capazes de protegê-la de entidades maliciosas.
O problema é que é possível que algumas fronteiras de confiança, muitas vezes bastante sutis, passem despercebidas durante o projeto da aplicação, resultando em algumas possibilidades de ataque. Essas fronteiras de confiança “esquecidas”, que correspondem a canais de comunicação não mapeados no modelo da aplicação durante o projeto, recebem o nome de “canais lateriais” e podem ser explorados por entidades maliciosas em ataques homônimos, os chamados “ataques de canal lateral”. A figura a seguir resume os conceitos introduzidos até esse ponto.