Como verificar se o kernel do Linux está “Retpoline” ativado ou não?

14

Quanto à vulnerabilidade de segurança "Spectre", "Retpoline" foi apresentado para ser uma solução para reduzir o risco. No entanto, eu li uma postagem que mencionou:

If you build the kernel without CONFIG_RETPOLINE, you can't build modules with retpoline and then expect them to load — because the thunk symbols aren't exported.

If you build the kernel with the retpoline though, you can successfully load modules which aren't built with retpoline. (Source)

Existe uma maneira fácil e comum / genérica / unificada de verificar se o kernel é "Retpoline" habilitado ou não? Eu quero fazer isso para que meu instalador possa usar a compilação apropriada do módulo do kernel para ser instalado.

    
por Weishan Yang 05.04.2018 / 16:47

2 respostas

21

Se você estiver usando kernels mainline, ou a maioria dos kernels de distribuições principais, a melhor maneira de verificar o suporte completo à retpolina ( ie o kernel foi configurado com CONFIG_RETPOLINE , e foi construído com um Compilador compatível com retpoline) é procurar por “Retpoline genérica completa” em /sys/devices/system/cpu/vulnerabilities/spectre_v2 . No meu sistema:

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW

Se você quiser testes mais abrangentes, para detectar retpolinas nos kernels sem o arquivo spectre_v2 systree, confira como spectre-meltdown-checker fala sobre coisas.

    
por 05.04.2018 / 16:53
4

A resposta de Stephen Kitt é mais abrangente neste caso específico, porque o suporte à retpolina também precisa de uma nova versão do compilador.

Mas, em geral, a maioria das distribuições tem o arquivo de configuração do kernel disponível em um dos seguintes locais:

  • /boot/config-4.xx.xx-...
  • /proc/config.gz

Então você pode simplesmente zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz

    
por 05.04.2018 / 20:39