Ataque de inicialização a frio - Cold boot attack

Em segurança de computador , um ataque de inicialização a frio (ou, em menor extensão, um ataque de redefinição de plataforma ) é um tipo de ataque de canal lateral no qual um invasor com acesso físico a um computador executa um despejo de memória da memória de acesso aleatório de um computador (RAM ) executando uma reinicialização forçada da máquina de destino. Normalmente, os ataques de inicialização a frio são usados ​​para recuperar chaves de criptografia de um sistema operacional em execução por motivos de investigação criminais e / ou maliciosos. O ataque depende da propriedade de remanência de dados de DRAM e SRAM para recuperar o conteúdo da memória que permanece legível de segundos a minutos após a remoção da energia.

Um invasor com acesso físico a um computador em execução normalmente executa um ataque de inicialização a frio inicializando a frio a máquina e inicializando um sistema operacional leve a partir de um disco removível para despejar o conteúdo da memória física de pré-inicialização em um arquivo. Um invasor fica então livre para analisar os dados despejados da memória para encontrar dados confidenciais, como as chaves , usando várias formas de ataques de localização de chaves . Como os ataques de inicialização a frio têm como alvo a memória de acesso aleatório , os esquemas de criptografia de disco completo , mesmo com um módulo de plataforma confiável instalado, são ineficazes contra esse tipo de ataque. Isso ocorre porque o problema é fundamentalmente um problema de hardware (memória insegura) e não um problema 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 confidenciais na memória de acesso aleatório .

Detalhes técnicos

Latas de nitrogênio líquido, spray de congelamento ou ar comprimido podem ser improvisadas para resfriar os módulos de memória e, assim, desacelerar a degradação da memória volátil

Os módulos de memória DIMM perdem dados gradualmente ao longo do tempo à medida que perdem energia, mas não perdem imediatamente todos os dados quando há falta de energia. Dependendo da temperatura e das condições ambientais, os módulos de memória podem reter potencialmente, pelo menos, alguns dados por até 90 minutos após a perda de energia. Com certos módulos de memória, a janela de tempo para um ataque pode ser estendida para horas ou até semanas resfriando-os com spray de congelamento . Além disso, como os bits desaparecem da memória ao longo do tempo, eles podem ser reconstruídos, pois desaparecem de maneira previsível. Conseqüentemente, um invasor pode executar um despejo de memória de seu conteúdo executando um ataque de inicialização a frio. A capacidade de executar o ataque de inicialização a frio com êxito 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 executar do que métodos baseados em software ou um ataque DMA . Embora o foco da pesquisa atual seja a criptografia de disco, quaisquer dados confidenciais mantidos na memória são vulneráveis ​​ao ataque.

Os invasores executam ataques de inicialização a frio reiniciando de forma abrupta e forçada uma máquina alvo e, em seguida, inicializando um sistema operacional pré-instalado a partir de uma unidade flash USB (vídeo), CD-ROM ou pela rede . Nos casos em que não seja prático reinicializar a máquina de destino, 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 ser realizada em relação aos dados despejados da RAM .

Um tipo semelhante de ataque também pode ser usado para extrair dados da memória, como um ataque DMA que permite que a memória física seja acessada por meio de uma porta de expansão de alta velocidade, como FireWire . Um ataque de inicialização a frio 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 inicialização a frio são normalmente usados ​​para investigações forenses digitais , fins maliciosos, como roubo e recuperação de dados.

Forense digital

Em certos casos, um ataque de inicialização a frio é usado na disciplina de análise forense digital para preservar forense os dados contidos na memória como evidência criminal. Por exemplo, quando não é prático preservar dados na memória por outros meios, um ataque de inicialização a frio pode ser usado para executar um despejo dos dados contidos na memória de acesso aleatório . Por exemplo, um ataque de inicialização a frio é usado em situações em que um sistema está protegido e não é possível acessar o computador. Um ataque de inicialização a frio 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 inicialização a frio fornece acesso à memória, que pode fornecer informações sobre o estado do sistema no momento, como os programas em execução.

Intenção maliciosa

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

Contornando a criptografia de disco completo

Um objetivo comum dos ataques de inicialização a frio é contornar a criptografia de disco baseada em software. Ataques de inicialização a frio, quando usados ​​em conjunto com ataques de localização de chaves, demonstraram ser um meio eficaz de contornar esquemas de criptografia de disco completo de vários fornecedores e sistemas operacionais , mesmo quando um criptoprocessador 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 que um PIN de pré- inicialização seja inserido ou uma chave de hardware esteja presente (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 prazo para o ataque não é limitante.

BitLocker

O BitLocker em sua configuração padrão usa um módulo de plataforma confiável que não requer um pino, nem uma chave externa para descriptografar o disco. Quando o sistema operacional é inicializado, o BitLocker recupera a chave do TPM, sem nenhuma interação do usuário. Consequentemente, um invasor pode simplesmente ligar a máquina, esperar que o sistema operacional comece a inicializar e, em seguida, executar um ataque de inicialização a frio 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 esta vulnerabilidade na implementação padrão do BitLocker. No entanto, essa solução alternativa não impede que um invasor recupere dados confidenciais da memória, nem recupere chaves de criptografia armazenadas em cache na memória.

Mitigação

Como um despejo de memória pode ser facilmente executado executando um ataque de inicialização a frio, o armazenamento de dados confidenciais na RAM, como chaves de criptografia para criptografia de disco completo, não é seguro. Várias soluções foram propostas para armazenar chaves de criptografia em áreas diferentes da memória de acesso aleatório . Embora essas soluções possam reduzir a chance de quebrar a criptografia completa do disco, elas não oferecem proteção para outros dados confidenciais armazenados na memória.

Armazenamento de chaves baseado em registro

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

Existem duas áreas potenciais nos processadores x86 modernos para o armazenamento de chaves: os registros SSE que poderiam, na verdade, ser privilegiados pela desativação de todas as instruções SSE (e, necessariamente, todos os programas que dependiam delas) e os registros de depuração que eram muito menores, mas não tinham tais questões.

Uma distribuição de prova de conceito chamada 'paranoix' com base no método de registro SSE foi desenvolvida. Os desenvolvedores afirmam que "rodando TRESOR em uma CPU de 64 bits que suporta AES-NI , não há penalidade de desempenho em comparação com uma implementação genérica de AES ", e executa 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 comparação com o TRESOR é que ele oferece suporte ao uso de várias unidades criptografadas; as principais desvantagens são a falta de suporte para x86 de 32 bits e pior desempenho em CPUs que não oferecem suporte a AES-NI.

Armazenamento de chaves baseado em cache

O "cache congelado" (também conhecido como "cache como RAM") pode ser usado para armazenar com segurança as chaves de criptografia. Ele funciona desabilitando o cache L1 da CPU e o usa para armazenamento de chaves; no entanto, isso pode degradar significativamente o desempenho geral do sistema a ponto de ser lento demais para a maioria dos propósitos.

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

O Mimosa no IEEE S&P 2015 apresentou uma solução mais prática para cálculos criptográficos de chave pública contra ataques de inicialização a frio e ataques de DMA. Ele emprega memória transacional de hardware (HTM) que foi originalmente proposta como um mecanismo especulativo de acesso à memória para aumentar o desempenho de aplicativos multithread. A forte garantia de atomicidade fornecida pela HTM é utilizada para impedir acessos simultâneos ilegais ao espaço de memória que contém dados confidenciais. A chave privada RSA é criptografada na memória por uma chave AES protegida por TRESOR. A pedido, um cálculo de chave privada RSA é conduzido dentro de uma transação HTM: a chave privada é primeiramente descriptografada na memória e, em seguida, a descriptografia RSA ou assinatura é conduzida. Como uma chave privada RSA de texto simples aparece apenas como dados modificados em uma transação HTM, qualquer operação de leitura para esses dados abortará a transação - a transação será revertida 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, o HTM é implementado em caches ou store-buffers, ambos localizados em CPUs, não em chips externos de RAM. Assim, os ataques de inicialização a frio são evitados. O Mimosa derrota contra ataques que tentam ler dados confidenciais da memória (incluindo ataques de inicialização a frio, ataques de DMA e outros ataques de software) e só introduz uma pequena sobrecarga de desempenho.

Desmontando discos criptografados

A prática recomendada recomenda desmontar quaisquer discos criptografados que não sejam do sistema quando não estiverem em uso, uma vez que a maioria dos softwares de criptografia de disco são projetados para apagar com segurança as chaves armazenadas em cache na memória após o uso. Isso reduz o risco de um invasor conseguir recuperar as chaves de criptografia da memória executando um ataque de inicialização a frio. Para minimizar o acesso a informações criptografadas no disco rígido do sistema operacional, a máquina deve ser completamente desligada quando não estiver em uso para reduzir a probabilidade de um ataque de inicialização a frio bem-sucedido. No entanto, os dados podem permanecer legíveis por dezenas de segundos a vários minutos, dependendo do dispositivo de RAM físico na máquina, potencialmente permitindo que alguns dados sejam recuperados da memória por um invasor. Configurar um sistema operacional para desligar ou hibernar quando não usado, em vez de usar o modo de suspensão, pode ajudar a reduzir o risco de um ataque de inicialização a frio bem-sucedido.

Contramedidas eficazes

Prevenção de acesso físico

Normalmente, um ataque de inicialização a frio pode ser evitado limitando o acesso físico de um invasor ao computador ou tornando cada vez mais difícil realizar o ataque. Um método envolve soldar ou colar os módulos de memória na placa - mãe , para que não possam ser facilmente removidos de seus soquetes e inseridos em outra máquina sob o controle de um invasor. No entanto, isso não impede que um invasor inicialize a máquina da vítima e execute um despejo de memória usando uma unidade flash USB removível . Uma atenuação como UEFI Secure Boot ou abordagens de verificação de inicialização semelhantes podem ser eficazes para impedir que um invasor inicialize um ambiente de software personalizado para despejar o conteúdo da memória principal soldada.

Criptografia de memória total

A criptografia de memória de acesso aleatório (RAM) reduz a possibilidade de um invasor conseguir obter chaves de criptografia ou outro material da memória por meio de um ataque de inicialização a frio. Essa abordagem pode exigir alterações no sistema operacional, nos aplicativos ou no hardware. Um exemplo de criptografia de memória baseada em hardware foi implementado no Microsoft Xbox . Implementações em hardware x86-64 mais recente da AMD estão disponíveis e o suporte da Intel será lançado em Willow Cove .

A criptografia de memória total baseada em software é semelhante ao armazenamento de chaves baseado em CPU, pois o material da chave nunca é exposto na memória, mas é mais abrangente, pois todo o conteúdo da memória é criptografado. Em geral, apenas as páginas imediatas são descriptografadas e lidas rapidamente pelo sistema operacional. As implementações de soluções de criptografia de memória baseadas em software incluem: um produto comercial da PrivateCore . e RamCrypt, um patch de kernel para o kernel Linux que criptografa dados na memória e armazena a chave de criptografia nos registros da CPU de maneira semelhante ao TRESOR .

Desde a versão 1.24, VeraCrypt suporta criptografia RAM para chaves e senhas.

Mais recentemente, vários artigos foram publicados destacando a disponibilidade de processadores convencionais x86 e ARM com segurança aprimorada. Nesse trabalho, um processador ARM Cortex A8 é usado como o substrato no qual uma solução de criptografia de memória completa é construída. Os segmentos do processo (por exemplo, pilha, código ou pilha) podem ser criptografados individualmente ou em composição. Este trabalho marca a primeira implementação de criptografia de memória completa em um processador de uso geral. O sistema oferece proteção de confidencialidade e integridade de código e dados que são criptografados em qualquer lugar fora dos limites da CPU.

Apagamento seguro de memória

Como os ataques de inicialização a frio têm como alvo a memória de acesso aleatório não criptografada , uma solução é apagar os dados confidenciais da memória quando não estiverem mais em uso. A "TCG Platform Reset Attack Mitigation Specification", uma resposta da indústria a este ataque específico, força o BIOS a sobrescrever a memória durante o POST se o sistema operacional não foi desligado corretamente. No entanto, essa medida ainda pode ser contornada removendo o módulo de memória do sistema e lendo-o de volta em outro sistema sob o controle do invasor que não oferece suporte a essas medidas.

Um recurso eficaz de apagamento seguro seria que, se a energia for interrompida, a RAM será apagada em menos de 300 ms antes que a energia seja perdida em conjunto com um BIOS seguro e disco rígido / controlador SSD que criptografa dados nas portas M-2 e SATAx . Se a própria RAM não contivesse presença serial ou outros dados e os tempos fossem armazenados no BIOS com alguma forma de proteção contra falhas exigindo uma chave de hardware para alterá-los, seria quase impossível recuperar quaisquer dados e também seria imune a ataques TEMPEST , man-in-the-RAM e outros métodos de infiltração possíveis.

Alguns sistemas operacionais , como o Tails, fornecem um recurso que grava com segurança dados aleatórios na memória do sistema quando o sistema operacional é desligado para evitar um ataque de inicialização a frio. No entanto, o apagamento da memória de vídeo ainda não é possível e em 2021 ainda é um tíquete aberto no fórum do Tails. Os ataques potenciais que podem explorar essa falha são:

  • A geração de um par de chaves GnuPG e a exibição da chave privada em um editor de texto podem levar à recuperação da chave.
  • Uma semente de criptomoeda pôde ser vista, evitando assim a carteira (mesmo se criptografada), permitindo o acesso aos fundos.
  • Digitar uma senha com a visibilidade ativada pode mostrar partes dela ou até mesmo a chave inteira. Se um arquivo de chave for usado, pode ser mostrado para reduzir o tempo necessário para um ataque de senha.
  • Traços de volumes criptografados montados ou abertos com negabilidade plausível podem ser mostrados, levando à descoberta deles.
  • Se conectado a um serviço .onion , o URL pode ser mostrado e levar à sua descoberta, ao contrário, seria extremamente difícil.
  • O uso de um programa específico pode mostrar os padrões do usuário. Por exemplo, se um programa de esteganografia for usado e aberto, a suposição de que o usuário está ocultando dados pode ser feita. Da mesma forma, se um mensageiro instantâneo estiver sendo usado, uma lista de contatos ou mensagens pode ser exibida.

Armazenamento de chave externa

Um ataque de inicialização a frio pode ser evitado garantindo que nenhuma chave seja armazenada pelo hardware sob ataque.

Contramedidas ineficazes

O embaralhamento de memória pode ser usado para minimizar os efeitos parasitas indesejáveis ​​de semicondutores como um recurso dos processadores Intel Core modernos . No entanto, como o embaralhamento é usado apenas para descorrelacionar quaisquer padrões dentro do conteúdo da memória, a memória pode ser decodificada por meio de um ataque de decodificação. Conseqüentemente, o embaralhamento de memória não é uma mitigação viável contra ataques de inicialização a frio.

O modo de suspensão não oferece proteção adicional contra um ataque de inicialização a frio porque os dados geralmente ainda residem na memória enquanto estão neste estado. Assim, os produtos de criptografia de disco completo ainda são vulneráveis ​​a ataques porque as chaves residem na memória e não precisam ser inseridas novamente quando a máquina sai de um estado de baixa energia.

Embora limitar as opções do dispositivo de inicialização no BIOS possa tornar um pouco menos fácil inicializar outro sistema operacional, o firmware em chipsets modernos tende a permitir que o usuário substitua o dispositivo de inicialização durante o POST pressionando uma tecla de atalho especificada. Limitar as opções do dispositivo de inicialização não impedirá que o módulo de memória seja removido do sistema e lido novamente em um sistema alternativo. Além disso, a maioria dos chipsets fornece um mecanismo de recuperação que permite que as configurações do BIOS sejam redefinidas para o padrão, mesmo se estiverem protegidas por uma senha. As configurações do BIOS também podem ser modificadas enquanto o sistema está em execução para contornar qualquer proteção aplicada por ele, como limpeza de memória ou bloqueio do dispositivo de inicialização.

Smartphones

O ataque de inicialização a frio pode ser adaptado e executado de maneira semelhante em smartphones Android . Como os smartphones não têm um botão de reinicialização, uma inicialização a frio pode ser realizada desconectando a bateria do telefone para forçar uma reinicialização a frio. O smartphone é então exibido com uma imagem do sistema operacional que pode executar um despejo de memória . Normalmente, o smartphone é conectado à máquina de um invasor por meio de uma porta USB .

Normalmente, os smartphones Android apagam com segurança as chaves de criptografia da memória de acesso aleatório quando o telefone está bloqueado. Isso reduz o risco de um invasor conseguir recuperar as chaves da memória, mesmo se conseguir executar um ataque de inicialização a frio contra o telefone.

Referências

links externos