Vulnerabilidade Reptar afetando processadores Intel

Tavis Ormandy, pesquisador de segurança do Google, identificou uma nova vulnerabilidade (CVE-2023-23583) nos processadores Intel, de codinome Reptar, que representa principalmente uma ameaça aos sistemas em nuvem que executam máquinas virtuais de diferentes usuários. A vulnerabilidade permite que o sistema trave ou trave quando determinadas operações são executadas em sistemas convidados sem privilégios. Para testar seus sistemas, foi publicado um utilitário que cria condições para a manifestação de vulnerabilidades.

Teoricamente, a vulnerabilidade pode ser usada para escalar privilégios do terceiro para o anel de proteção zero (CPL0) e escapar de ambientes isolados, mas esse cenário ainda não foi confirmado na prática devido às dificuldades de depuração no nível microarquitetural. Uma análise interna da Intel também mostrou o potencial de exploração da vulnerabilidade para aumentar privilégios sob certas condições.

Segundo o pesquisador, a vulnerabilidade está presente nas famílias de processadores Intel Ice Lake, Rocket Lake, Tiger Lake, Raptor Lake, Alder Lake e Sapphire Rapids. O relatório da Intel menciona que o problema aparece a partir da 10ª geração (Ice Lake) de processadores Intel Core e da terceira geração de processadores Xeon Scalable, bem como nos processadores Xeon E/D/W (Ice Lake, Skylake, Haswell, Broadwell , Skylake, Sapphire Rapids, Emerald Rapids, Cascade Lake, Cooper Lake, Comet Lake, Rocket Lake) e Atom (Apollo Lake, Jasper Lake, Arizona Beach, Alder Lake, Parker Ridge, Snow Ridge, Elkhart Lake e Denverton). A vulnerabilidade em questão foi corrigida na atualização do microcódigo 20231114 de ontem.

A vulnerabilidade é causada pelo fato de que, sob certas circunstâncias microarquiteturais, a execução da instrução “REP MOVSB” é codificada com um prefixo “REX” excessivo, o que leva a um comportamento indefinido. O problema foi descoberto durante testes de prefixos redundantes, que em teoria deveriam ser ignorados, mas na prática levaram a efeitos estranhos, como ignorar ramificações incondicionais e interromper o salvamento de ponteiros nas instruções xsave e call. Análises adicionais mostraram que adicionar um prefixo redundante à instrução "REP MOVSB" causa corrupção do conteúdo do buffer ROB (ReOrder Buffer) usado para ordenar instruções.

Acredita-se que o erro seja causado por um cálculo incorreto do tamanho da instrução “MOVSB”, o que leva à violação do endereçamento das instruções escritas no buffer ROB após o MOVSB ​​com prefixo excessivo, e o deslocamento do ponteiro de instrução. Tal dessincronização pode ser limitada à interrupção de cálculos intermediários com posterior restauração do estado integral. Mas se você travar vários núcleos ou threads SMT ao mesmo tempo, poderá danificar o estado da microarquitetura o suficiente para travar.

Fonte: opennet.ru

Adicionar um comentário