Na segurança de computadores, um ataque de cold boot (ou, em menor grau, um ataque de reinicialização de plataforma) é um tipo de ataque de canal lateral no qual um invasor com acesso físico a um computador realiza um dump de memória da memória de acesso aleatório (RAM) de um computador executando um reinício forçado (hard reset) da máquina alvo. Normalmente, os ataques de cold boot são usados para recuperar chaves de criptografia de um sistema operacional em execução por motivos maliciosos ou de investigação criminal. O ataque baseia-se na propriedade de remanência de dados de DRAM e SRAM para recuperar conteúdos da memória que permanecem legíveis nos segundos a minutos seguintes ao desligamento da energia.

Um invasor com acesso físico a um computador em execução normalmente executa um ataque de cold boot realizando um boot a frio na máquina e iniciando um sistema operacional leve a partir de um disco removível para despejar o conteúdo da memória física pré-inicialização em um arquivo. O invasor fica então livre para analisar os dados despejados da memória para encontrar dados sensíveis, como as chaves, usando várias formas de ataques de busca de chaves. Como os ataques de cold boot visam a memória de acesso aleatório, esquemas de criptografia de disco total, mesmo com um módulo de plataforma confiável (TPM) instalado, são ineficazes contra esse tipo de ataque. Isso ocorre porque o problema é fundamentalmente de hardware (memória insegura) e não uma questão de software. No entanto, o acesso malicioso pode ser evitado limitando o acesso físico e usando técnicas modernas para evitar o armazenamento de dados sensíveis na memória de acesso aleatório.

Detalhes técnicos

Os módulos de memória DIMM perdem dados gradualmente ao longo do tempo conforme perdem energia, mas não perdem todos os dados imediatamente quando a energia é cortada. Com certos módulos de memória, a janela de tempo para um ataque pode ser estendida para horas ou até uma semana ao resfriá-los com spray congelante e nitrogênio líquido. Além disso, à medida que os bits desaparecem na memória com o tempo, eles podem ser reconstruídos, pois desaparecem de maneira previsível. Consequentemente, um invasor pode realizar um dump de memória de seu conteúdo executando um ataque de cold boot. A capacidade de executar o ataque de cold boot com sucesso varia consideravelmente entre diferentes sistemas, tipos de memória, fabricantes de memória e propriedades da placa-mãe, e pode ser mais difícil de realizar do que métodos baseados em software ou um Ataque de DMA. Embora o foco da pesquisa atual seja a criptografia de disco, qualquer dado sensível mantido na memória é vulnerável ao ataque.

Invasores executam ataques de cold boot reiniciando de forma forçada e abrupta uma máquina alvo e, em seguida, iniciando um sistema operacional pré-instalado a partir de um pendrive, CD-ROM ou através da rede. Em casos onde não é prático reiniciar a máquina alvo, um invasor pode, alternativamente, remover fisicamente os módulos de memória do sistema original e colocá-los rapidamente em uma máquina compatível sob o controle do invasor, que é então inicializada para acessar a memória. Uma análise posterior pode então ser realizada contra os dados despejados da RAM.

Um tipo semelhante de ataque também pode ser usado para extrair dados da memória, como um Ataque de DMA que permite que a memória física seja acessada através de uma porta de expansão de alta velocidade, como FireWire. Um ataque de cold boot pode ser preferido em certos casos, como quando há alto risco de danos ao hardware. O uso da porta de expansão de alta velocidade pode causar curto-circuito ou danificar fisicamente o hardware em certos casos.

Usos

Ataques de cold boot são normalmente usados para investigações forenses digitais, fins maliciosos como roubo e recuperação de dados, embora a simples diversão não possa ser descartada.

Computação forense

Em certos casos, um ataque de cold boot é usado na disciplina de computação forense para preservar de forma forense os dados contidos na memória como evidência criminal. Por exemplo, quando não é prático preservar os dados na memória por outros meios, um ataque de cold boot pode ser usado para realizar um despejo dos dados contidos na memória de acesso aleatório. Por exemplo, um ataque de cold boot é usado em situações em que um sistema está protegido e não é possível acessar o computador. Um ataque de cold boot também pode ser necessário quando um disco rígido é criptografado com criptografia de disco total e o disco potencialmente contém evidências de atividade criminosa. Um ataque de cold boot fornece acesso à memória, que pode fornecer informações sobre o estado do sistema no momento, como quais programas estavam em execução.

Intenção maliciosa

Um ataque de cold boot pode ser usado por invasores para obter acesso a informações criptografadas, como informações financeiras ou segredos comerciais, com intenção maliciosa.

Contornando a criptografia de disco total

Um propósito comum dos ataques de cold boot é contornar a criptografia de disco baseada em software. Ataques de cold boot, quando usados em conjunto com ataques de busca de chaves, demonstraram ser um meio eficaz de contornar esquemas de criptografia de disco total de vários fornecedores e sistemas operacionais, mesmo onde um coprocessador seguro Trusted Platform Module (TPM) é usado.

No caso de aplicativos de criptografia de disco que podem ser configurados para permitir que o sistema operacional inicialize sem a inserção de um PIN de pré-inicialização ou a presença de uma chave de hardware (por exemplo, BitLocker em uma configuração simples que usa um TPM sem um PIN de autenticação de dois fatores ou chave USB), o intervalo de tempo para o ataque não é limitante de forma alguma.

BitLocker

O BitLocker em sua configuração padrão usa um módulo de plataforma confiável que não requer nem um PIN, nem uma chave externa para descriptografar o disco. Quando o sistema operacional inicia, o BitLocker recupera a chave do TPM, sem qualquer interação do usuário. Consequentemente, um invasor pode simplesmente ligar a máquina, esperar o sistema operacional começar a inicializar e então executar um ataque de cold boot contra a máquina para recuperar a chave. Devido a isso, a autenticação de dois fatores, como um PIN de pré-inicialização ou um dispositivo USB removível contendo uma chave de inicialização junto com um TPM, deve ser usada para contornar essa vulnerabilidade na implementação padrão do BitLocker. No entanto, essa solução alternativa só evita um ataque de cold boot se a máquina estivesse desligada antes de o invasor obter acesso físico. Se a máquina já tivesse inicializado e estivesse em execução, ela não impede que um invasor recupere dados sensíveis da memória, nem que recupere chaves de criptografia armazenadas em cache na memória.

Mitigação Como um dump de memória pode ser facilmente realizado executando um ataque de cold boot, o armazenamento de dados sensíveis na RAM, como chaves de criptografia para criptografia de disco total, é inseguro. Várias soluções foram propostas para armazenar chaves de criptografia em áreas que não sejam a memória de acesso aleatório. Embora essas soluções possam reduzir a chance de quebrar a criptografia de disco total, elas não fornecem proteção para outros dados sensíveis armazenados na memória.

Armazenamento de chaves baseado em registros

Uma solução para manter as chaves de criptografia fora da memória é o armazenamento de chaves baseado em registros. As implementações desta solução são TRESORTRESOR USENIX paper, 2011 e Loop-Amnesia. Ambas as implementações modificam o kernel de um sistema operacional para que os registradores da CPU (no caso do TRESOR, os registradores de depuração x86 e, no caso do Loop-Amnesia, os registradores de perfil AMD64 ou EMT64) possam ser usados para armazenar chaves de criptografia, em vez da RAM. As chaves armazenadas neste nível não podem ser lidas facilmente do espaço do usuário e são perdidas quando o computador reinicia por qualquer motivo. Tanto o TRESOR quanto o Loop-Amnesia devem usar a geração de chave de rodada em tempo real devido ao espaço limitado disponível para armazenar tokens criptográficos dessa maneira. Para segurança, ambos desabilitam interrupções para evitar que as informações das chaves vazem para a memória a partir dos registradores da CPU enquanto a criptografia ou descriptografia está sendo realizada, e ambos bloqueiam o acesso aos registradores de depuração ou perfil.

Existem duas áreas potenciais em processadores x86 modernos para armazenar chaves: os registradores SSE, que poderiam ser tornados privilegiados desabilitando todas as instruções SSE (e necessariamente, quaisquer programas que dependam delas), e os registradores de depuração, que eram muito menores, mas não apresentavam tais problemas.

Uma distribuição prova de conceito chamada 'paranoix', baseada no método de registrador SSE, foi desenvolvida. Os desenvolvedores afirmam que "executando o TRESOR em uma CPU de 64 bits que suporte AES-NI, não há penalidade de desempenho em comparação com uma implementação genérica de AES", e roda um pouco mais rápido do que a criptografia padrão, apesar da necessidade de recálculo de chave. A principal vantagem do Loop-Amnesia em relação ao TRESOR é que ele suporta o uso de várias unidades criptografadas; as principais desvantagens são a falta de suporte para x86 de 32 bits e o pior desempenho em CPUs que não suportam AES-NI.

Armazenamento de chaves baseado em cache

O "cache congelado" (às vezes conhecido como "cache como RAM") pode ser usado para armazenar chaves de criptografia com segurança. Funciona desabilitando o cache L1 de uma CPU e usando-o para armazenamento de chaves; no entanto, isso pode degradar significativamente o desempenho geral do sistema a ponto de ser muito lento para a maioria dos propósitos.Frozen Cache Blog

Uma solução semelhante baseada em cache foi proposta por Guan et al. (2015) empregando o modo de cache WB (Write-Back) para manter os dados nos caches, reduzindo os tempos de computação de algoritmos de chave pública.

Mimosa no IEEE S&P 2015 apresentou uma solução mais prática para computações criptográficas de chave pública contra ataques de cold boot e ataques de DMA. Ele utiliza a memória transacional de hardware (HTM), que foi originalmente proposta como um mecanismo de acesso especulativo à memória para aumentar o desempenho de aplicativos multithread. A garantia de atomicidade forte fornecida pela HTM é utilizada para derrotar acessos concorrentes ilegais ao espaço de memória que contém dados sensíveis. A chave privada RSA é criptografada na memória por uma chave AES que é protegida pelo TRESOR. Mediante solicitação, uma computação de chave privada RSA é conduzida dentro de uma transação HTM: a chave privada é primeiro descriptografada na memória e, em seguida, a descriptografia ou assinatura RSA é realizada. Como uma chave privada RSA em texto simples só aparece como dados modificados em uma transação HTM, qualquer operação de leitura desses dados interromperá a transação - a transação retornará ao seu estado inicial. Observe que a chave privada RSA é criptografada no estado inicial e é o resultado de operações de gravação (ou descriptografia AES). Atualmente, a HTM é implementada em caches ou buffers de armazenamento, ambos localizados em CPUs, não em chips de RAM externos. Assim, os ataques de cold boot são evitados. O Mimosa derrota ataques que tentam ler dados sensíveis da memória (incluindo ataques de cold boot, ataques de DMA e outros ataques de software) e introduz apenas uma pequena sobrecarga de desempenho.

Desmontagem de discos criptografados