In the Linux kernel, the following vulnerability has been resolved:
x86/mtrr: Check if fixed MTRRs exist before saving them
MTRRs have an obsolete fixed variant for fine grained caching control of the 640K-1MB region that uses separate MSRs. This fixed variant has a separate capability bit in the MTRR capability MSR.
So far all x86 CPUs which support MTRR have this separate bit set, so it went unnoticed that mtrrsavestate() does not check the capability bit before accessing the fixed MTRR MSRs.
Though on a CPU that does not support the fixed MTRR capability this results in a #GP. The #GP itself is harmless because the RDMSR fault is handled gracefully, but results in a WARN_ON().
Add the missing capability check to prevent this.
[
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@919f18f961c03d6694aa726c514184f2311a4614",
"deprecated": false,
"id": "CVE-2024-44948-187393cd",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8a90d3fc7c24608548d3a750671f9dac21d1a462",
"deprecated": false,
"id": "CVE-2024-44948-24ed25fd",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@06c1de44d378ec5439db17bf476507d68589bfe9",
"deprecated": false,
"id": "CVE-2024-44948-2b99fca1",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@919f18f961c03d6694aa726c514184f2311a4614",
"deprecated": false,
"id": "CVE-2024-44948-3cb55498",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@450b6b22acdaac67a18eaf5ed498421ffcf10051",
"deprecated": false,
"id": "CVE-2024-44948-4881215b",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ca7d00c5656d1791e28369919e3e10febe9c3b16",
"deprecated": false,
"id": "CVE-2024-44948-523fc2b6",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@388f1c954019f253a8383f7eb733f38d541e10b6",
"deprecated": false,
"id": "CVE-2024-44948-574924dc",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8aa79dfb216b865e96ff890bc4ea71650f9bc8d7",
"deprecated": false,
"id": "CVE-2024-44948-757a7a95",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@450b6b22acdaac67a18eaf5ed498421ffcf10051",
"deprecated": false,
"id": "CVE-2024-44948-8aadd74b",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8aa79dfb216b865e96ff890bc4ea71650f9bc8d7",
"deprecated": false,
"id": "CVE-2024-44948-9aa26a20",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@34f36e6ee5bd7eff8b2adcd9fcaef369f752d82e",
"deprecated": false,
"id": "CVE-2024-44948-af304863",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Function",
"target": {
"function": "mtrr_save_state",
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@34f36e6ee5bd7eff8b2adcd9fcaef369f752d82e",
"deprecated": false,
"id": "CVE-2024-44948-b50acf0c",
"signature_version": "v1",
"digest": {
"length": 163.0,
"function_hash": "18633772148238925919737157558945449600"
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@06c1de44d378ec5439db17bf476507d68589bfe9",
"deprecated": false,
"id": "CVE-2024-44948-d43cea97",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8a90d3fc7c24608548d3a750671f9dac21d1a462",
"deprecated": false,
"id": "CVE-2024-44948-f9c0df05",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@388f1c954019f253a8383f7eb733f38d541e10b6",
"deprecated": false,
"id": "CVE-2024-44948-fb5f7cc8",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"target": {
"file": "arch/x86/kernel/cpu/mtrr/mtrr.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ca7d00c5656d1791e28369919e3e10febe9c3b16",
"deprecated": false,
"id": "CVE-2024-44948-fd9394e3",
"signature_version": "v1",
"digest": {
"line_hashes": [
"264772104136071437990986313920074889132",
"224551471478475025546958141628736181421",
"282135119748141510617495409243789785858",
"76700202495859406739832166675285038144"
],
"threshold": 0.9
}
}
]