O pesquisador de segurança do Google, Tavis Ormandy, identificou uma nova vulnerabilidade (CVE-2023-23583) em processadores Intel, codinome Reptar, que representa uma ameaça principalmente para sistemas em nuvem que executam máquinas virtuais pertencentes a diferentes usuários. A vulnerabilidade pode causar o travamento ou a falha do sistema ao executar determinadas operações em sistemas convidados sem privilégios de administrador. Um utilitário que cria as condições para a exploração foi publicado para fins de teste.
Teoricamente, a vulnerabilidade poderia ser explorada para escalar privilégios do anel 3 para o anel 0 (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. Testes internos na Intel também demonstraram o potencial de exploração da vulnerabilidade para escalonamento de privilégios sob certas condições.
Segundo o pesquisador, a vulnerabilidade afeta as famílias de processadores Intel Ice Lake, Rocket Lake, Tiger Lake, Raptor Lake, Alder Lake e Sapphire Rapids. O relatório da Intel observa que o problema afeta os processadores Intel Core de 10ª geração (Ice Lake) e os processadores Xeon Scalable de terceira geração, bem como os processadores Xeon E/D/W (Ice Lake, Skylake, Haswell, Broadwell, Skylake, Sapphire Rapids, Emerald Rapids, Cascade Lake, Cooper Lake, Comet Lake, Rocket Lake) e os processadores Atom (Apollo Lake, Jasper Lake, Arizona Beach, Alder Lake, Parker Ridge, Snow Ridge, Elkhart Lake e Denverton). A vulnerabilidade foi corrigida na atualização de microcódigo 20231114 de ontem.
A vulnerabilidade é causada por uma determinada condição microarquitetural em que a execução da instrução "REP MOVSB" é codificada com um prefixo "REX" redundante, levando a um comportamento indefinido. O problema foi descoberto durante testes com prefixos redundantes, que teoricamente deveriam ser ignorados, mas na prática causavam efeitos estranhos, como ignorar saltos incondicionais e interromper o salvamento de ponteiros nas instruções xsave e call. Análises posteriores revelaram que a adição de um prefixo redundante à instrução "REP MOVSB" corrompe o conteúdo do ROB (ReOrder Buffer), que é usado para a ordenação de instruções.
Acredita-se que o erro seja causado por um cálculo incorreto do tamanho da instrução MOVSB, o que leva a uma interrupção no endereçamento das instruções escritas no buffer ROB após o MOVSB com um prefixo excessivo e a um desalinhamento do ponteiro de instrução. Essa dessincronização pode se limitar a interromper cálculos intermediários com posterior restauração de um estado consistente. No entanto, se a falha for acionada simultaneamente em vários núcleos ou threads SMT, pode causar corrupção microarquitetural suficiente para provocar uma falha completa.
Fonte: opennet.ru
