it-swarm-pt.tech

Como verifico se o KPTI está ativado no Linux?

O FAQ do ataque de fusão diz que o KPTI é a correção para o Linux. Como verifico se o KPTI está em execução/ativado?

25
Shelvacu

Coisas que indicam o estado do KPTI:

  • Nos kernels padrão, as strings Kernel/User page tables isolation: enabled ou Kernel/User page tables isolation: force enabled on command line na saída dmesg significa que o kernel está executando o isolamento da tabela de páginas do kernel. A última mensagem adicionalmente significa que o kernel considera que o isolamento da tabela de páginas não é necessário para esta CPU.

  • Em alguns núcleos corrigidos pelo fornecedor (principalmente RedHat e derivativos): um valor diferente de zero em /sys/kernel/debug/x86/pti_enabled. O ausência deste arquivo não significa nada, no entanto: o kernel padrão não o fornece.

  • No kernel 4.14.18 ou mais recente e nas versões correspondentes dos kernels LTS, o conteúdo de /sys/devices/system/cpu/vulnerabilities/meltdown: uma linha que começa com Mitigation: indica que uma atenuação (KPTI, microcódigo ou outra coisa) está em vigor, uma linha começando com Not affected indica que se acredita que a CPU não seja afetada pelo problema, e uma linha que começa com Vulnerable indica que se acredita que a CPU está vulnerável, mas não há uma mitigação ou insuficiente.

Coisas que não indicam o estado do KPTI:

  • Versão do kernel. O kernel 4.14.11 e mais recente, e as versões correspondentes dos kernels 4.1, 4,4 e 4.9 LTS são capazes do KPTI, mas podem ser compilados com ele desabilitado e pode ser desabilitado em tempo de inicialização. Além disso, versões mais antigas que estas não correm risco automaticamente: algumas distribuições suportam os patches do KPTI em kernels mais antigos.

  • bugs : cpu_insecure no /proc/cpuinfo. A presença disso indica que se o kernel é compilado para o isolamento da tabela de páginas e se o isolamento da tabela de páginas não foi desativado no momento da inicialização ou no tempo de execução; será usado o isolamento de tabela. Além disso, não indica que uma CPU é vulnerável ao ataque Meltdown: o kernel 4.14.11 o define para todos os processadores x86, enquanto o kernel 4.14.12 o define para todos os processadores não AMD, mesmo aqueles como o Pentium MMX ou o "Bonnell" Atom CPUs que não são vulneráveis.

  • CONFIG_PAGE_TABLE_ISOLATION=y na configuração do kernel. Isso indica apenas que o kernel é capaz de isolar a tabela de páginas do kernel. O KPTI pode ser desabilitado no momento da inicialização, na linha de comando do kernel, através do nopti ou pti=off opções. Em alguns sistemas, ele pode ser desativado no tempo de execução, escrevendo 0 para /sys/kernel/debug/x86/pti_enabled.

10
Mark

O kernel do Linux registra o status do KPTI na inicialização, portanto, executar o seguinte comando imprimiria o status nos kernels corrigidos. Se não imprimir nada, o KPTI está desativado.

dmesg -wH | grep 'Kernel/User page tables isolation'

O Linux Kernel 4.15rc6 ativou o KPTI (isolamento da tabela de páginas do Kernel) e foi portado para o Linux Kernel 4.14.11 , 4.9.74, 4.4.109, 3.16.52 e 3.2.97 .

Portanto, se você estiver executando alguma dessas versões, o KPTI está em vigor. A maioria das distros (executando qualquer versão do kernel do Linux) enviará uma atualização para o kernel do Linux dentro de um ou dois dias para corrigir o Meltdown e o espectro.

Nota: Adicione o parâmetro pti=off para o GRUB para desativar o KPTI. Para obter informações: https://askubuntu.com/questions/19486/how-do-i-add-a- kernel-boot-parameter

17
Aadhil RF

Em um kernel suportado:

dmesg grep 'Isolamento de tabelas de páginas do kernel/usuário'

resultará em ativado ou desativado.

Se não houver resultado, o kernel não tem suporte para o KPTI.

8
foxer

Verifique a saída do dmesg, como dmesg | grep isolation, para determinar se está ativado para sua máquina em execução.

Alguns detalhes adicionais são mencionados aqui: https://lwn.net/Articles/741878/

  • Haverá uma opção de linha de comando nopti para desativar esse mecanismo no momento da inicialização.
  • Existe a opção do kernel PAGE_TABLE_ISOLATION que ativa os patches do KPTI e, se CONFIG_IKCONFIG estiver ativado, você poderá verificar o kernel em execução por zcat /proc/config.gz | grep CONFIG_PAGE_TABLE_ISOLATION=y
  • Há um sinalizador de recurso X86_BUG_CPU_INSECURE e, se a CPU não for afetada, o isolamento da tabela de páginas será desativado.
3
S. Huber

Verifique se há uma linha contendo Kernel/User page tables isolation na saída dmesg. Mas como o início do buffer de anel do kernel pode não estar mais lá, outra possibilidade é procurar a mesma string em /var/log/kern.log (ou uma de suas versões rotacionadas ou outro arquivo de log).

Observe também que os convidados Xen podem não ter essa linha. Por exemplo, este é o silent_disable caso em Arch/x86/mm/kaiser.c do kernel Debian/stretch (4.9.65-3 + deb9u2):

void __init kaiser_check_boottime_disable(void)
{
[...]
        if (boot_cpu_has(X86_FEATURE_XENPV))
                goto silent_disable;
[...]
disable:
        pr_info("disabled\n");

silent_disable:
        kaiser_enabled = 0;
        setup_clear_cpu_cap(X86_FEATURE_KAISER);
}
3
vinc17

Também estou preocupado com o impacto no desempenho do patch de colapso. Executamos a maior parte da carga de trabalho no Amazon Linux no EC2.

Notei que a atualização mais recente do kernel (compilação 03 jan 2018) - 4.9.70-25.242 inclui todos os patches de colapso a montante (verifique rpm -q --changelog kernel).

Por padrão, o kernel do Amazon Linux 4.9.70-25.242 e posterior habilita o isolamento da tabela de páginas (CONFIG_PAGE_TABLE_ISOLATION=y) então acho que, desde que esse sinalizador seja y, o KPTI está ativado, infelizmente. Ainda não fiz nenhuma comparação de desempenho (deve ser perceptível).

2
Terry Wang