O que a seção “bugs” de / proc / cpuinfo realmente mostra?

16

Em um sistema Debian Stretch e testing / Buster com um kernel atual e um microcódigo instalado, ainda vejo o colapso e o espectro listados como erros em /proc/cpuinfo .

No entanto, a execução do spectre-meltdown-checker não é vulnerável.

Então, estou me perguntando o que /proc/cpuinfo mostra. Estas são apenas as vulnerabilidades para este cpu e serão sempre listadas apesar de ter um sistema com patches?

    
por hurrbert 15.07.2018 / 15:00

2 respostas

18

A intenção do campo "bugs" em /proc/cpuinfo é descrita na mensagem de commit que o introduziu :

x86/cpufeature: Add bug flags to /proc/cpuinfo

Dump the flags which denote we have detected and/or have applied bug workarounds to the CPU we're executing on, in a similar manner to the feature flags.

The advantage is that those are not accumulating over time like the CPU features.

Anteriormente, os bugs de hardware detectados pelo kernel eram listados como separar características ( por exemplo o infame F00F bug, que possui sua própria entrada f00f_bug em /proc/cpuinfo em sistemas x86 de 32 bits). A entrada "bugs" foi introduzida para mantê-las em um único recurso em andamento, no mesmo estilo das flags de CPU x86 .

No que diz respeito às entradas na prática, como você pode ver na mensagem, tudo o que é garantido é que o kernel detectou um bug de hardware. Você precisará procurar em outro lugar (mensagens de inicialização ou entradas específicas de /proc ou /sys entradas, como os arquivos em /sys/devices/system/cpu/vulnerabilities/ ) para determinar se os problemas foram resolvidos.

A utilidade das entradas de "bugs" é limitada de duas maneiras. A primeira é que os negativos verdadeiros não podem ser distinguidos dos desconhecidos: se o campo não especificar “cpu_meltdown”, você não pode saber (apenas do campo) se isso significa que o kernel não sabe sobre o Meltdown, ou que sua CPU não é afetada pelo Meltdown. A segunda é que a detecção pode ser simplista demais; ele erra por precaução, então pode relatar que sua CPU está vulnerável quando não está. Como a "detecção" é orientada pela tabela, sua precisão depende de qual versão do kernel você está executando.

No caso de erros de Meltdown e Spectre, o processo de detecção que alimenta os valores em /proc/cpuinfo funciona da seguinte forma , em x86:

por 15.07.2018 / 18:19
10

As vulnerabilidades do Meltdown / Specter estão no design / arquitetura do chipset da CPU e, além de comprar um novo hardware futuro, os patches são uma boa ilusão de segurança a longo prazo . Novos métodos de explorar as falhas podem surgir ao longo do tempo, capazes de contornar os patches atuais.

Em suma, os patches de software / microcódigo atuais mitigam os problemas contra métodos conhecidos da família de explorações Specter / Meltdown, mas não resolvem os problemas subjacentes de design de CPU que os permitem em primeiro lugar. Os afetados (várias gerações) de CPUs não deixaram de ser vulneráveis a longo prazo (e provavelmente nunca serão).

No entanto, como @Gilles afirma corretamente, ter esse aviso não significa que os métodos atuais conhecidos de Specter / Meltdown funcionarão; eles não funcionarão se os patches estiverem instalados.

No caso mencionado na questão, o kernel está verificando apenas os modelos de CPU que são conhecidos por serem afetados por Specter / Meltdown (todas as CPUs x86 por enquanto, se estivermos falando apenas de x86) e, portanto, cpu-insecure sendo listado na seção / linha do bug em /proc/cpuinfo .

Go check your /proc/cpuinfo. It will contain cpu_insecure if your kernel has the KPTI patch

I've found that the KPTI patch has this piece of code:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

And after the kernel update, you get:

bugs      : cpu_insecure

PS. Já havia uma rodada de atualizações para um novo método para explorar os "bugs" do Spectre / Meltdown. Provavelmente não será a última vez.

    
por 15.07.2018 / 15:15

Tags