Neste final de semana houve uma nova “correção” do kernel Linux que agora habilita o STIBP ao usar o modo IBPB para mitigações Retbleed em processadores AMD. Em outras palavras, mais proteções são necessárias para esse modo aprimorado de mitigação do Retbleed.
No mês passado, o Retbleed foi tornado público como um novo ataque de execução especulativa explorando instruções de retorno. O Retbleed afeta as CPUs Intel do Core 8th Gen e anteriores, bem como os processadores AMD Zen 1, Zen 1+ e Zen 2. As mitigações do kernel do Retbleed Linux adicionadas no mês passado induzem impactos de desempenho para a Intel e também é doloroso para a AMD, especialmente nas CPUs Zen 1 mais antigas.
Se optar pela mitigação mais segura da barreira de previsão de ramificação indireta “IBPB”, que também pode mitigar as janelas de especulação curtas nos limites básicos do bloco, em vez de apenas o padrão “unret”, agora acontece um mês depois Preditores de ramificação indireta de thread único “STIBP” também deve ser habilitado.
Linux recebe novo patch para corrigir mitigação AMD Retbleed
A proteção baseada em IBPB para Retbleed é considerada a mais segura, mas também o maior impacto no desempenho e, portanto, não é o comportamento padrão. Com a nova “correção” do kernel Linux de hoje, se for para a proteção baseada em IBPB, agora existe um modo “ibpb,nosmt” em que o SMT (Simultaneous Multi-Threading) será desabilitado se o suporte STIBP não estiver disponível no sistema fornecido.
Essa ativação do STIBP no modo de mitigação do IBPB Retbleed é apenas para os processadores AMD, aparentemente agora sendo determinado que o IBPB sozinho não é suficiente para proteger contra o Retbleed nos processadores AMD Zen 1 / 1+ / 2. A mensagem “x86 fix” na lista de discussão nesta manhã de sábado por Ingo Molnar simplesmente resumiu como:
Corrige o modo de operação “IBPB mitigado RETBleed” em CPUs AMD (não ativado por padrão), que também precisam de STIBP habilitado (se disponível) para ser ‘100% seguro’ mesmo nas janelas de especulação mais curtas.
O patch de código também adiciona à documentação:
As mitigações de UNRET e IBPB baseadas em AMD sozinhas não impedem que threads irmãos influenciem as previsões de outros threads irmãos. Por esse motivo, o STIBP é usado em processadores que o suportam e atenua o SMT em processadores que não o suportam.
Novamente, este modo retbleed=ibpb não é o padrão atualmente no Linux para CPUs AMD Zen mais antigas, mas é o mais seguro e pesado para o desempenho, agora ainda mais pesado com o STIBP também sendo forçado para CPUs capazes. Parece que estarei executando alguns novos benchmarks de mitigação do Retbleed AMD Linux em breve, analisando o impacto no desempenho em diferentes caminhos de mitigação.
Essa correção de segurança faz parte da linha principal neste fim de semana para o Linux 6.0-rc1 e provavelmente começará a aparecer nas versões estáveis do kernel na próxima semana.