
Perigos de Carga Especulativa Impulsionam Ataques Rowhammer e de Cache - CVE-2019-0162 -
https://www.usenix.org/system/files/sec19-islam.pdf
@inproceedings {236252,
author = {Saad Islam and Ahmad Moghimi and Ida Bruhns and Moritz Krebbel and Berk Gulmezoglu and Thomas Eisenbarth and Berk Sunar},
title = {{SPOILER}: Speculative Load Hazards Boost Rowhammer and Cache Attacks},
booktitle = {28th {USENIX} Security Symposium ({USENIX} Security 19)},
year = {2019},
isbn = {978-1-939133-06-9},
address = {Santa Clara, CA},
pages = {621--637},
url = {https://www.usenix.org/conference/usenixsecurity19/presentation/islam},
publisher = {{USENIX} Association},
month = aug,
}
Saad Islam e Ahmad Moghimi, Worcester Polytechnic Institute; Ida Bruhns e Moritz Krebbel, University of Luebeck; Berk Gulmezoglu, Worcester Polytechnic Institute; Thomas Eisenbarth, Worcester Polytechnic Institute e University of Luebeck; Berk Sunar, Worcester Polytechnic Institute
Microarquiteturas modernas incorporam técnicas de otimização como cargas especulativas e encaminhamento de armazenamento para melhorar o gargalo de memória. O processador executa a carga especulativamente antes dos armazenamentos e encaminha os dados de um armazenamento anterior para a carga se houver uma dependência potencial. Isso melhora o desempenho, pois a carga não precisa esperar que os armazenamentos anteriores sejam concluídos. No entanto, a previsão de dependência depende de informações parciais de endereço, o que pode levar a dependências falsas e perigos de parada.
Neste trabalho, somos os primeiros a mostrar que a lógica de resolução de dependência que atende à carga especulativa pode ser explorada para obter informações sobre os mapeamentos de páginas físicas. Ataques de canal lateral microarquiteturais como Rowhammer e ataques de cache como Prime+Probe dependem da engenharia reversa do mapeamento de endereço virtual para físico. Propomos o ataque SPOILER que explora esse vazamento para acelerar essa engenharia reversa por um fator de 256. Em seguida, mostramos como isso pode melhorar o ataque Prime+Probe com uma aceleração de 4096 vezes na busca do conjunto de despejo, mesmo em ambientes em sandbox como JavaScript. Por fim, melhoramos o ataque Rowhammer mostrando como o SPOILER ajuda a conduzir conflitos de linha DRAM deterministicamente com até 100% de chance, e demonstrando um ataque Rowhammer de dupla face com privilégio de usuário normal. Isso se deve à possibilidade de detectar páginas de memória contíguas usando o vazamento do SPOILER.
$ make
$ ./spoiler
Instale o gnuplot se ainda não estiver instalado ou plote t2.txt em qualquer outro software. O script MATLAB plot_t2.m é fornecido.
$ gnuplot
gnuplot> plot 't2.txt' with lines
Se você ver picos semelhantes aos em peaks_linux.png, sua CPU é vulnerável ao SPOILER. Caso contrário, você pode tentar ajustar os parâmetros "PAGE_COUNT, WINDOW e THRESH_OUTLIER". Para uma CPU de 11ª Geração, por exemplo, alterar o tamanho da WINDOW para 256 funcionou. A razão pode ser que o tamanho do buffer de armazenamento aumenta em gerações mais altas. Por favor, leia o artigo para detalhes.
Execute "spoiler.exe" com duplo clique ou prompt de comando. Se você precisar alterar algum parâmetro, recompile o código. Plote "t2.txt" usando qualquer software ou com o script MATLAB plot_t2.m.