
Verificador de vulnerabilidade/mitigação para Reptar, Downfall, Zenbleed, ZombieLoad, RIDL, Fallout, Foreshadow, Spectre, Meltdown para Linux & BSD
Um script shell autossuficiente para avaliar a resiliência do seu sistema contra as várias CVEs de execução transiente publicadas desde o início de 2018, e orientá-lo sobre como mitigá-las.
| CVE | Nome | Aliases |
|---|
| CVE-2017-5753 | Contorno de Verificação de Limite | Spectre V1 |
| CVE-2017-5715 | Injeção de Alvo de Desvio | Spectre V2 |
| CVE-2017-5754 | Carga de Cache de Dados Desonesta | Meltdown |
| CVE-2018-3640 | Leitura de Registro do Sistema Desonesta | Variante 3a |
| CVE-2018-3639 | Desvio Especulativo de Armazenamento | Variante 4, SSB |
| CVE-2018-3615 | Falha de Terminal L1 | Foreshadow (SGX) |
| CVE-2018-3620 | Falha de Terminal L1 | Foreshadow-NG (OS/SMM) |
| CVE-2018-3646 | Falha de Terminal L1 | Foreshadow-NG (VMM) |
| CVE-2018-12126 | Amostragem de Dados do Buffer de Armazenamento Microarquitetural | MSBDS, Fallout |
| CVE-2018-12127 | Amostragem de Dados da Porta de Carga Microarquitetural | MLPDS, RIDL |
| CVE-2018-12130 | Amostragem de Dados do Buffer de Preenchimento Microarquitetural | MFBDS, ZombieLoad |
| CVE-2018-12207 | Exceção de Verificação de Máquina em Alterações de Tamanho de Página | iTLB Multihit, No eXcuses |
| CVE-2019-11091 | Amostragem de Dados Microarquiteturais de Memória Não-Cacheável | MDSUM, RIDL |
| CVE-2019-11135 | Abandono Assíncrono TSX | TAA, ZombieLoad V2 |
| CVE-2020-0543 | Amostragem de Dados do Buffer de Registro Especial | SRBDS, CROSSTalk |
| CVE-2022-21123 | Leitura de Dados de Buffers Compartilhados | SBDR, MMIO Stale Data |
| CVE-2022-21125 | Amostragem de Dados de Buffers Compartilhados | SBDS, MMIO Stale Data |
| CVE-2022-21166 | Gravação Parcial de Registro de Dispositivo | DRPW, MMIO Stale Data |
| CVE-2022-29900 | Execução de Código Especulativo Arbitrário com Instruções de Retorno | Retbleed (AMD) |
| CVE-2022-29901 | Execução de Código Especulativo Arbitrário com Instruções de Retorno | Retbleed (Intel), RSBA |
| CVE-2022-40982 | Amostragem de Dados Gather | Downfall, GDS |
| CVE-2023-20569 | Segurança de Endereço de Retorno | Inception, SRSO |
| CVE-2023-20588 | Vazamento de Dados Especulativo por Divisão por Zero AMD | DIV0 |
| CVE-2023-20593 | Vazamento de Informações Entre Processos | Zenbleed |
| CVE-2023-23583 | Problema de Prefixo Redundante | Reptar |
| CVE-2023-28746 | Amostragem de Dados do Arquivo de Registro | RFDS |
| CVE-2024-28956 | Seleção Indireta de Alvo | ITS |
| CVE-2024-36350 | Ataque de Escalonador Transiente, Fila de Armazenamento | TSA-SQ |
| CVE-2024-36357 | Ataque de Escalonador Transiente, L1 | TSA-L1 |
| CVE-2025-40300 | Predição de Desvio Estagnada em Saída de VM | VMScape |
| CVE-2024-45332 | Injeção de Privilégio de Desvio | BPI |
| CVE-2025-54505 | Vazamento de Dados Estagnados do Divisor de Ponto Flutuante AMD Zen1 | FPDSS |
As seguintes entradas são errata de silício ARM64 que o kernel contorna ativamente. Elas não têm CVE atribuída; são rastreadas apenas pelos números de errata da ARM. Selecione-as com --errata <número> ou o mnemônico --variant associado.
| ID | Nome | Núcleos afetados |
|---|---|---|
| CVE-0001-0001 | Corrupção de TLB AT Especulativa (errata 1165522, 1319367, 1319537, 1530923) | Cortex-A55/A57/A72/A76 |
| CVE-0001-0002 | Carga não privilegiada especulativa (errata 2966298, 3117295) | Cortex-A510/A520 |
| CVE-0001-0003 | MSR SSBS não auto-sincronizante (errata 3194386 + irmãos) | Cortex-A76/A77/A78/A78C/A710/A715/A720/A720AE/A725, X1/X1C/X2/X3/X4/X925, Neoverse-N1/N2/N3/V1/V2/V3/V3AE |
Dependendo da sua situação, a tabela abaixo responde se um atacante em uma determinada posição pode extrair dados de um determinado alvo. A coluna "Userland → Kernel" também se aplica dentro de uma VM (userland da VM vs. kernel da VM), pois os mesmos mecanismos de CPU estão em jogo independentemente da virtualização.
| Vulnerabilidade | Userland → Kernel | Userland → Userland | VM → Host | VM → VM | Mitigação |
|---|---|---|---|---|---|
| CVE-2017-5753 (Spectre V1) | 💥 | 💥 | 💥 | 💥 | Recompilar tudo com LFENCE |
| CVE-2017-5715 (Spectre V2) | 💥 | 💥 | 💥 | 💥 | Microcódigo + atualização de kernel (ou retpoline) |
| CVE-2017-5754 (Meltdown) | 💥 | ✅ | ✅ | ✅ | Atualização de kernel |
| CVE-2018-3640 (Variante 3a) | 💥 | ✅ | ✅ | ✅ | Atualização de microcódigo |
| CVE-2018-3639 (Variante 4, SSB) | ✅ | 💥 | ✅ | ✅ | Microcódigo + atualização de kernel |
| CVE-2018-3615 (Foreshadow, SGX) | ✅ (3) | ✅ (3) | ✅ (3) | ✅ (3) | Atualização de microcódigo |
| CVE-2018-3620 (Foreshadow-NG, OS/SMM) | 💥 | ✅ | ✅ | ✅ | Atualização de kernel |
| CVE-2018-3646 (Foreshadow-NG, VMM) | ✅ | ✅ | 💥 | 💥 | Atualização de kernel (ou desabilitar EPT/SMT) |
| CVE-2018-12126 (MSBDS, Fallout) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2018-12127 (MLPDS, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2018-12130 (MFBDS, ZombieLoad) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2018-12207 (iTLB Multihit, No eXcuses) |
💥 Dados podem ser vazados através desta fronteira.
✅ Não afetado neste cenário.
☠️ Negação de serviço (travamento do sistema ou comportamento imprevisível), sem vazamento de dados.
(1) O vazamento entre processos requer que SMT (Hyper-Threading) esteja ativo — atacante e vítima devem compartilhar um núcleo físico.
(2) Apenas vaza a saída de RDRAND/RDSEED, não memória arbitrária; ainda assim permite recuperar material criptográfico de qualquer vítima.
(3) CVE-2018-3615 (Foreshadow SGX) inverte o modelo de confiança normal: o SO lê dados de enclaves SGX. É irrelevante a menos que o sistema execute enclaves SGX, e o atacante já deve ter acesso ao nível de SO.
(4) O vazamento VM→Host se aplica apenas a certos modelos de CPU afetados (Skylake-X, Kaby Lake, Comet Lake). Ice Lake, Tiger Lake e Rocket Lake são afetados apenas para ataques nativos (usuário para kernel), não de convidado para anfitrião.
CVE-2017-5753 — Contorno de Verificação de Limite (Spectre Variante 1)
Um atacante pode treinar o preditor de desvios para prever incorretamente uma verificação de limite, fazendo com que a CPU acesse especulativamente memória fora dos limites. Isso afeta todo software, incluindo o kernel, porque qualquer verificação condicional de limite pode ser potencialmente explorada. A mitigação exige recompilar software e o kernel com um compilador que insira instruções LFENCE (ou barreiras de especulação equivalentes, como array_index_nospec) nas posições adequadas. O impacto no desempenho é desprezível porque as barreiras se aplicam apenas a padrões de código específicos e direcionados.
CVE-2017-5715 — Injeção de Alvo de Desvio (Spectre Variante 2)
Um atacante pode envenenar o Buffer de Alvos de Desvio (BTB) para redirecionar a execução especulativa de desvios indiretos no kernel, vazando memória do kernel. Duas estratégias de mitigação existem: (1) atualizações de microcódigo que fornecem IBRS (Indirect Branch Restricted Speculation), que limpa o estado do preditor de desvios nas transições de privilégio — isso tem um custo de desempenho médio a alto, especialmente em hardware mais antigo; ou (2) retpoline, uma técnica de compilador que substitui desvios indiretos por uma construção que o especulador não pode explorar — isso tem um custo de desempenho menor, mas exige recompilar o kernel e software sensível.
CVE-2017-5754 — Carga de Cache de Dados Desonesta (Meltdown)
Em processadores Intel afetados, um processo de usuário pode ler especulativamente a memória do kernel apesar de não ter permissão. A CPU eventualmente gera uma falha, mas os dados deixam vestígios observáveis no cache. A mitigação é inteiramente do lado do kernel: Isolamento de Tabela de Páginas (PTI/KPTI) desmapeia a maior parte da memória do kernel das tabelas de páginas do espaço de usuário, então não há nada para ler especulativamente. O impacto no desempenho é baixo a médio, principalmente devido ao aumento da pressão na TLB causada pela troca de tabelas de páginas em cada entrada e saída do kernel.
CVE-2018-3640 — Leitura de Registro do Sistema Desonesta (Variante 3a)
Semelhante ao Meltdown, mas direcionado a registros do sistema: um processo não privilegiado pode ler especulativamente valores de registros privilegiados do sistema (como Registros Específicos do Modelo) e exfiltrá-los através de um canal lateral. A mitigação exige apenas uma atualização de microcódigo — nenhuma alteração no kernel é necessária. O impacto no desempenho é desprezível.
CVE-2018-3639 — Desvio Especulativo de Armazenamento (Variante 4)
A CPU pode carregar especulativamente um valor da memória antes que um armazenamento anterior para o mesmo endereço seja concluído, lendo dados obsoletos. Isso afeta principalmente software que usa compilação JIT (por exemplo, mecanismos JavaScript, eBPF), onde um atacante pode criar código que explora a dependência de armazenamento para carga. Não foi demonstrada exploração conhecida contra o próprio kernel. A mitigação exige uma atualização de microcódigo (fornecendo o mecanismo SSBD) mais uma atualização de kernel que permite que o software afetado opte pela proteção via prctl(). O impacto no desempenho é baixo a médio, dependendo da frequência com que a mitigação é ativada.
CVE-2018-3615 — Falha de Terminal L1 (Foreshadow, SGX)
O ataque Foreshadow original visa enclaves Intel SGX. Quando o bit Presente de uma entrada de tabela de páginas é limpo, a CPU ainda pode usar especulativamente o endereço físico na entrada para buscar dados do cache L1, contornando as proteções SGX. Um atacante pode extrair segredos (chaves de atestado, dados selados) de enclaves SGX. A mitigação exige uma atualização de microcódigo que inclui modificações no comportamento SGX. O impacto no desempenho é desprezível.
CVE-2018-3620 — Falha de Terminal L1 (Foreshadow-NG, OS/SMM)
Uma generalização do Foreshadow além do SGX: código de espaço de usuário não privilegiado pode explorar o mesmo mecanismo L1TF para ler memória do kernel ou memória do Modo de Gerenciamento do Sistema (SMM). A mitigação exige uma atualização de kernel que implementa inversão de PTE — marcando entradas de tabela de páginas não presentes com endereços físicos inválidos para que o cache L1 não possa conter dados úteis nesses endereços. O impacto no desempenho é desprezível porque a inversão de PTE é uma alteração única na lógica de gerenciamento de tabela de páginas sem sobrecarga em tempo de execução.
CVE-2018-3646 — Falha de Terminal L1 (Foreshadow-NG, VMM)
Uma VM convidada pode explorar L1TF para ler memória pertencente ao anfitrião ou a outros convidados, porque as tabelas de páginas do hipervisor podem ter entradas não presentes apontando para endereços físicos válidos do anfitrião ainda residentes no L1. As opções de mitigação incluem: limpar o cache de dados L1 em cada entrada de VM (através de uma atualização de kernel que fornece suporte a limpeza de L1d), desabilitar Tabelas de Páginas Estendidas (EPT) ou desabilitar Hyper-Threading (SMT) para evitar que uma thread irmã reabasteça o cache L1 durante a especulação. O impacto no desempenho varia de baixo a significativo dependendo da mitigação escolhida, sendo a limpeza de L1d na entrada de VM a mais prática, mas ainda mensurável em cargas de trabalho pesadas em VM.
CVE-2018-12126 — Amostragem de Dados do Buffer de Armazenamento Microarquitetural (MSBDS, Fallout)
CVE-2018-12127 — Amostragem de Dados da Porta de Carga Microarquitetural (MLPDS, RIDL)
CVE-2018-12130 — Amostragem de Dados do Buffer de Preenchimento Microarquitetural (MFBDS, ZombieLoad)
CVE-2019-11091 — Amostragem de Dados Microarquiteturais de Memória Não-Cacheável (MDSUM, RIDL)
Estas quatro CVEs são coletivamente conhecidas como vulnerabilidades "MDS" (Microarchitectural Data Sampling). Elas exploram diferentes buffers internos da CPU — buffer de armazenamento, buffer de preenchimento, portas de carga e caminhos de memória não-cacheável — que podem vazar dados recentemente acessados através de fronteiras de privilégio durante a execução especulativa. Um atacante não privilegiado pode observar dados processados recentemente pelo kernel ou por outros processos. A mitigação exige uma atualização de microcódigo (fornecendo o mecanismo MD_CLEAR) mais uma atualização de kernel que usa VERW para limpar buffers afetados nas transições de privilégio. Desabilitar Hyper-Threading (SMT) fornece proteção adicional porque threads irmãs compartilham esses buffers. O impacto no desempenho é baixo a significativo, dependendo da frequência das transições de kernel e se SMT está desabilitado.
CVE-2018-12207 — Exceção de Verificação de Máquina em Alterações de Tamanho de Página (iTLB Multihit, No eXcuses)
Uma VM convidada maliciosa pode acionar uma exceção de verificação de máquina (MCE) — travando todo o anfitrião — criando condições específicas na TLB de instruções envolvendo alterações de tamanho de página. Esta é uma vulnerabilidade de negação de serviço que afeta hipervisores que executam convidados não confiáveis. A mitigação exige desabilitar o uso de hugepages no hipervisor ou atualizar o hipervisor para evitar as configurações problemáticas de iTLB. O impacto no desempenho varia de baixo a significativo dependendo da abordagem: desabilitar hugepages pode impactar substancialmente cargas de trabalho intensivas em memória.
CVE-2019-11135 — Abandono Assíncrono TSX (TAA, ZombieLoad V2)
Em CPUs com Intel TSX, um abandono transacional pode deixar dados dos buffers de preenchimento de linha em um estado observável através de canais laterais, semelhante às vulnerabilidades MDS, mas acionado através de TSX. A mitigação exige uma atualização de microcódigo mais suporte de kernel para limpar buffers afetados ou desabilitar TSX completamente (via MSR TSX_CTRL). O impacto no desempenho é baixo a significativo, semelhante ao MDS, com a opção de eliminar completamente a superfície de ataque desabilitando TSX ao custo de perder suporte a memória transacional.
CVE-2020-0543 — Amostragem de Dados do Buffer de Registro Especial (SRBDS, CROSSTalk)
Certas instruções especiais da CPU (RDRAND, RDSEED, EGETKEY) leem dados através de um buffer de preparação compartilhado que é acessível em todos os núcleos através de execução especulativa. Um atacante executando código em qualquer núcleo pode observar a saída dessas instruções de uma vítima em um núcleo diferente, incluindo extrair chaves criptográficas de enclaves SGX (uma chave ECDSA completa foi demonstrada). Isso é notável como um dos primeiros ataques de execução especulativa entre núcleos. A mitigação exige uma atualização de microcódigo que serializa o acesso ao buffer de preparação, mais uma atualização de kernel para gerenciar a mitigação. O impacto no desempenho é baixo, afetando principalmente cargas de trabalho que usam intensivamente RDRAND/RDSEED.
CVE-2022-21123, CVE-2022-21125, CVE-2022-21166 — Dados Obsoletos de MMIO do Processador (SBDR, SBDS, DRPW)
Uma classe de vulnerabilidades de MMIO (Memory-Mapped I/O) onde dados obsoletos de buffers internos de preenchimento da CPU podem ser inferidos através de ataques de canal lateral durante operações MMIO. Três subvulnerabilidades são cobertas: Leitura de Dados de Buffers Compartilhados (SBDR, CVE-2022-21123), Amostragem de Dados de Buffers Compartilhados (SBDS, CVE-2022-21125) e Gravação Parcial de Registro de Dispositivo (DRPW, CVE-2022-21166). CPUs Intel afetadas incluem processadores de servidor e cliente Haswell a Rocket Lake, mais núcleos Atom Tremont. A mitigação exige uma atualização de microcódigo que fornece a capacidade FB_CLEAR (instrução VERW limpa buffers de preenchimento) mais uma atualização de kernel (Linux 5.19+) que invoca VERW nas transições kernel/usuário e entrada/saída de VM. Quando SMT está habilitado, threads irmãs ainda podem explorar a vulnerabilidade mesmo com mitigações ativas. O impacto no desempenho é baixo, pois o mecanismo VERW é compartilhado com a mitigação MDS existente.
CVE-2022-29900 — Execução de Código Especulativo Arbitrário com Instruções de Retorno (Retbleed AMD)
Em processadores AMD das famílias 0x15 a 0x17 (Bulldozer a Zen 2) e Hygon família 0x18, um atacante pode explorar instruções de retorno para redirecionar a execução especulativa e vazar memória do kernel, contornando mitigações retpoline que eram eficazes contra Spectre V2. Ao contrário do Spectre V2 que visa saltos e chamadas indiretas, o Retbleed tem como alvo especificamente instruções de retorno, que anteriormente eram consideradas seguras. A mitigação exige uma atualização de kernel fornecendo o thunk de retorno não treinado (RET seguro) ou o mecanismo IBPB-na-entrada, mais uma atualização de microcódigo fornecendo suporte IBPB no Zen 1/2. No Zen 1/2, o SMT deve ser desabilitado para proteção total ao usar mitigação baseada em IBPB. O impacto no desempenho é médio.
CVE-2022-29901 — Execução de Código Especulativo Arbitrário com Instruções de Retorno (Retbleed Intel, RSBA)
Em processadores Intel Skylake a Rocket Lake com Comportamento Alternativo de RSB (RSBA), instruções de retorno podem ser redirecionadas especulativamente através do Buffer de Alvos de Desvio quando a Pilha de Retorno (RSB) está sub-representada, contornando mitigações retpoline. A mitigação exige IBRS Aprimorado (eIBRS, através de atualização de microcódigo) ou um kernel compilado com suporte IBRS-na-entrada (Linux 5.19+). O rastreamento de profundidade de chamada (stuffing) é uma mitigação alternativa disponível a partir do Linux 6.2+. Retpoline simples NÃO mitiga esta vulnerabilidade em CPUs com capacidade RSBA. O impacto no desempenho é médio a alto.
**CVE-2022-40982 — Amostragem de Dados Gather (GDS, Downfall)**As instruções AVX GATHER podem vazar dados de registradores vetoriais usados anteriormente através de limites de privilégio por meio do buffer de dados gather compartilhado. Isso afeta qualquer software que use AVX2 ou AVX-512 em processadores Intel vulneráveis. A mitigação é fornecida por uma atualização de microcódigo que limpa o buffer gather, ou alternativamente desabilitando completamente o recurso AVX. O impacto no desempenho é insignificante para a maioria das cargas de trabalho, mas pode ser significativo (até 50%) para aplicações pesadas em AVX, como HPC e inferência de IA.
CVE-2023-20569 — Return Address Security (Inception, SRSO)
Em processadores AMD Zen 1 a Zen 4, um atacante pode manipular o preditor de endereço de retorno para redirecionar a execução especulativa em instruções de retorno, vazando memória do kernel. A mitigação requer tanto uma atualização do kernel (fornecendo sequências seguras de retorno SRSO ou IBPB na entrada) quanto uma atualização de microcódigo (fornecendo SBPB no Zen 3/4, ou suporte a IBPB no Zen 1/2 — que adicionalmente requer que o SMT seja desabilitado). O impacto no desempenho varia de baixo a significativo dependendo da mitigação escolhida e da geração da CPU.
CVE-2023-20588 — AMD Division by Zero Speculative Data Leak (DIV0)
Em processadores AMD Zen 1, uma exceção #DE (divisão por zero) pode deixar dados de quociente obsoletos de uma divisão anterior na unidade divisora, observáveis por uma divisão subsequente por meio de canais laterais especulativos. Isso pode vazar dados através de qualquer limite de privilégio, incluindo entre threads irmãos SMT que compartilham o mesmo núcleo físico. A mitigação requer uma atualização do kernel (Linux 6.5+) que adiciona uma divisão fictícia (amd_clear_divider()) em cada saída para o espaço do usuário e antes do VMRUN, impedindo que dados obsoletos persistam. Nenhuma atualização de microcódigo é necessária. Desabilitar o SMT fornece proteção adicional porque a mitigação do kernel não cobre vazamentos entre threads SMT. O impacto no desempenho é insignificante.
CVE-2023-20593 — Cross-Process Information Leak (Zenbleed)
Um bug em processadores AMD Zen 2 faz com que a instrução VZEROUPPER zere incorretamente os arquivos de registradores durante a execução especulativa, deixando dados obsoletos de outros processos observáveis em registradores vetoriais. Isso pode vazar dados através de qualquer limite de privilégio, incluindo do kernel e de outros processos, a taxas de até 30 KB/s por núcleo. A mitigação está disponível por meio de uma atualização de microcódigo que corrige o bug, ou por meio de uma solução alternativa do kernel que define o bit FP_BACKUP_FIX (bit 9) no MSR DE_CFG, desabilitando a otimização defeituosa. Qualquer uma das abordagens sozinha é suficiente. O impacto no desempenho é insignificante.
CVE-2023-23583 — Redundant Prefix Issue (Reptar)
Um bug em processadores Intel causa comportamento inesperado ao executar instruções com prefixos REX redundantes específicos. Dependendo das circunstâncias, isso pode resultar em uma falha do sistema (MCE), comportamento imprevisível ou potencialmente escalada de privilégio. Qualquer software executado em uma CPU afetada pode acionar o bug. A mitigação requer uma atualização de microcódigo. O impacto no desempenho é baixo.
CVE-2023-28746 — Register File Data Sampling (RFDS)
Em certos processadores Intel Atom e híbridos (Goldmont, Goldmont Plus, Tremont, Gracemont e os núcleos Atom de Alder Lake e Raptor Lake), o arquivo de registradores pode reter dados obsoletos de operações anteriores que são acessíveis por meio de execução especulativa, permitindo que um atacante infira dados através de limites de privilégio. A mitigação requer tanto uma atualização de microcódigo (fornecendo a capacidade RFDS_CLEAR) quanto uma atualização do kernel (CONFIG_MITIGATION_RFDS, Linux 6.9+) que usa a instrução VERW para limpar o arquivo de registradores nas transições de privilégio. CPUs com o bit de capacidade RFDS_NO não são afetadas. O impacto no desempenho é baixo.
CVE-2024-28956 — Indirect Target Selection (ITS)
Em certos processadores Intel (Skylake-X stepping 6+, Kaby Lake, Comet Lake, Ice Lake, Tiger Lake, Rocket Lake), um atacante pode treinar o preditor de desvio indireto para executar especulativamente um gadget direcionado no kernel, contornando as proteções eIBRS. O Branch Target Buffer (BTB) usa apenas bits de endereço parciais para indexar alvos de desvio indireto, permitindo que o código do espaço do usuário influencie a execução especulativa do espaço do kernel. Algumas CPUs afetadas (Ice Lake, Tiger Lake, Rocket Lake) são vulneráveis apenas a ataques nativos de usuário para kernel, não a ataques convidado para hospedeiro (VMX). A mitigação requer tanto uma atualização de microcódigo (IPU 2025.1 / microcode-20250512+, que corrige o IBPB para limpar completamente as previsões de desvio indireto) quanto uma atualização do kernel (CONFIG_MITIGATION_ITS, Linux 6.15+) que alinha thunks de desvio/retorno ou usa preenchimento RSB. O impacto no desempenho é baixo.
CVE-2024-36350 — Transient Scheduler Attack, Store Queue (TSA-SQ)
Em processadores AMD Zen 3 e Zen 4, o escalonador transiente da CPU pode recuperar especulativamente dados obsoletos da fila de armazenamento durante certas janelas de temporização, permitindo que um atacante infira dados de operações de armazenamento anteriores através de limites de privilégio. O ataque também pode vazar dados entre threads irmãos SMT. A mitigação requer tanto uma atualização de microcódigo (expondo a capacidade VERW_CLEAR) quanto uma atualização do kernel (CONFIG_MITIGATION_TSA, Linux 6.16+) que usa a instrução VERW para limpar buffers da CPU nas transições de usuário/kernel e antes do VMRUN. O kernel também limpa buffers quando ocioso com SMT ativo. O impacto no desempenho é baixo a médio.
CVE-2024-36357 — Transient Scheduler Attack, L1 (TSA-L1)
Em processadores AMD Zen 3 e Zen 4, o escalonador transiente da CPU pode recuperar especulativamente dados obsoletos do cache de dados L1 durante certas janelas de temporização, permitindo que um atacante infira dados no cache L1D através de limites de privilégio. A mitigação requer as mesmas atualizações de microcódigo e kernel que o TSA-SQ: uma atualização de microcódigo expondo VERW_CLEAR e uma atualização do kernel (CONFIG_MITIGATION_TSA, Linux 6.16+) que limpa os buffers da CPU via VERW nas transições de privilégio. O impacto no desempenho é baixo a médio.
CVE-2025-40300 — VM-Exit Stale Branch Prediction (VMScape)
Após uma máquina convidada VM sair para o hospedeiro, previsões de desvio obsoletas do convidado podem influenciar a execução especulativa do lado do hospedeiro antes que o kernel retorne ao espaço do usuário, permitindo que um atacante local vaze memória do kernel do hospedeiro. Isso afeta processadores Intel de Sandy Bridge a Arrow Lake/Lunar Lake, famílias AMD Zen 1 a Zen 5 e famílias Hygon 0x18. Apenas sistemas executando um hipervisor com convidados não confiáveis estão em risco. A mitigação requer uma atualização do kernel (CONFIG_MITIGATION_VMSCAPE, Linux 6.18+) que emite IBPB antes de retornar ao espaço do usuário após uma saída de VM. Nenhuma atualização específica de microcódigo é necessária além do suporte IBPB existente. O impacto no desempenho é baixo.
CVE-2024-45332 — Branch Privilege Injection (BPI)
Uma condição de corrida no mecanismo de atualização do preditor de desvio de processadores Intel (Coffee Lake a Raptor Lake, além de algumas peças de servidor e Atom) permite que previsões de desvio do espaço do usuário influenciem brevemente a execução especulativa do espaço do kernel, minando as proteções eIBRS e IBPB. Isso significa que sistemas que dependem apenas de eIBRS para mitigação do Spectre V2 podem não estar totalmente protegidos sem a correção de microcódigo. A mitigação requer uma atualização de microcódigo (intel-microcode 20250512+) que corrige a temporização da atualização assíncrona do preditor de desvio para que eIBRS e IBPB funcionem conforme pretendido originalmente. Nenhuma alteração no kernel é necessária. O impacto no desempenho é insignificante.
CVE-2025-54505 — AMD Zen1 Floating-Point Divider Stale Data Leak (FPDSS)
Em processadores AMD Zen1 e Zen+ (EPYC 7001, EPYC Embedded 3000, Athlon 3000 with Radeon, Ryzen 3000 with Radeon, Ryzen PRO 3000 with Radeon Vega), o divisor de ponto flutuante por hardware pode reter dados parciais de quociente de operações anteriores. Sob certas circunstâncias, esses resultados podem vazar para outra thread que compartilha o mesmo divisor, cruzando qualquer limite de privilégio. Isso recebeu o CVE-2025-54505 e foi publicado pela AMD como AMD-SB-7053 em 2026-04-17. A mitigação requer uma atualização do kernel (commit principal e55d98e77561, "x86/CPU: Fix FPDSS on Zen1", Linux 7.1) que define o bit 9 (ZEN1_DENORM_FIX_BIT) do MSR 0xc0011028 (MSR_AMD64_FP_CFG) incondicionalmente em cada CPU Zen1 na inicialização, desabilitando a otimização de hardware responsável pelo vazamento. Nenhuma atualização de microcódigo é necessária: o chicken bit está presente no silício Zen1 de fábrica e é independente da revisão do microcódigo. O impacto no desempenho é limitado a uma pequena redução na vazão de divisão de ponto flutuante, razão pela qual a AMD não ativa o bit por padrão no hardware.
Vários CVEs de execução transiente não são cobertos por esta ferramenta, por vários motivos (duplicatas, afetam apenas hardware ou sistema operacional não suportado, teóricos sem exploração conhecida, etc.). A lista completa, juntamente com o motivo de cada exclusão, está disponível no arquivo UNSUPPORTED_CVE_LIST.md.
Sistemas operacionais suportados:
Para sistemas Linux, a ferramenta detectará mitigações, incluindo patches não vanilla backportados, independentemente do número de versão do kernel divulgado e da distribuição (como Debian, Ubuntu, CentOS, RHEL, Fedora, openSUSE, Arch, ...), também funciona se você compilou seu próprio kernel. Mais informações aqui.
Outros sistemas operacionais como MacOS, Windows, ESXi, etc. nunca serão suportados.
Arquiteturas suportadas:
x86 (32 bits)amd64/x86_64 (64 bits)ARM e ARM64Qual é o propósito desta ferramenta? Por que foi escrita? Como pode ser útil para mim? Como funciona? O que posso esperar dela?
Todas essas perguntas (e mais) têm respostas detalhadas na FAQ, dê uma olhada!
O script suporta quatro modos de operação, dependendo se você deseja inspecionar o kernel em execução, uma imagem do kernel, o hardware da CPU ou uma combinação.
| Modo | Sinalizador | Hardware da CPU | Kernel em execução | Imagem do kernel | Caso de uso |
|---|---|---|---|---|---|
| Ao vivo (padrão) | (nenhum) | Sim | Sim | detecção automática | Auditoria diária do sistema atual |
| Sem tempo de execução | --no-runtime | Sim | Não | obrigatório | Verificar um kernel diferente contra esta CPU (ex. pré-implantação) |
| Sem hardware | --no-hw | Não | Não | obrigatório | Análise estática pura de uma imagem de kernel para outro sistema ou arquitetura |
| Apenas hardware | --hw-only | Sim | Não | Não | Verificar rapidamente a afetação da CPU sem inspecionar nenhum kernel |
No modo Ao vivo (o padrão), o script inspeciona tanto a CPU quanto o kernel em execução.
Você pode opcionalmente passar --kernel, --config ou --map para apontar o script para arquivos que ele não conseguiu detectar automaticamente.
No modo Sem tempo de execução, o script ainda lê a CPU local (CPUID, MSRs, microcódigo), mas ignora todos os artefatos do kernel em execução (/sys, /proc, dmesg).
Use isso quando você tiver uma imagem de kernel de outro sistema, mas quiser avaliá-la contra a CPU atual.
No modo Sem hardware, tanto a inspeção da CPU quanto os artefatos do kernel em execução são completamente ignorados. Isso é útil para análise entre arquiteturas, por exemplo, inspecionar uma imagem de kernel ARM em uma estação de trabalho x86.
No modo Apenas hardware, o script apenas relata informações da CPU e a afetação por hardware para cada CVE, sem inspecionar nenhum kernel.
Obtenha a versão mais recente do script usando curl ou wget
curl -L https://meltdown.ovh -o spectre-meltdown-checker.sh
wget https://meltdown.ovh -O spectre-meltdown-checker.sh
Inspecione o script. Você nunca executa scripts baixados da Internet cegamente, não é?
vim spectre-meltdown-checker.sh
Quando estiver pronto, execute o script como root
chmod +x spectre-meltdown-checker.sh
sudo ./spectre-meltdown-checker.sh
Usando docker compose:```shell
docker compose build
docker compose run --rm spectre-meltdown-checker
Observe que em versões mais antigas do docker, `docker-compose` é um comando separado, então talvez você precise substituir as duas ocorrências de `docker compose` acima por `docker-compose`.
Usando `docker build` diretamente:```shell
docker build -t spectre-meltdown-checker .
docker run --rm --privileged -v /boot:/boot:ro -v /dev/cpu:/dev/cpu:ro -v /lib/modules:/lib/modules:ro spectre-meltdown-checker

| ✅ |
| ✅ |
| ☠️ |
| ✅ |
| Atualização de hipervisor (ou desabilitar hugepages) |
| CVE-2019-11091 (MDSUM, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2019-11135 (TAA, ZombieLoad V2) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2020-0543 (SRBDS, CROSSTalk) | 💥 (2) | 💥 (2) | 💥 (2) | 💥 (2) | Microcódigo + atualização de kernel |
| CVE-2022-21123 (SBDR, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2022-21125 (SBDS, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2022-21166 (DRPW, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2022-29900 (Retbleed AMD) | 💥 | ✅ | 💥 | ✅ | Atualização de kernel (+ microcódigo para IBPB) |
| CVE-2022-29901 (Retbleed Intel, RSBA) | 💥 | ✅ | 💥 | ✅ | Microcódigo + atualização de kernel (eIBRS ou IBRS) |
| CVE-2022-40982 (Downfall, GDS) | 💥 | 💥 | 💥 | 💥 | Atualização de microcódigo (ou desabilitar AVX) |
| CVE-2023-20569 (Inception, SRSO) | 💥 | ✅ | 💥 | ✅ | Microcódigo + atualização de kernel |
| CVE-2023-20588 (DIV0) | 💥 | 💥 (1) | 💥 | 💥 (1) | Atualização de kernel (+ desabilitar SMT) |
| CVE-2023-20593 (Zenbleed) | 💥 | 💥 | 💥 | 💥 | Atualização de microcódigo (ou workaround de kernel) |
| CVE-2023-23583 (Reptar) | ☠️ | ☠️ | ☠️ | ☠️ | Atualização de microcódigo |
| CVE-2023-28746 (RFDS) | 💥 | ✅ | 💥 | ✅ | Microcódigo + atualização de kernel |
| CVE-2024-28956 (ITS) | 💥 | ✅ | 💥 (4) | ✅ | Microcódigo + atualização de kernel |
| CVE-2024-36350 (TSA-SQ) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2024-36357 (TSA-L1) | 💥 | 💥 (1) | 💥 | 💥 (1) | Microcódigo + atualização de kernel |
| CVE-2025-40300 (VMScape) | ✅ | ✅ | 💥 | ✅ | Atualização de kernel (IBPB na saída de VM) |
| CVE-2024-45332 (BPI) | 💥 | ✅ | 💥 | ✅ | Atualização de microcódigo |
| CVE-2025-54505 (FPDSS) | 💥 | 💥 | 💥 | 💥 | Atualização de kernel |