mirror of
https://github.com/speed47/spectre-meltdown-checker.git
synced 2026-07-25 22:32:35 +02:00
Compare commits
2 Commits
source
..
45fe976ca9
| Author | SHA1 | Date | |
|---|---|---|---|
| 45fe976ca9 | |||
| 44ba3790d9 |
Vendored
+23
@@ -188,6 +188,18 @@ Observable timing discrepancy in some Intel processors allows an authenticated u
|
||||
|
||||
**Why out of scope:** Like CVE-2020-24511, this is a microcode-only fix with no Linux kernel sysfs entry, no CPUID bit, no MSR, and no kernel configuration option. Detection would require a per-CPU-stepping microcode version lookup table. The vulnerability has low severity (CVSS 2.8) and practical exploitation is limited. Intel dropped microcode support for Sandy Bridge and Ivy Bridge, leaving those generations permanently vulnerable.
|
||||
|
||||
## CVE-2021-26314 / CVE-2021-26313 — Floating-Point Value Injection (FPVI) and Speculative Code Store Bypass (SCSB)
|
||||
|
||||
- **Bulletin:** [AMD-SB-1003](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-1003.html) (FPVI and SCSB); [AMD-SB-7050](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7050.html) (FPVI variant, informational)
|
||||
- **Intel advisory:** [Floating Point Value Injection](https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/floating-point-value-injection.html)
|
||||
- **Research paper:** [Rage Against the Machine Clear (FPVI/SCSB) — VUSec, USENIX Security '21](https://www.vusec.net/projects/fpvi-scsb/)
|
||||
- **Affected CPUs:** All supported AMD CPU products; Intel CPUs (FPVI)
|
||||
- **CVSS:** 5.5 (Medium) for both
|
||||
|
||||
FPVI (CVE-2021-26314) lets an attacker inject arbitrary floating-point values into the transient execution window opened by a floating-point machine clear, so that dependent operations transiently compute on attacker-influenced values that can then be inferred through a microarchitectural covert channel. SCSB (CVE-2021-26313) is the companion vulnerability where overwritten instructions may still be executed speculatively. AMD-SB-7050 documents an FPVI variant (from the "TREVEX" detection-framework paper) that can be triggered without denormal inputs; AMD considers it to fall within the existing scope of CVE-2021-26314 and assigned it no new CVE, classifying it as informational only.
|
||||
|
||||
**Why out of scope:** The mitigation responsibility falls on individual software, not on the kernel or microcode. Both AMD and Intel recommend that software vendors analyze their code for vulnerable speculative floating-point sequences and insert an `LFENCE` to serialize execution. No microcode update, no CPUID flag, no MSR, and no kernel configuration option was issued, and there is no `/sys/devices/system/cpu/vulnerabilities/` entry for FPVI or SCSB — the kernel never added one, because the fix is not a kernel-level control. This is the same situation as [SLAM (CVE-2020-12965)](#cve-2020-12965--transient-execution-of-non-canonical-accesses-slam) and "Take A Way": the vendor's guidance is "software inserts LFENCE in its own code," leaving nothing for this tool to check. The AMD-SB-7050 variant adds nothing detectable, as it is informational and reuses the existing (software-only) FPVI guidance.
|
||||
|
||||
## CVE-2021-26318 — AMD Prefetch Attacks through Power and Time
|
||||
|
||||
- **Issue:** [#412](https://github.com/speed47/spectre-meltdown-checker/issues/412)
|
||||
@@ -308,6 +320,17 @@ Exploits a synchronization failure in the AMD stack engine via an undocumented M
|
||||
|
||||
**Why out of scope:** Not a transient/speculative execution side channel. This is an architectural attack on AMD SEV-SNP confidential computing that requires hypervisor access, which is outside the threat model of this tool.
|
||||
|
||||
## CVE-2025-52533 — AMD On-Chip Debug Interface Improper Access Control
|
||||
|
||||
- **Advisory:** [NVD CVE-2025-52533](https://nvd.nist.gov/vuln/detail/CVE-2025-52533)
|
||||
- **Affected CPUs:** AMD (various; on-chip debug/test interface)
|
||||
- **CVSS:** 8.7 (High)
|
||||
- **CWE:** [CWE-1191 (On-Chip Debug and Test Interface With Improper Access Control)](https://cwe.mitre.org/data/definitions/1191.html)
|
||||
|
||||
Improper access control in an on-chip debug interface could allow a privileged attacker to enable a debug interface and potentially compromise data confidentiality or integrity.
|
||||
|
||||
**Why out of scope:** Not a transient or speculative execution vulnerability — this is an access-control flaw in a hardware debug/test interface (CWE-1191), with no side-channel or speculative execution component, and it requires a privileged attacker. There is no Linux kernel sysfs entry, no CPUID flag, and no kernel-side mitigation: the fix is delivered as platform/PSP firmware and proven via remote attestation against AMD's Key Distribution Service (KDS), with several SKUs marked "no fix planned." None of this is detectable by this tool, which inspects OS-loadable microcode revisions, CPUID/MSR bits, kernel capabilities, and sysfs.
|
||||
|
||||
## No CVE — Jump Conditional Code (JCC) Erratum
|
||||
|
||||
- **Issue:** [#329](https://github.com/speed47/spectre-meltdown-checker/issues/329)
|
||||
|
||||
+31
-35
@@ -8,7 +8,7 @@
|
||||
# with X being either I for Intel, or A for AMD
|
||||
# When the date is unknown it defaults to 20000101
|
||||
|
||||
# %%% MCEDB v351+i20260512+1cce
|
||||
# %%% MCEDB v349+i20260227+615b
|
||||
# I,0x00000611,0xFF,0x00000B27,19961218
|
||||
# I,0x00000612,0xFF,0x000000C6,19961210
|
||||
# I,0x00000616,0xFF,0x000000C6,19961210
|
||||
@@ -381,14 +381,14 @@
|
||||
# I,0x000806F2,0xFF,0x8C0004E0,20211112
|
||||
# I,0x000806F3,0xFF,0x8D000520,20220812
|
||||
# I,0x000806F4,0x10,0x2C000421,20250825
|
||||
# I,0x000806F4,0x87,0x2B000670,20251217
|
||||
# I,0x000806F4,0x87,0x2B000661,20250825
|
||||
# I,0x000806F5,0x10,0x2C000421,20250825
|
||||
# I,0x000806F5,0x87,0x2B000670,20251217
|
||||
# I,0x000806F5,0x87,0x2B000661,20250825
|
||||
# I,0x000806F6,0x10,0x2C000421,20250825
|
||||
# I,0x000806F6,0x87,0x2B000670,20251217
|
||||
# I,0x000806F7,0x87,0x2B000670,20251217
|
||||
# I,0x000806F6,0x87,0x2B000661,20250825
|
||||
# I,0x000806F7,0x87,0x2B000661,20250825
|
||||
# I,0x000806F8,0x10,0x2C000421,20250825
|
||||
# I,0x000806F8,0x87,0x2B000670,20251217
|
||||
# I,0x000806F8,0x87,0x2B000661,20250825
|
||||
# I,0x00090660,0xFF,0x00000009,20200617
|
||||
# I,0x00090661,0x01,0x0000001A,20240405
|
||||
# I,0x00090670,0xFF,0x00000019,20201111
|
||||
@@ -425,12 +425,11 @@
|
||||
# I,0x000A06C0,0xFF,0x00000013,20230901
|
||||
# I,0x000A06C1,0xFF,0x00000005,20231201
|
||||
# I,0x000A06D0,0xFF,0x10000680,20240818
|
||||
# I,0x000A06D1,0x20,0x0A000142,20260129
|
||||
# I,0x000A06D1,0x95,0x01000423,20260129
|
||||
# I,0x000A06E0,0xFF,0x80000953,20240902
|
||||
# I,0x000A06E1,0x97,0x01000307,20260226
|
||||
# I,0x000A06D1,0x20,0x0A000133,20251009
|
||||
# I,0x000A06D1,0x95,0x01000405,20251031
|
||||
# I,0x000A06E1,0x97,0x01000303,20251202
|
||||
# I,0x000A06F0,0xFF,0x80000360,20240130
|
||||
# I,0x000A06F3,0x01,0x030003A3,20260130
|
||||
# I,0x000A06F3,0x01,0x03000382,20250730
|
||||
# I,0x000B0650,0x80,0x0000000D,20250925
|
||||
# I,0x000B0664,0xFF,0x00000030,20250529
|
||||
# I,0x000B0670,0xFF,0x0000000E,20220220
|
||||
@@ -440,28 +439,25 @@
|
||||
# I,0x000B06A3,0xE0,0x00006134,20251008
|
||||
# I,0x000B06A8,0xE0,0x00006134,20251008
|
||||
# I,0x000B06D0,0xFF,0x0000001A,20240610
|
||||
# I,0x000B06D1,0x80,0x00000126,20251210
|
||||
# I,0x000B06D1,0x80,0x00000125,20250828
|
||||
# I,0x000B06E0,0x19,0x00000021,20250912
|
||||
# I,0x000B06F2,0x07,0x0000003E,20251012
|
||||
# I,0x000B06F5,0x07,0x0000003E,20251012
|
||||
# I,0x000B06F6,0x07,0x0000003E,20251012
|
||||
# I,0x000B06F7,0x07,0x0000003E,20251012
|
||||
# I,0x000C0652,0x82,0x00000121,20251215
|
||||
# I,0x000C0652,0x82,0x0000011B,20250803
|
||||
# I,0x000C0660,0xFF,0x00000018,20240516
|
||||
# I,0x000C0662,0x82,0x00000121,20251215
|
||||
# I,0x000C0664,0x82,0x00000121,20251215
|
||||
# I,0x000C06A2,0x82,0x00000121,20251215
|
||||
# I,0x000C0662,0x82,0x0000011B,20250803
|
||||
# I,0x000C0664,0x82,0x0000011B,20250803
|
||||
# I,0x000C06A2,0x82,0x0000011B,20250803
|
||||
# I,0x000C06C0,0xFF,0x00000012,20250325
|
||||
# I,0x000C06C1,0x90,0x0000011B,20260324
|
||||
# I,0x000C06C2,0x90,0x0000011B,20260324
|
||||
# I,0x000C06C3,0x90,0x0000011B,20260324
|
||||
# I,0x000C06F1,0x87,0x210002E0,20251217
|
||||
# I,0x000C06F2,0x87,0x210002E0,20251217
|
||||
# I,0x000D0650,0xFF,0x00000009,20260309
|
||||
# I,0x000D0651,0xFF,0x00000009,20260309
|
||||
# I,0x000D0670,0xFF,0x00000137,20260218
|
||||
# I,0x000D06D0,0xFF,0x80000370,20250917
|
||||
# I,0x000D06D1,0xFF,0x01000120,20260325
|
||||
# I,0x000C06C1,0xFF,0x00000115,20251203
|
||||
# I,0x000C06C2,0xFF,0x00000115,20251203
|
||||
# I,0x000C06C3,0xFF,0x00000115,20251203
|
||||
# I,0x000C06F1,0x87,0x210002D3,20250825
|
||||
# I,0x000C06F2,0x87,0x210002D3,20250825
|
||||
# I,0x000D0670,0xFF,0x00000003,20250825
|
||||
# I,0x000D06D0,0xFF,0x00000340,20250807
|
||||
# I,0x00FF0671,0xFF,0x0000010E,20220907
|
||||
# I,0x00FF0672,0xFF,0x0000000D,20210816
|
||||
# I,0x00FF0675,0xFF,0x0000000D,20210816
|
||||
@@ -558,13 +554,13 @@
|
||||
# A,0x00880F40,0xFF,0x08804005,20210312
|
||||
# A,0x00890F00,0xFF,0x08900007,20200921
|
||||
# A,0x00890F01,0xFF,0x08900103,20201105
|
||||
# A,0x00890F02,0xFF,0x08900208,20241219
|
||||
# A,0x00890F02,0xFF,0x08900203,20230915
|
||||
# A,0x00890F10,0xFF,0x08901003,20230919
|
||||
# A,0x008A0F00,0xFF,0x08A0000B,20241125
|
||||
# A,0x00A00F00,0xFF,0x0A000033,20200413
|
||||
# A,0x00A00F10,0xFF,0x0A00107A,20240226
|
||||
# A,0x00A00F11,0xFF,0x0A0011DF,20260312
|
||||
# A,0x00A00F12,0xFF,0x0A00124B,20260305
|
||||
# A,0x00A00F11,0xFF,0x0A0011DE,20250418
|
||||
# A,0x00A00F12,0xFF,0x0A001247,20250327
|
||||
# A,0x00A00F80,0xFF,0x0A008005,20230707
|
||||
# A,0x00A00F82,0xFF,0x0A00820F,20241111
|
||||
# A,0x00A10F00,0xFF,0x0A10004B,20220309
|
||||
@@ -603,15 +599,15 @@
|
||||
# A,0x00B00F00,0xFF,0x0B00004D,20240318
|
||||
# A,0x00B00F10,0xFF,0x0B001016,20240318
|
||||
# A,0x00B00F20,0xFF,0x0B002032,20241003
|
||||
# A,0x00B00F21,0xFF,0x0B002162,20251105
|
||||
# A,0x00B00F21,0xFF,0x0B002161,20251105
|
||||
# A,0x00B00F80,0xFF,0x0B008011,20241211
|
||||
# A,0x00B00F81,0xFF,0x0B008121,20251020
|
||||
# A,0x00B10F00,0xFF,0x0B10000F,20240320
|
||||
# A,0x00B10F10,0xFF,0x0B101059,20251105
|
||||
# A,0x00B10F10,0xFF,0x0B101058,20251105
|
||||
# A,0x00B20F40,0xFF,0x0B204037,20251019
|
||||
# A,0x00B40F00,0xFF,0x0B400034,20240318
|
||||
# A,0x00B40F40,0xFF,0x0B404038,20260408
|
||||
# A,0x00B40F41,0xFF,0x0B40410B,20260408
|
||||
# A,0x00B60F00,0xFF,0x0B60003C,20260401
|
||||
# A,0x00B60F80,0xFF,0x0B60803C,20260401
|
||||
# A,0x00B40F40,0xFF,0x0B404035,20251020
|
||||
# A,0x00B40F41,0xFF,0x0B404108,20251020
|
||||
# A,0x00B60F00,0xFF,0x0B600037,20251019
|
||||
# A,0x00B60F80,0xFF,0x0B608038,20251019
|
||||
# A,0x00B70F00,0xFF,0x0B700037,20251019
|
||||
|
||||
@@ -72,7 +72,6 @@
|
||||
readonly INTEL_FAM6_ARROWLAKE_U=$((0xB5))
|
||||
readonly INTEL_FAM6_LUNARLAKE_M=$((0xBD)) # /* Lion Cove / Skymont */
|
||||
readonly INTEL_FAM6_PANTHERLAKE_L=$((0xCC)) # /* Cougar Cove / Darkmont */
|
||||
readonly INTEL_FAM6_PANTHERLAKE_R=$((0xE5)) # /* Cougar Cove / Darkmont */
|
||||
readonly INTEL_FAM6_WILDCATLAKE_L=$((0xD5))
|
||||
readonly INTEL_FAM18_NOVALAKE=$((0x01)) # /* Coyote Cove / Arctic Wolf */
|
||||
readonly INTEL_FAM18_NOVALAKE_L=$((0x03)) # /* Coyote Cove / Arctic Wolf */
|
||||
|
||||
@@ -724,9 +724,9 @@ is_cpu_affected() {
|
||||
if [ -n "$cpupart" ] && [ -n "$cpuarch" ]; then
|
||||
# Cortex-R7 and Cortex-R8 are real-time and only used in medical devices or such
|
||||
# I can't find their CPU part number, but it's probably not that useful anyway
|
||||
# model R7 R8 A8 A9 A12 A15 A17 A57 A72 A73 A75 A76 A77 Neoverse-N1 Neoverse-V1 Neoverse-N1 Neoverse-V2 Neoverse-V3 Neoverse-V3AE
|
||||
# part ? ? c08 c09 c0d c0f c0e d07 d08 d09 d0a d0b d0d d0c d40 d49 d4f d84 d83
|
||||
# arch 7? 7? 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8
|
||||
# model R7 R8 A8 A9 A12 A15 A17 A57 A72 A73 A75 A76 A77 Neoverse-N1 Neoverse-V1 Neoverse-N1 Neoverse-V2
|
||||
# part ? ? c08 c09 c0d c0f c0e d07 d08 d09 d0a d0b d0d d0c d40 d49 d4f
|
||||
# arch 7? 7? 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8
|
||||
#
|
||||
# Whitelist identified non-affected processors, use vulnerability information from
|
||||
# https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability
|
||||
@@ -777,13 +777,13 @@ is_cpu_affected() {
|
||||
_infer_immune variant3a
|
||||
_set_vuln variant4
|
||||
pr_debug "checking cpu$i: armv8 A76/A77/NeoverseN1 non affected to variant 2, 3 & 3a"
|
||||
elif [ "$cpuarch" = 8 ] && echo "$cpupart" | grep -q -w -e 0xd40 -e 0xd49 -e 0xd4f -e 0xd84 -e 0xd83; then
|
||||
elif [ "$cpuarch" = 8 ] && echo "$cpupart" | grep -q -w -e 0xd40 -e 0xd49 -e 0xd4f; then
|
||||
_set_vuln variant1
|
||||
_infer_immune variant2
|
||||
_infer_immune variant3
|
||||
_infer_immune variant3a
|
||||
_infer_immune variant4
|
||||
pr_debug "checking cpu$i: armv8 NeoverseN2/V1/V2/V3/V3AE non affected to variant 2, 3, 3a & 4"
|
||||
pr_debug "checking cpu$i: armv8 NeoverseN2/V1/V2 non affected to variant 2, 3, 3a & 4"
|
||||
elif [ "$cpuarch" -le 7 ] || { [ "$cpuarch" = 8 ] && [ $((cpupart)) -lt $((0xd07)) ]; }; then
|
||||
_infer_immune variant1
|
||||
_infer_immune variant2
|
||||
@@ -844,14 +844,14 @@ is_cpu_affected() {
|
||||
# - arm64 (CVE-2020-13844): Cortex-A32/A34/A35/A53/A57/A72/A73 confirmed affected,
|
||||
# and broadly all speculative Armv8-A cores. No kernel mitigation merged.
|
||||
# Part numbers: A32=0xd01 A34=0xd02 A53=0xd03 A35=0xd04 A57=0xd07 A72=0xd08 A73=0xd09
|
||||
# Plus later speculative cores: A75=0xd0a A76=0xd0b A77=0xd0d N1=0xd0c V1=0xd40 N2=0xd49 V2=0xd4f V3=0xd84 V3AE=0xd83
|
||||
# Plus later speculative cores: A75=0xd0a A76=0xd0b A77=0xd0d N1=0xd0c V1=0xd40 N2=0xd49 V2=0xd4f
|
||||
if is_intel || is_amd; then
|
||||
_infer_vuln sls
|
||||
elif [ "$cpu_vendor" = ARM ]; then
|
||||
for cpupart in $cpu_part_list; do
|
||||
if echo "$cpupart" | grep -q -w -e 0xd01 -e 0xd02 -e 0xd03 -e 0xd04 \
|
||||
-e 0xd07 -e 0xd08 -e 0xd09 -e 0xd0a -e 0xd0b -e 0xd0c -e 0xd0d \
|
||||
-e 0xd40 -e 0xd49 -e 0xd4f -e 0xd84 -e 0xd83; then
|
||||
-e 0xd40 -e 0xd49 -e 0xd4f; then
|
||||
_set_vuln sls
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user