% linux_configuration_04_mitigations_for_speculative_execution_vulnerablities
%6.14
\section{Mitigations for speculative execution vulnerabilities \texorpdfstring{$\rightarrow$}{->}}
CONFIG\_SPECULATION\_MITIGATIONS [=y] \textbf{[Y]}\\
Sagen Sie hier Y, um Optionen zu aktivieren, die Abhilfemaßnahmen für Hardware-Schwachstellen durch spekulative
Ausführung ermöglichen. Wenn Sie N sagen, werden alle Abhilfemaßnahmen deaktiviert. Sie sollten wirklich wissen,
was Sie tun, um dies anzugeben.
\english{Say Y here to enable options which enable mitigations for hardware vulnerabilities
(usually related to speculative execution).
Mitigations can be disabled or restricted to SMT systems at runtime via the "mitigations" kernel parameter.\\
If you say N, all mitigations will be disabled.
This CANNOT be overridden at runtime.\\
Say 'Y', unless you really know what you are doing.}

%4.1
\subsection{Remove the kernel mapping in user mode}
CONFIG\_PAGE\_TABLE\_ISOLATION [=y] \textbf{[Y]}\\
Diese Funktion reduziert die Anzahl der Hardware-Seitenkanäle, indem sie sicherstellt, dass die meisten
Kernel-Adressen nicht in den Benutzerraum abgebildet werden.\\
Siehe \texttt{Documentation/arch/x86/pti.rst} für weitere Details.
\english{This feature reduces the number of hardware side channels by ensuring that
the majority of kernel addresses are not mapped into userspace.\\
See Documentation/arch/x86/pti.rst for more details.}

%4.2
\subsection{Avoid speculative indirect branches in kernel}
CONFIG\_RETPOLINE [=y] \textbf{[Y]}\\
Kompilieren Sie den Kernel mit den retpoline Compiler-Optionen, um Datenlecks zwischen Kernel und Benutzer
zu verhindern, indem spekulative indirekte Verzweigungen vermieden werden. Erfordert einen Compiler mit
\texttt{-mindirect-branch=thunk-extern} Unterstützung für vollen Schutz. Der Kernel kann langsamer laufen.
\english{Compile kernel with the retpoline compiler options to guard against kernel-to-user
data leaks by avoiding speculative indirect branches.
Requires a compiler with -mindirect-branch=thunk-extern support for full protection.
The kernel may run slower.}

\subsubsection{Enable return-thunks}
CONFIG\_RETHUNK [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit der Compileroption return-thunks, um Datenlecks zwischen Kernel und Benutzer zu
verhindern, indem Rückgabespekulationen vermieden werden. Erfordert einen Compiler mit
\texttt{-mfunction-return=thunk-extern} Unterstützung für vollen Schutz. Der Kernel kann langsamer laufen.
\english{Compile the kernel with the return-thunks compiler option to guard against
kernel-to-user data leaks by avoiding return speculation.
Requires a compiler with -mfunction-return=thunk-extern support for full protection.
The kernel may run slower.}

\paragraph{Enable UNRET on kernel entry}$~$\\
CONFIG\_CPU\_UNRET\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{retbleed=unret}-Abschwächung.
\english{Compile the kernel with support for the retbleed=unret mitigation.}
\note{Wird nur bei AMD-Prozessoren angezeigt.}

%4.3
\subsection{Mitigate RSB underflow with call depth tracking}
CONFIG\_CALL\_DEPTH\_TRACKING [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Call-Depth-Tracking, um das Intel SKL Return-Speculation-Buffer (RSB) Underflow-Problem
zu entschärfen. Die Entschärfung ist standardmäßig ausgeschaltet und muss in der Kernel-Befehlszeile über die
Option \texttt{retbleed=stuff} aktiviert werden. Für nicht betroffene Systeme ist der Overhead dieser Option
marginal, da die Verfolgung der Aufruftiefe zur Laufzeit generierte Call Thunks in einem vom Compiler generierten
Padding-Bereich und Call Patching verwendet. Dies erhöht die Textgröße um $\sim\qty{5}{\percent}$. Bei nicht betroffenen Systemen
ist dieser Platz ungenutzt. Auf betroffenen SKL-Systemen führt dies zu einem erheblichen Leistungsgewinn gegenüber
der IBRS-Abschwächung.
\english{Compile the kernel with call depth tracking to mitigate the
Intel SKL Return-Stack-Buffer (RSB) underflow issue.
The mitigation is off by default and needs to be enabled on the kernel command line via the
retbleed=stuff option.
For non-affected systems the overhead of this option is marginal as the call depth tracking
is using run-time generated call thunks in a compiler generated padding area and call patching.
This increases text size by $\sim$5\%. For non affected systems this space is unused.
On affected SKL systems this results in a significant performance gain over the IBRS mitigation.}

\subsubsection{Enable call thunks and call depth tracking debugging}
CONFIG\_CALL\_THUNKS\_DEBUG [=n] \textbf{[N]}\\
Aktiviere Call/Ret-Zähler zur Erkennung von Ungleichgewichten und baue ein lautes dmesg über die Erzeugung von
Callthunks und Call-Patching zur Fehlersuche ein. Die Debug-Ausdrucke müssen in der Kernel-Befehlszeile mit
\texttt{debug-callthunks} aktiviert werden. Aktivieren Sie dies nur, wenn Sie Call Thunks debuggen wollen,
da dies einen spürbaren Laufzeit-Overhead erzeugt. Wenn Sie unsicher sind, sagen Sie N.
\english{Enable call/ret counters for imbalance detection and build in a noisy dmesg about
callthunks generation and call patching for trouble shooting.
The debug prints need to be enabled on the kernel command line with 'debug-callthunks'.
Only enable this when you are debugging call thunks as this creates a noticeable runtime overhead.
If unsure say N.}

%4.4
\subsection{Enable IBPB on kernel entry}
CONFIG\_CPU\_IBPB\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{retbleed=ibpb}-Abschwächung.
\english{Compile the kernel with support for the retbleed=ibpb and spec\_rstack\_overflow={ibpb,ibpb-vmexit} mitigations.}

%4.5
\subsection{Enable IBRS on kernel entry}
CONFIG\_CPU\_IBRS\_ENTRY [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Unterstützung für die \texttt{spectre\_v2=ibrs}-Abschwächung.
Dadurch werden sowohl spectre\_v2 als auch retbleed auf Kosten der Leistung abgeschwächt.
\english{Compile the kernel with support for the spectre\_v2=ibrs mitigation.
This mitigates both spectre\_v2 and retbleed at great cost to performance.}

%4.6
\subsection{Mitigate speculative RAS overflow on AMD}
CONFIG\_MITIGATION\_SRSO [=y] \textbf{[N]}\\
Aktiviert die SRSO-Abschwächung, die auf AMD Zen1-4-Maschinen benötigt wird.
\english{Enable the SRSO mitigation needed on AMD Zen1-4 machines.}

%4.7
\subsection{Mitigate Straight-Line-Speculation}
CONFIG\_MITIGATION\_SLS [=y] \textbf{[Y]}\\
Kompiliere den Kernel mit Straight-Line-Speculation-Optionen, um ihn vor Straight-Line-Speculation zu
schützen. Das Kernel-Image könnte etwas größer sein.
\english{Compile the kernel with straight-line-speculation options to guard against straight line speculation.
The kernel image might be slightly larger.}


{\color{gray}{
\subsection*{Force GDS Mitigation}
CONFIG\_GDS\_FORCE\_MITIGATION [=n] \textbf{[N]}\\
Gather Data Sampling (GDS) ist eine Hardware-Schwachstelle, die unberechtigten spekulativen Zugriff auf
Daten ermöglicht, die zuvor in Vektorregistern gespeichert wurden. Diese Option ist gleichbedeutend mit
der Einstellung \texttt{gather\_data\_sampling=force} in der Befehlszeile. Die Mikrocode-Abschwächung
wird verwendet, falls vorhanden, andernfalls wird AVX als Abschwächung deaktiviert. Auf betroffenen
Systemen, denen der Microcode fehlt, wird jeder Userspace-Code, der AVX bedingungslos verwendet, bei
gesetzter Option abbrechen. Das Setzen dieser Option auf Systemen, die nicht für GDS anfällig sind, hat
keine Auswirkungen.\\
Im Zweifelsfall sagen Sie N.}}

%4.8
\subsection{Mitigate Gather Data Sampling}
CONFIG\_MITIGATION\_GDS [=y] \textbf{[Y]}\\
Entschärfung für Gather Data Sampling (GDS) aktivieren.
GDS ist eine Hardware-Schwachstelle, die unprivilegierten spekulativen Zugriff auf Daten
ermöglicht, die zuvor in Vektorregistern gespeichert wurden.
Der Angreifer verwendet Gather-Anweisungen, um die veralteten Vektorregisterdaten zu ermitteln.
\english{Enable mitigation for Gather Data Sampling (GDS).
GDS is a hardware vulnerability which allows unprivileged speculative access to data
which was previously stored in vector registers.
The attacker uses gather instructions to infer the stale vector register data.}

%4.9
\subsection{RFDS Mitigation}
CONFIG\_MITIGATION\_RFDS [=y] \textbf{[Y]}\\
Aktivieren Sie standardmäßig die Schadensbegrenzung für Register File Data Sampling (RFDS).
RFDS ist eine Hardware-Schwachstelle, die Intel Atom CPUs betrifft.
Sie ermöglicht unprivilegierten spekulativen Zugriff auf veraltete Daten, die zuvor in Gleitkomma-, Vektor- und Integer-Registern gespeichert wurden.
Siehe auch $<$file:Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst$>$
\english{Enable mitigation for Register File Data Sampling (RFDS) by default.
RFDS is a hardware vulnerability which affects Intel Atom CPUs.
It allows unprivileged speculative access to stale data previously stored in floating point,
vector and integer registers.
See also $<$file:Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst$>$}

%4.10
\subsection{Mitigate Spectre-BHB (Branch History Injection)}
CONFIG\_MITIGATION\_SPECTRE\_BHI [=y] \textbf{[Y]}\\
Aktivieren Sie BHI-Abschwächungen.
BHI-Angriffe sind eine Form von Spectre-V2-Angriffen, bei denen der Branch-History-Puffer
vergiftet wird, um indirekte Verzweigungen spekulativ zu steuern.
Siehe $<$file:Documentation/admin-guide/hw-vuln/spectre.rst$>$
\english{Enable BHI mitigations. BHI attacks are a form of Spectre V2 attacks
where the branch history buffer is poisoned to speculatively steer indirect branches.
See $<$file:Documentation/admin-guide/hw-vuln/spectre.rst$>$}

%4.11
\subsection{Mitigate Microarchitectural Data Sampling (MDS) hardware bug}
CONFIG\_MITIGATION\_MDS [=y] \textbf{[Y]}\\*
Aktiviert die Abschwächung für Microarchitectural Data Sampling (MDS).
MDS ist eine Hardware-Schwachstelle, die unprivilegierten spekulativen Zugriff
auf Daten ermöglicht, die in verschiedenen CPU-internen Puffern verfügbar sind.\\
Siehe auch $<$file:Documentation/admin-guide/hw-vuln/mds.rst$>$
\english{Enable mitigation for Microarchitectural Data Sampling (MDS).
MDS is a hardware vulnerability which allows unprivileged speculative access
to data which is available in various CPU internal buffers.\\
See also $<$file:Documentation/admin-guide/hw-vuln/mds.rst$>$}

%4.12
\subsection{Mitigate TSX Asynchronous Abort (TAA) hardware bug}
CONFIG\_MITIGATION\_TAA [=y] \textbf{[Y]}\\*
Aktivieren Sie die Schadensbegrenzung für TSX Asynchronous Abort (TAA).
TAA ist eine Hardware-Schwachstelle, die unprivilegierten spekulativen Zugriff
auf Daten ermöglicht, die in verschiedenen CPU-internen Puffern verfügbar sind,
indem asynchrone Abbrüche innerhalb einer Intel TSX-Transaktionsregion verwendet werden.
Siehe auch $<$file:Documentation/admin-guide/hw-vuln/tsx\_async\_abort.rst$>$
\english{Enable mitigation for TSX Asynchronous Abort (TAA).
TAA is a hardware vulnerability that allows unprivileged speculative access to data which is available in various
CPU internal buffers by using asynchronous aborts within an Intel TSX transactional region.
See also $<$file:Documentation/admin-guide/hw-vuln/tsx\_async\_abort.rst$>$}

%4.13
\subsection{Mitigate MMIO Stale Data hardware bug}
CONFIG\_MITIGATION\_MMIO\_STALE\_DATA [=y] \textbf{[Y]}\\*
Entschärfung von MMIO Stale Data-Hardwarefehlern aktivieren.
MMIO Stale Data-Schwachstellen in Prozessoren sind eine Klasse von Memory-Mapped I/O (MMIO)-Schwachstellen, die Daten preisgeben können.
Die Schwachstellen erfordern, dass der Angreifer Zugriff auf MMIO.\\
Siehe auch \texttt{file:Documentation/admin-guide/hw-vuln/processor\_mmio\_stale\_data.rst}
\english{Enable mitigation for MMIO Stale Data hardware bugs.
Processor MMIO Stale Data Vulnerabilities are a class of memory-mapped I/O (MMIO) vulnerabilities that can expose data.
The vulnerabilities require the attacker to have access to MMIO.\\
See also $<$file:Documentation/admin-guide/hw-vuln/processor\_mmio\_stale\_data.rst$>$}

%4.14
\subsection{Mitigate L1 Terminal Fault (L1TF) hardware bug}
CONFIG\_MITIGATION\_L1TF [=y] \textbf{[Y]}\\*
Entschärfung des L1 Terminal Fault (L1TF) Hardware-Fehlers.
L1 Terminal Fault ist eine Hardware-Schwachstelle, die unprivilegierten spekulativen Zugriff auf die im Level 1 Data Cache verfügbaren Daten ermöglicht.\\
Siehe \texttt{file:Documentation/admin-guide/hw-vuln/l1tf.rst}
\english{Mitigate L1 Terminal Fault (L1TF) hardware bug.
L1 Terminal Fault is a hardware vulnerability which allows unprivileged speculative access to data available in the Level 1 Data Cache.\\
See $<$file:Documentation/admin-guide/hw-vuln/l1tf.rst}

%4.15
\subsection{Mitigate RETBleed hardware bug}
CONFIG\_MITIGATION\_RETBLEED [=y] \textbf{[Y]}\\*
Aktivieren Sie Entschärfung für die RETBleed-Schwachstelle (Arbitrary Speculative Code Execution with Return Instructions).
RETBleed ist ein spekulativer Ausführungsangriff, der das mikroarchitektonische Verhalten in vielen modernen Mikroprozessoren ausnutzt, ähnlich wie bei Spectre v2.
Ein unprivilegierter Angreifer kann diese Schwachstellen nutzen, um herkömmliche Speichersicherheitsbeschränkungen zu umgehen und Lesezugriff auf
privilegierten Speicher zu erlangen, der ansonsten unzugänglich wäre.
\english{Enable mitigation for RETBleed (Arbitrary Speculative Code Execution with Return Instructions) vulnerability.
RETBleed is a speculative execution attack which takes advantage of microarchitectural behavior in many modern microprocessors, similar to Spectre v2.
An unprivileged attacker can use these flaws to bypass conventional memory security restrictions to gain read access to privileged memory
that would otherwise be inaccessible.}

%4.16
\subsection{Mitigate SPECTRE V1 hardware bug}
CONFIG\_MITIGATION\_SPECTRE\_V1 [=y] \textbf{[Y]}\\*
Aktiviert die Schadensbegrenzung für Spectre V1 (Bounds Check Bypass).
Spectre V1 ist eine Klasse von Seitenkanalangriffen, die sich die spekulative Ausführung zunutze macht, indem sie bedingte Verzweigungsanweisungen umgeht, die für die Überprüfung der Speicherzugriffsgrenzen verwendet werden.
Siehe auch \texttt{file:Documentation/admin-guide/hw-vuln/spectre.rst}
\english{Enable mitigation for Spectre V1 (Bounds Check Bypass).
Spectre V1 is a class of side channel attacks that takes advantage of speculative execution that bypasses conditional
branch instructions used for memory access bounds check.\\
See also $<$file:Documentation/admin-guide/hw-vuln/spectre.rst$>$}

%4.17
\subsection{Mitigate SPECTRE V2 hardware bug}
CONFIG\_MITIGATION\_SPECTRE\_V2 [=y] \textbf{[Y]}\\*
Aktivierung der Schadensbegrenzung für Spectre V2 (Branch Target Injection).
Spectre V2 ist eine Klasse von Seitenkanalangriffen, die indirekte Verzweigungsvorhersagen innerhalb des Prozessors ausnutzen.
Bei Angriffen der Spectre-Variante 2 kann der Angreifer spekulative indirekte Verzweigungen im Opfer zu Gadget-Code lenken, indem er
den Verzweigungszielpuffer einer CPU vergiftet, der für die Vorhersage indirekter Verzweigungsadressen verwendet wird.\\
Siehe auch $<$file:Documentation/admin-guide/hw-vuln/spectre.rst$>$
\english{Enable mitigation for Spectre V2 (Branch Target Injection).
Spectre V2 is a class of side channel attacks that takes advantage of indirect branch predictors inside the processor.
In Spectre variant 2 attacks, the attacker can steer speculative indirect branches in the victim to gadget code by poisoning
the branch target buffer of a CPU used for predicting indirect branch addresses.\\
See also $<$file:Documentation/admin-guide/hw-vuln/spectre.rst$>$}

%4.18
\subsection{Mitigate Special Register Buffer Data Sampling (SRBDS) hardware bug}
CONFIG\_MITIGATION\_SRBDS [=y] \textbf{[Y]}\\*
Aktivierung der Schadensbegrenzung für Special Register Buffer Data Sampling (SRBDS).
SRBDS ist eine Hardware-Schwachstelle, die es MDS-Techniken (Microarchitectural Data Sampling) ermöglicht,
von Spezialregisterzugriffen zurückgegebene Werte abzuleiten.
Ein nicht privilegierter Benutzer kann mithilfe von MDS-Techniken Werte extrahieren, die von RDRAND und RDSEED zurückgegeben werden,
die auf einem anderen Kern oder Geschwister-Thread ausgeführt werden.\\
Siehe \texttt{file:Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst}
\english{Enable mitigation for Special Register Buffer Data Sampling (SRBDS).
SRBDS is a hardware vulnerability that allows Microarchitectural Data Sampling (MDS) techniques to infer values returned from special register accesses.
An unprivileged user can extract values returned from RDRAND and RDSEED executed on another core or sibling thread using MDS techniques.\\
See also $<$file:Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst$>$}

%4.19
\subsection{Mitigate Speculative Store Bypass (SSB) hardware bug}
CONFIG\_MITITGATION\_SSB [=y] \textbf{[Y]}\\*
Aktivierung der Schadensbegrenzung für Speculative Store Bypass (SSB).
SSB ist eine Hardware-Sicherheitslücke, deren Ausnutzung die spekulative Ausführung ähnlich wie bei den Sicherheitslücken Meltdown und Spectre ausnutzt.
\english{Enable mitigation for Speculative Store Bypass (SSB).
SSB is a hardware security vulnerability and its exploitation takes advantage
of speculative execution in a similar way to the Meltdown and Spectre security vulnerabilities.}
