Reverse Branch Target Buffer Poisoning
Autores
7177 |
1848,3149
|
|
7178 |
1848,3149
|
Informações:
Publicações do PESC
Os ataques de corrupção de memória são amplamente usados para obter execução remota de código ou escalação de privilégios em aplicativos. Para mitigar esses ataques, o sistema operacional geralmente randomiza os endereços das páginas usando o Address Layout Randomization (ASLR). Usando a execução especulativa, as CPUs modernas contam com preditores de ramificação para escolher a próxima instrução a ser buscada no pipeline da CPU. Este artigo apresenta uma nova técnica baseada em Spectre v2 para abusar de preditores de ramificação para contornar o ASLR em CPUs Intel. Nosso ataque abusa do fato de que não apenas o invasor pode poluir o buffer de destino da ramificação, como em um cenário semelhante a um espectro, mas as vítimas também podem desencadear uma previsão incorreta de ramificação no processo do invasor, levando o invasor a pular especulativamente para o mesmo protegido por ASLR. Usando um segundo canal lateral de cache, o invasor pode recuperar o endereço, ignorando completamente o ASLR para o processo de destino. Usando um processador Intel real de 3ª geração hospedado na cloud da Google, recuperamos com sucesso o endereço da vítima 40% das vezes, com 100% de precisão quando recuperado, com cada execução demorando cerca de 15 segundos para ser concluída.
Memory corruption attacks are widely used to achieve remote code execution or privilege escalation in applications. In order to mitigate these attacks, the operational system usually randomizes the addresses of pages using Address Layout Randomization (ASLR). Using speculative execution, modern CPUs rely on branch predictors to choose the next instruction to be fetched in the CPU pipeline. This paper presents a new Spectre v2-based technique for abusing branch predictors to bypass ASLR on Intel CPUs. Our attack abuses the fact that not only can the attacker pollute the branch target buffer such as in a specter-like scenario, but victims can also trigger a branch misprediction in the attacker process, leading the attacker to speculatively jump to the same ASLR-protected address. Using a second cache side channel the attacker can then retrieve the address, completely bypassing the ASLR for the target process. Using a real 3rd generation Intel processor hosted on Google’s cloud, we successfully recovered the victim’s address 40% of the time, with 100% of accuracy when ecovered, with each execution taking around 15 seconds to complete.