É possível que uma máquina virtual como o VirtualBox tenha a vulnerabilidade de segurança "espectro"? Acho que a VM talvez faça execução fora de ordem, mas, na minha opinião, não é possível espiar o cache para ler o resultado.
Existe alguma explicação sobre como é possível ler o cache de uma CPU virtual?
Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
qemu
podem fazer emulações que seriam mais seguras, pois não são uma CPU de hardware , mas são muito mais lentas e diferentes da virtualização.Respostas:
Sim O Spectre pode cruzar os limites de host / convidado, convidado / host e convidado / convidado, porque essa é uma falha no nível da CPU, o que significa que informações potencialmente sensíveis podem vazar em qualquer coisa que seja executada no núcleo da CPU.
A maioria das notícias na internet fala sobre os provedores de nuvem serem os mais atingidos por isso, pois possuem grandes conjuntos de sistemas virtualizados e que podem ser abusados por vazar informações confidenciais.
A maioria dos grandes fornecedores já deveria estar corrigida contra as falhas, da melhor maneira possível, mas isso vai ser um problema que vive conosco por algum tempo.
O Security.SE possui perguntas e respostas canônicas sobre isso e menciona as VMs:
As VMs usam a CPU real em seu sistema com algumas instruções privilegiadas interceptadas e capazes de serem redirecionadas. Ele usa os mesmos caches e instruções que o host. É essencialmente apenas outra camada dentro da CPU física em seu sistema.
A virtualização é rápida apenas porque usa a CPU física com o mínimo de abstração possível e depende do hardware da CPU para fornecer isolamento. Coisas como o qemu podem fazer uma emulação que seria mais segura, pois não é uma CPU de hardware, mas é muito mais lenta e diferente da virtualização.
Na publicação canônica Security.se novamente:
Portanto, como a VM é executada no hardware real da CPU e tudo o que é necessário é executar um loop específico para "treinar" o mecanismo de execução especulativo. Em seguida, ele pode usar o tempo preciso para observar os caches de padrões específicos de acesso indicativos do processo de host ou convidado (ou outra VM) que ele deseja explorar.
Dessa maneira, significa que uma máquina é explorável em todas as direções. Do host à VM, da VM ao host e da VM à VM.
Sim, não é nada fácil e é difícil de executar, pois o núcleo da CPU da VM pode mudar ao capricho do host e o host pode agendar alegremente tarefas em núcleos diferentes, mas, por um longo período de tempo, informações suficientes pode haver vazamento para abrir uma chave secreta para algum sistema ou conta importante. Com tempo suficiente e algum software furtivo, tudo está potencialmente aberto.
Se você queria uma VM "segura", precisa garantir que seus núcleos sejam isolados. As únicas maneiras reais de bloquear esse ataque seriam "forçar" o host e as VMs a usar apenas determinados núcleos para que nunca funcionem no mesmo hardware, mas isso levaria a um aumento efetivo no custo, pois você não seria capaz de ter tantas VMs em um determinado host. Você nunca conseguiria executar mais VMs do que os núcleos disponíveis, o que eu esperaria que fosse feito em servidores de "baixa carga", pois muitos sistemas ficam ociosos por 90% de sua vida útil.
fonte
gem5
Se você estiver interessado em estudar / reproduzir vulnerabilidades apenas com emulação, sem usar a CPU host, não acho que o QEMU seja detalhado o suficiente para observá-las, pois não simula o pipeline da CPU.
No entanto, o gem5 é usado para estimar o desempenho do sistema em pesquisa e desenvolvimento e simula internos da CPU suficientes para você observar o Spectre em um ambiente totalmente limpo e controlado.
Uma demonstração legal do x86_64 com visualização foi publicada em: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html
A desvantagem do gem5 é que ele é muito mais lento que o QEMU; a simulação é mais detalhada.
fonte