mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

The affected CPU table (cpu_vuln_blacklist) marks Alderlake and Raptorlake P-only parts affected by RFDS. This is not true because only E-cores are affected by RFDS. With the current family/model matching it is not possible to differentiate the unaffected parts, as the affected and unaffected hybrid variants have the same model number. Add a cpu-type match as well for such parts so as to exclude P-only parts being marked as affected. Note, family/model and cpu-type enumeration could be inaccurate in virtualized environments. In a guest affected status is decided by RFDS_NO and RFDS_CLEAR bits exposed by VMMs. Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Dave Hansen <dave.hansen@linux.intel.com> Link: https://lore.kernel.org/r/20250311-add-cpu-type-v8-5-e8514dcaaff2@linux.intel.com
96 lines
3.8 KiB
ReStructuredText
96 lines
3.8 KiB
ReStructuredText
==================================
|
|
Register File Data Sampling (RFDS)
|
|
==================================
|
|
|
|
Register File Data Sampling (RFDS) is a microarchitectural vulnerability that
|
|
only affects Intel Atom parts(also branded as E-cores). RFDS may allow
|
|
a malicious actor to infer data values previously used in floating point
|
|
registers, vector registers, or integer registers. RFDS does not provide the
|
|
ability to choose which data is inferred. CVE-2023-28746 is assigned to RFDS.
|
|
|
|
Affected Processors
|
|
===================
|
|
Below is the list of affected Intel processors [#f1]_:
|
|
|
|
=================== ============
|
|
Common name Family_Model
|
|
=================== ============
|
|
ATOM_GOLDMONT 06_5CH
|
|
ATOM_GOLDMONT_D 06_5FH
|
|
ATOM_GOLDMONT_PLUS 06_7AH
|
|
ATOM_TREMONT_D 06_86H
|
|
ATOM_TREMONT 06_96H
|
|
ALDERLAKE 06_97H
|
|
ALDERLAKE_L 06_9AH
|
|
ATOM_TREMONT_L 06_9CH
|
|
RAPTORLAKE 06_B7H
|
|
RAPTORLAKE_P 06_BAH
|
|
ATOM_GRACEMONT 06_BEH
|
|
RAPTORLAKE_S 06_BFH
|
|
=================== ============
|
|
|
|
Mitigation
|
|
==========
|
|
Intel released a microcode update that enables software to clear sensitive
|
|
information using the VERW instruction. Like MDS, RFDS deploys the same
|
|
mitigation strategy to force the CPU to clear the affected buffers before an
|
|
attacker can extract the secrets. This is achieved by using the otherwise
|
|
unused and obsolete VERW instruction in combination with a microcode update.
|
|
The microcode clears the affected CPU buffers when the VERW instruction is
|
|
executed.
|
|
|
|
Mitigation points
|
|
-----------------
|
|
VERW is executed by the kernel before returning to user space, and by KVM
|
|
before VMentry. None of the affected cores support SMT, so VERW is not required
|
|
at C-state transitions.
|
|
|
|
New bits in IA32_ARCH_CAPABILITIES
|
|
----------------------------------
|
|
Newer processors and microcode update on existing affected processors added new
|
|
bits to IA32_ARCH_CAPABILITIES MSR. These bits can be used to enumerate
|
|
vulnerability and mitigation capability:
|
|
|
|
- Bit 27 - RFDS_NO - When set, processor is not affected by RFDS.
|
|
- Bit 28 - RFDS_CLEAR - When set, processor is affected by RFDS, and has the
|
|
microcode that clears the affected buffers on VERW execution.
|
|
|
|
Mitigation control on the kernel command line
|
|
---------------------------------------------
|
|
The kernel command line allows to control RFDS mitigation at boot time with the
|
|
parameter "reg_file_data_sampling=". The valid arguments are:
|
|
|
|
========== =================================================================
|
|
on If the CPU is vulnerable, enable mitigation; CPU buffer clearing
|
|
on exit to userspace and before entering a VM.
|
|
off Disables mitigation.
|
|
========== =================================================================
|
|
|
|
Mitigation default is selected by CONFIG_MITIGATION_RFDS.
|
|
|
|
Mitigation status information
|
|
-----------------------------
|
|
The Linux kernel provides a sysfs interface to enumerate the current
|
|
vulnerability status of the system: whether the system is vulnerable, and
|
|
which mitigations are active. The relevant sysfs file is:
|
|
|
|
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling
|
|
|
|
The possible values in this file are:
|
|
|
|
.. list-table::
|
|
|
|
* - 'Not affected'
|
|
- The processor is not vulnerable
|
|
* - 'Vulnerable'
|
|
- The processor is vulnerable, but no mitigation enabled
|
|
* - 'Vulnerable: No microcode'
|
|
- The processor is vulnerable but microcode is not updated.
|
|
* - 'Mitigation: Clear Register File'
|
|
- The processor is vulnerable and the CPU buffer clearing mitigation is
|
|
enabled.
|
|
|
|
References
|
|
----------
|
|
.. [#f1] Affected Processors
|
|
https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html
|