Como verificar se o recurso specter retpoline está ativado em minha máquina linux com o kernel 4.14.14?

3

Eu instalei o último kernel estável 4.14.14 do ELRepo que parece ter alguma correção para a vulnerabilidade do Specter. p>

O changelog diz que há alguns CONFIG_RETPOLINE em /boot/config-4.14.14-1.el7.elrepo.x86_64 file que ativa o recurso de mitigação do Spectre e que parece ser sim no meu caso.

Mas quando eu executo este script para verificar o que é fixo, não vejo muita diferença entre a saída no kernel 4.14.13 e 4.14.14. Este recurso de retpolina está realmente habilitado? Em caso afirmativo, como verificar isso?

4.14.13 saída

4.14.14saída

Também estou interessado em informações sobre qual proteção de variante de espectro está disponível em 4.14.14 e nos próximos kernels de recursos.

    
por mchawre 18.01.2018 / 14:21

1 resposta

3

Parece que você fez praticamente tudo que pode no momento com os kernels de baunilha (ou ElRepo).

Os kernels de distribuição, embora possam ser nominalmente mais antigos, podem incluir mais patches de segurança - aqueles que ainda não entraram no kernel vanilla. Em particular, as distribuições corporativas estão atualmente trabalhando duro com informações provavelmente internas dos fabricantes de CPU e seus próprios recursos de desenvolvimento, obtendo as correções em forma de trabalho e liberadas. Nesta situação, o último kernel vanilla não é necessariamente a melhor escolha.

De acordo com a saída do script no kernel 4.14.13, seu processador pode se beneficiar de uma atualização de microcódigo. Um microcódigo atualizado habilitaria o IBRS, que é uma maneira de mitigar a Variante 2. Além disso, para usar o IBRS, seria necessário mais patches do kernel, que estão atualmente sob revisão e podem ou não ser incluídos no kernel 4.15 (e provavelmente retornados para versões antigas do kernel).

Com o 4.14.14, o kernel fornece a opção CONFIG_RETPOLINE , que pode ser usada para atenuar a Variante 2 do Spectre com ou sem o IBRS, mas com a versão atual do compilador ele ainda não pode implementar retpolinas para efeito total. Mas, embora o atual status de retpolina ainda seja vulnerável, é melhor que nada.

A atenuação do Specter Variant 1 também requer modificações no compilador.

Então, você está agora basicamente esperando por uma atualização do compilador C que permita que você (ou ElRepo) compile um kernel com mais instruções LFENCE em locais apropriados, e com uma implementação de retpoline mais rigorosa. Isso mitigaria as duas variantes do Specter, embora as retpolinas completas para o Variant 2 possam consumir algum desempenho da CPU.

Em segundo lugar, você está esperando por uma atualização de microcódigo (livre de bugs) para a sua CPU que permitiria que o IBRS e uma atualização do kernel realmente a usassem. Isso poderia vir ao longo de uma atualização de BIOS / firmware, ou você poderia ter o Linux instalar o microcódigo atualizado na inicialização.

Atualização: O Debian forneceu pacotes de compiladores atualizados com a funcionalidade completa de retpolina integrada. Para o Debian 8 (jessie), gcc-4.9 com retpoline backports foi lançado em 2018-02-17, e para o Debian 9 (stretch), gcc-6 com backports retpoline foi lançado em 2018-02-22.

Também em 2018-02-22, o Debian lançou uma atualização do kernel para o Debian 9 com mitigação completa de retpolina para o Specter Variant 2 e um array_index_mask_nospec mitigação para o Specter Variant 1. Então, um conjunto completo de atenuações do Specter agora está disponível no Debian. 9, sem necessidade de atualizações de BIOS / microcódigo.

Alguns testes sugerem que essa mitigação de retpolina na verdade tem um impacto significativamente menor no desempenho do que o baseado em microcódigo oferecido pela Intel.

Portanto, o esforço de backport para os recursos necessários do compilador está em andamento. Infelizmente, a versão padrão do compilador para RHEL / CentOS 7 é gcc-4.8.5 : a disponibilidade de patches de backport para gcc-4.9 pode ser de alguma ajuda, mas ainda é necessário mais trabalho para obter os recursos necessários do compilador backported até gcc-4.8.5 .

Em 2018-02-20, a Intel publicou um conjunto de recomendações sobre atualizações de microcódigo para vários modelos de processadores . Ele também lista as versões de microcódigo lançadas em janeiro e que, desde então, são consideradas com bugs e, consequentemente, recomenda que qualquer implementação dessas versões de microcódigo específicas seja interrompida .

    
por 18.01.2018 / 14:54