.
A vulnerabilidade do Spectre que assombra os fabricantes de hardware e software desde 2018 continua a desafiar os esforços para enterrá-la.
Na quinta-feira, Eduardo (sirdarckcat) Vela Nava, da equipe de resposta de segurança de produtos do Google, divulgado uma falha relacionada ao Spectre na versão 6.2 do kernel do Linux.
O bug, designado de gravidade média, foi inicialmente relatado aos provedores de serviços em nuvem – aqueles com maior probabilidade de serem afetados – em 31 de dezembro de 2022 e foi corrigido no Linux em 27 de fevereiro de 2023.
“O kernel falhou em proteger os aplicativos que tentaram se proteger contra o Spectre v2, deixando-os abertos a ataques de outros processos em execução no mesmo núcleo físico em outro hyperthread”, explica a divulgação da vulnerabilidade. A consequência desse ataque é a possível exposição de informações (por exemplo, vazamento de chaves privadas) por meio desse problema pernicioso.
o apelido Espectro [PDF] descreve um conjunto de vulnerabilidades que abusam da execução especulativa, uma otimização de desempenho do processador em que as instruções potenciais são executadas com antecedência para economizar tempo.
É o tempo, no entanto, que anima Spectre. O Spectre v2 – a variante implicada nesta vulnerabilidade específica – depende de canais laterais de temporização para medir as taxas de previsão incorreta da previsão de ramificação indireta para inferir o conteúdo da memória protegida. Isso está longe de ser ideal em um ambiente de nuvem com hardware compartilhado.
Um pouco depois Strong The One relatado pela primeira vez na luta para corrigir os bugs Meltdown e Spectre, a Intel publicou detalhes sobre especulação restrita de ramificação indireta (IBRS), um mecanismo para restringir a especulação de desvios indiretos, que informam aos processadores para iniciar a execução de instruções em um novo local.
ofertas do IBRS uma defesa contra Spectre v2, que a Intel chama de Branch Target Injection. Branch Target Injection é uma técnica para treinar preditores de ramificação para executar especulativamente certas instruções a fim de inferir dados no cache do processador usando um canal lateral de temporização.
O IBRS vem em dois tipos: básico (legado) e aprimorado. E é o sabor básico que se mostrou desagradável do ponto de vista da segurança.
Os caçadores de bugs que identificaram o problema descobriram que os processos de espaço de usuário do Linux para se defender contra o Spectre v2 não funcionavam em VMs de “pelo menos um grande provedor de nuvem”.
Como a divulgação descreve, sob o IBRS básico, o 6.2 kernel tinha lógica que optou por não usar STIBP (Single Thread Indirect Branch Preditors), uma defesa contra o compartilhamento da previsão de desvio entre processadores lógicos em um núcleo.
“O bit IBRS protege implicitamente contra injeção de alvo de ramificação cruzada”, explica o relatório de bug. “No entanto, com o IBRS herdado, o bit IBRS foi limpo ao retornar ao espaço do usuário, devido a motivos de desempenho, que desabilitaram o STIBP implícito e deixaram os encadeamentos do espaço do usuário vulneráveis à injeção de alvo de ramificação cruzada contra a qual o STIBP protege”.
Strong The One entende que o problema surgiu de um mal-entendido do IBRS aprimorado, que não precisa do STIBP para se proteger contra outro encadeamento (ataques multiencadeados simultâneos).
A correção removeu o IBRS básico do spectre_v2_in_ibrs_mode()
marque, para manter o STIBP ativado por padrão.
A falha fantasmagórica foi identificada por Rodrigo Rubira Branco (BSDaemon), quando estava no Google, e José Luiz. KP Singh, parte da equipe de kernel do Google, que trabalhou na correção e coordenou os mantenedores do Linux para resolver o problema.
®
.