.
Usuários de processador AMD, você tem outra vulnerabilidade de vazamento de dados para lidar: como o Zenbleed, esta última falha pode ser para roubar dados confidenciais de uma máquina vulnerável em execução.
A falha (CVE-2023-20569), apelidado de Inception em referência ao filme de Christopher Nolan sobre a manipulação dos sonhos de uma pessoa para alcançar um resultado desejado no mundo real, foi divulgado por acadêmicos da ETH Zurique esta semana.
E sim, é outro canal secundário baseado em execução especulativa que malware ou um usuário mal-intencionado conectado pode abusar para obter senhas, segredos e outros dados que deveriam estar fora dos limites.
O Inception utiliza uma vulnerabilidade divulgada anteriormente junto com um novo tipo de ataque de execução transitória, que os pesquisadores chamam de treinamento em execução transitória (TTE), para vazar informações de um kernel do sistema operacional a uma taxa de 39 bytes por segundo em hardware vulnerável. Nesse caso, os sistemas vulneráveis abrangem praticamente toda a linha de CPUs da AMD desde 2017, incluindo seus mais recentes processadores Zen 4 Epyc e Ryzen.
Apesar do raio de explosão potencialmente massivo, a AMD está minimizando a ameaça ao mesmo tempo em que lança atualizações de microcódigo para chips Zen mais recentes para mitigar o risco. “A AMD acredita que esta vulnerabilidade é potencialmente explorável apenas localmente, como por meio de malware baixado”, disse a empresa em um comunicado público. divulgaçãoque classifica o Inception como “médio” em gravidade.
Os processadores Intel não foram considerados vulneráveis ao Inception, mas isso não significa que eles estejam totalmente livres. Chipzilla está lutando com seu próprio ataque de canal lateral separado divulgado esta semana chamado Queda.
Como funciona o início
Pelo que entendemos, a exploração bem-sucedida do Inception tira proveito do fato de que, para que as CPUs modernas alcancem o desempenho que obtêm, os núcleos do processador precisam cortar custos.
Em vez de executar as instruções estritamente em ordem, o núcleo da CPU tenta prever quais serão necessárias e as executa fora da sequência, se possível, uma técnica chamada de execução especulativa. Se o núcleo adivinhar incorretamente, ele descarta ou desenrola os cálculos que não deveria ter feito. Isso permite que o núcleo continue trabalhando sem ter que esperar a conclusão de operações anteriores. A execução especulativa dessas instruções também é conhecida como execução transiente, e quando isso acontece, uma janela transiente é aberta.
Normalmente, esse processo oferece vantagens substanciais de desempenho, e refinar esse processo é uma das várias maneiras pelas quais os projetistas de CPU obtêm ganhos de instrução por clock geração após geração. No entanto, como vimos em ataques de canal lateral anteriores, como Meltdown e Spectre, a execução especulativa pode ser abusada para fazer o núcleo começar a vazar informações que, de outra forma, não deveriam para os observadores na mesma caixa.
Inception é uma reviravolta nesse vetor de ataque e envolve duas etapas. O primeiro tira proveito de uma vulnerabilidade divulgada anteriormente chamada Phantom Execution (CVE-2022-23825) que permite que um usuário sem privilégios acione uma previsão incorreta — basicamente fazendo o núcleo adivinhar o caminho de execução incorretamente — para criar uma janela de execução transitória sob demanda.
Essa janela serve como cabeça de ponte para um ataque TTE. Em vez de vazar informações da janela inicial, o TTE injeta novas previsões incorretas, que acionam mais janelas transitórias futuras. Isso, explicam os pesquisadores, causa um estouro no buffer da pilha de retorno com um alvo controlado pelo invasor.
“O resultado dessa percepção é o Inception, um ataque que vaza dados arbitrários de um processo não privilegiado em todas as CPUs AMD Zen”, escreveram eles.
Em um vídeo publicado junto com a divulgação e incluído abaixo, a equipe suíça demonstra esse ataque vazando o hash da conta root de /etc/shadow
em uma CPU Ryzen 7700X baseada em Zen 4 com todas as mitigações do Spectre habilitadas.
Você pode encontrar uma explicação mais completa do Inception, incluindo a metodologia dos pesquisadores em um artigo aqui [PDF]. Foi escrito por Daniël Trujillo, Johannes Wikner e Kaveh Razavi, da ETH Zurich. Eles também compartilharam código de exploração de prova de conceito aqui.
Mitigando o risco
De acordo com a equipe da uni, para mitigar totalmente essa ameaça, “o estado do preditor de ramificação deve ser totalmente liberado durante a alternância entre contextos de desconfiança”. Na prática a situação é um pouco complexa, e é assim que a entendemos, a julgar pelo correção do kernel Linux que aborda o Inception:
- Você pode instalar uma atualização de microcódigo da AMD (empacotada como uma atualização do BIOS, veja a divulgação acima) que protege apenas os processos do usuário de outros processos do usuário e máquinas virtuais de outras máquinas virtuais no mesmo host. Os núcleos de CPU Zen 3 e 4 precisam dessa atualização de microcódigo; Zen 1 e 2 não, de acordo com a AMD.
- Você pode instalar a atualização do microcódigo e habilitar o chamado recurso RET seguro no kernel que faz o que foi dito acima, além de proteger o kernel dos processos do usuário e hosts das máquinas virtuais convidadas. Este é o padrão.
- Existem proteções no nível do IBPB que você pode optar, incluindo uma para provedores de nuvem que apenas protege os hosts dos convidados.
O patch do kernel do Linux observa: “A mitigação funciona garantindo que todas as instruções RET sejam especuladas em um local controlado, semelhante a como a especulação é controlada na sequência retpoline”.
Como dissemos, as CPUs Zen 3 e 4 – isso inclui os processadores Epyc 3 e 4 e Ryzen 5000 e 7000 – precisarão de uma atualização de microcódigo porque aparentemente não possuem suporte de hardware necessário para liberar todo o estado do preditor de ramificação. A AMD já começou a distribuir essas correções de microcódigo para os fabricantes de sistemas distribuirem aos clientes para resolver a vulnerabilidade. A má notícia para os administradores de sistema é que isso pode significar algum tempo de inatividade para aplicar a atualização do microcódigo do BIOS.
Os acadêmicos alertaram para um impacto de desempenho potencialmente considerável, dependendo da situação, dessas mitigações. O impacto real pode depender de sua carga de trabalho e se você acha que vale a pena, considerando quem usa seus sistemas e o que eles executam neles.
Em uma declaração para Strong The Onea AMD disse que “qualquer impacto no desempenho variará dependendo da carga de trabalho e da configuração do sistema, mas a AMD espera que os impactos no desempenho do patch de microcódigo ou atualização do BIOS sejam mínimos. Para o desempenho do Linux … ainda estamos avaliando essa mitigação.”
Portanto, nosso conselho: obtenha a atualização do microcódigo, se necessário, e instale um kernel Linux corrigido e veja como ele se sai. Se você não estiver usando o Linux, pergunte ao fabricante do sistema operacional sobre isso ou, pelo menos, verifique se há atualizações.
No mês passado, soubemos Zenbleed, que pode ser explorado por usuários desonestos e malware para roubar senhas, chaves criptográficas e outros segredos em sistemas baseados em AMD Zen 2 mais antigos. Embora de escopo mais restrito, o Zenbleed é potencialmente mais perigoso devido à sua facilidade de implantação. ®
Bootnote
Falando em AMD, esta semana outro bug do processador Zen 1 foi resolvido com um kernel Linux correção: desta vez, “sob certas circunstâncias, uma divisão inteira por 0 que falha, pode deixar dados de quociente obsoletos de uma operação de divisão anterior em microarquiteturas Zen 1.”
Sim, uma falha de divisão por zero pode acabar vazando algum valor.
.