O que a seção "bugs" de / proc / cpuinfo realmente mostra?
23
Em um sistema Debian Stretch e testing / Buster com um kernel atual e microcódigo instalado, ainda vejo o colapso e o espectro listados como bugs /proc/cpuinfo.
No entanto, executando os spectre-meltdown-checkershows não vulneráveis.
Então, eu estou querendo saber o /proc/cpuinfoque mostra. Essas são apenas as vulnerabilidades deste CPU e serão sempre listadas apesar de haver um sistema corrigido?
A intenção do campo "bugs" /proc/cpuinfoé descrita na mensagem de confirmação que o introduziu :
x86/cpufeature: Adicione sinalizadores de bug ao /proc/cpuinfo
Despeje os sinalizadores que indicam que detectamos e / ou aplicamos soluções alternativas de erros à CPU na qual estamos executando, de maneira semelhante aos sinalizadores de recursos.
A vantagem é que eles não estão se acumulando ao longo do tempo, como os recursos da CPU.
Anteriormente, os bugs de hardware detectados pelo kernel eram listados como recursos separados ( por exemplo, o infame bug F00F, que tem sua própria f00f_bugentrada nos /proc/cpuinfosistemas x86 de 32 bits). A entrada "bugs" foi introduzida para mantê-los em um único recurso, no mesmo estilo dos sinalizadores da CPU x86 .
Quanto ao significado das entradas na prática, como você pode ver na mensagem, tudo o que é garantido é que o kernel detectou um erro de hardware. Você precisará procurar em outro lugar (mensagens de inicialização ou /procentradas específicas ou /sysentradas como os arquivos /sys/devices/system/cpu/vulnerabilities/) para determinar se os problemas foram tratados.
A utilidade das entradas "bugs" é limitada de duas maneiras. A primeira é que os verdadeiros negativos não podem ser distinguidos dos desconhecidos: se o campo não especificar "cpu_meltdown", você não poderá saber (apenas a partir 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 muito simplista; cometer erros por precaução, por isso pode relatar que sua CPU está vulnerável quando não está. Como a "detecção" é orientada por tabela, sua precisão depende de qual versão do kernel você está executando.
No caso dos erros Meltdown e Spectre, o processo de detecção que alimenta os valores /proc/cpuinfofunciona da seguinte maneira , em x86:
se a CPU não realizar nenhuma especulação (classe 486, classe Pentium, alguns átomos), não será sinalizada como afetada por Meltdown ou Spectre;
todas as CPUs restantes são sinalizadas como afetadas pelas variantes 1 e 2 do Spectre (independentemente da revisão do microcódigo etc.);
No caso de espectro e colapso, eles nem são detectados, mas apenas assumidos . Eu tenho um x86 em ordem que também não é afetado, mas o kernel apenas relata que é assim mesmo, por causa de uma regra codificada que basicamente diz que "qualquer CPU Intel mais antiga que X sem um patch de microcódigo aplicado é vulnerável ao colapso".
R ..
2
@R .. sua CPU está incluída nas tabelas em ordem do kernel? (Procure "cpu_no_speculation" aqui para ver as tabelas mais recentes.) Esse é realmente um dos problemas com a entrada "bugs" wrt. Meltdown, Spectre e companhia, sua precisão depende realmente de quão recente é o seu kernel, uma vez que a "detecção" é orientada por tabelas.
Stephen Kitt
Não, é um Centerton Bonnell e está faltando a partir daí. Vou ver como enviar um patch.
R ..
Alguém sabe se isso ainda está correto quando as atualizações de microcódigo foram aplicadas durante a inicialização, mas após o carregamento do kernel?
Bachsau
12
As vulnerabilidades Meltdown / Spectre estão no design / arquitetura do chipset da CPU e, além de comprar novos hardwares futuros, os patches são uma boa ilusão de segurança a longo prazo . Novos métodos de exploração das falhas podem surgir com o tempo, capazes de ignorar os patches atuais.
Em resumo, os patches de software / microcódigo atuais atenuam os problemas dos métodos conhecidos da família de explorações Spectre / Meltdown, mas não resolvem os problemas subjacentes de design da 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 o serão).
No entanto, como o @Gilles afirma corretamente, ter esse aviso não significa que as explorações atuais conhecidas dos métodos Spectre / Meltdown funcionarão; eles não funcionarão se os patches estiverem instalados.
No caso mencionado na pergunta, o kernel está apenas checando os modelos de CPU afetados pelo Spectre / Meltdown (todas as CPUs x86 por enquanto, se falamos apenas do x86) e, portanto, cpu-insecureainda está listado na seção de erros / line in /proc/cpuinfo.
Vá verificar o seu /proc/cpuinfo. Ele conterá cpu_insecure se o seu kernel tiver o patch KPTI
Descobri que o patch KPTI tem este pedaço de código:
/* Assume for now that ALL x86 CPUs are insecure */
setup_force_cpu_bug(X86_BUG_CPU_INSECURE);
E após a atualização do kernel, você obtém:
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 exemplo, se você pode adiar a compra de hw por um tempo, aguarde uma nova geração de CPUs. Minha bola de cristal me diz que teremos muitos servidores de segunda mão vendendo amendoins a médio prazo.
Rui F Ribeiro
Os erros da CPU são listados /proc/cpuinfomesmo que sejam totalmente mitigados por um patch de software. A presença deles não significa que seu sistema esteja vulnerável a esse bug específico.
Gilles 'SO- stop be evil'
@Gilles concedido, você não poderá aplicar explorações conhecidas. No entanto, já tínhamos uma série de explorações em torno da 1ª geração de patches, e eu me atreveria a dizer que há muitos interesses comerciais por aí, silenciando os críticos de que essa é uma falha de design fundamental que forçará uma grande reformulação da CPU.
Rui F Ribeiro
1
Isso é verdade para as explorações do tipo Spectre / Meltdown, são questões fundamentais de design que continuarão dando. Mas você escreveu que isso é verdade nos bugsshows da linha, e isso é errado. A maioria dos bugs de design de CPU possui uma solução completa de software que custa apenas um pouco de desempenho. Se o kernel aplicar a solução alternativa, o bug será inofensivo.
Gilles 'SO- stop be evil'
1
@Rui oh, acho que não me expressei com clareza suficiente - quis dizer que o artigo não respondeu à pergunta que seu próprio título fazia, não que não respondesse a essa pergunta ;-). (Como, o título do artigo é “Como o Specter bug-quebrando indústria permaneceu secreto durante sete meses”, mas o artigo não explica como IMO.)
As vulnerabilidades Meltdown / Spectre estão no design / arquitetura do chipset da CPU e, além de comprar novos hardwares futuros, os patches são uma boa ilusão de segurança a longo prazo . Novos métodos de exploração das falhas podem surgir com o tempo, capazes de ignorar os patches atuais.
Em resumo, os patches de software / microcódigo atuais atenuam os problemas dos métodos conhecidos da família de explorações Spectre / Meltdown, mas não resolvem os problemas subjacentes de design da 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 o serão).
No entanto, como o @Gilles afirma corretamente, ter esse aviso não significa que as explorações atuais conhecidas dos métodos Spectre / Meltdown funcionarão; eles não funcionarão se os patches estiverem instalados.
No caso mencionado na pergunta, o kernel está apenas checando os modelos de CPU afetados pelo Spectre / Meltdown (todas as CPUs x86 por enquanto, se falamos apenas do x86) e, portanto,
cpu-insecure
ainda está listado na seção de erros / line in/proc/cpuinfo
.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.
fonte
/proc/cpuinfo
mesmo que sejam totalmente mitigados por um patch de software. A presença deles não significa que seu sistema esteja vulnerável a esse bug específico.bugs
shows da linha, e isso é errado. A maioria dos bugs de design de CPU possui uma solução completa de software que custa apenas um pouco de desempenho. Se o kernel aplicar a solução alternativa, o bug será inofensivo.