UPD Chapter 17 Security Options, UPD PKGBUILD: installing unstripped VDSO
This commit is contained in:
4
PKGBUILD
4
PKGBUILD
@@ -208,6 +208,10 @@ _package-headers() {
|
|||||||
install -Dt "$builddir/rust" -m644 rust/*.rmeta
|
install -Dt "$builddir/rust" -m644 rust/*.rmeta
|
||||||
install -Dt "$builddir/rust" rust/*.so
|
install -Dt "$builddir/rust" rust/*.so
|
||||||
|
|
||||||
|
echo "Installing unstripped VDSO..."
|
||||||
|
make INSTALL_MOD_PATH="$pkgdir/usr" vdso_install \
|
||||||
|
link= # Suppress build-id symlinks
|
||||||
|
|
||||||
echo "Removing unneeded architectures..."
|
echo "Removing unneeded architectures..."
|
||||||
local arch
|
local arch
|
||||||
for arch in "$builddir"/arch/*/; do
|
for arch in "$builddir"/arch/*/; do
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
--- ../config 2025-03-22 10:51:40.890879749 +0100
|
--- ../config 2025-03-23 11:31:27.616856277 +0100
|
||||||
+++ .config 2025-03-22 21:46:55.737306884 +0100
|
+++ .config 2025-03-23 17:05:19.342148578 +0100
|
||||||
@@ -31,7 +31,7 @@
|
@@ -31,7 +31,7 @@
|
||||||
#
|
#
|
||||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
|
|||||||
@@ -11,10 +11,11 @@
|
|||||||
|
|
||||||
\includeonly{
|
\includeonly{
|
||||||
%linux_configuration_13_memory_management_options,
|
%linux_configuration_13_memory_management_options,
|
||||||
linux_configuration_15_device_drivers,
|
%linux_configuration_15_device_drivers,
|
||||||
linux_configuration_16_file_systems,
|
%linux_configuration_16_file_systems,
|
||||||
linux_configuration_17_security_options
|
%linux_configuration_17_security_options,
|
||||||
}
|
linux_configuration_18_cryptographic_API
|
||||||
|
}
|
||||||
|
|
||||||
\documentclass[10pt,a4paper]{article}
|
\documentclass[10pt,a4paper]{article}
|
||||||
%\documentclass[12pt,a4paper]{report}
|
%\documentclass[12pt,a4paper]{report}
|
||||||
|
|||||||
@@ -775,3 +775,257 @@ Wenn diese Option aktiviert ist, werden nur CA-Schlüssel zum Maschinenschlüsse
|
|||||||
By default no restrictions are in place and all Machine Owner Keys (MOK) are added to the machine keyring.
|
By default no restrictions are in place and all Machine Owner Keys (MOK) are added to the machine keyring.
|
||||||
If enabled only CA keys are added to the machine keyring, all other MOK keys load into the platform keyring.}
|
If enabled only CA keys are added to the machine keyring, all other MOK keys load into the platform keyring.}
|
||||||
|
|
||||||
|
\subsubsection{Enables integrity auditing support}
|
||||||
|
CONFIG\_INTEGRITY\_AUDIT [=y] \textbf{[Y]}\\*
|
||||||
|
Zusätzlich zum Aktivieren der Unterstützung für Integritätsprüfungen fügt diese Option einen Kernelparameter \texttt{integrity\_audit}
|
||||||
|
hinzu, der den Grad der Integritätsprüfungsmeldungen steuert.\\*
|
||||||
|
0 -- einfache Integritätsprüfungsmeldungen (Standard)\\*
|
||||||
|
1 -- zusätzliche Integritätsprüfungsmeldungen\\\
|
||||||
|
Zusätzliche Informationsmeldungen zur Integritätsprüfung können durch die Angabe von\\\texttt{integrity\_audit=1}
|
||||||
|
in der Kernel-Befehlszeile aktiviert werden.
|
||||||
|
\english{In addition to enabling integrity auditing support, this option adds a kernel parameter `integrity\_audit', which
|
||||||
|
controls the level of integrity auditing messages.\\*
|
||||||
|
0 -- basic integrity auditing messages (default)\\*
|
||||||
|
1 -- additional integrity auditing messages\\
|
||||||
|
Additional informational integrity auditing messages would be enabled by specifying `integrity\_audit=1' on the kernel command line.}
|
||||||
|
|
||||||
|
\subsubsection{Integrity Measurement Architecture(IMA)}
|
||||||
|
CONFIG\_IMA [=n] \textbf{[N]}\\
|
||||||
|
Die Laufzeit-Integritätsmessarchitektur (IMA) der Trusted Computing Group (TCG) verwaltet eine Liste von Hash-Werten ausführbarer
|
||||||
|
Dateien und anderer sensibler Systemdateien, wenn diese gelesen oder ausgeführt werden.
|
||||||
|
Wenn es einem Angreifer gelingt, den Inhalt einer wichtigen Systemdatei, die gemessen wird, zu ändern, können wir das feststellen.\\
|
||||||
|
Wenn Ihr System mit einem TPM-Chip ausgestattet ist, verwaltet IMA auch einen aggregierten Integritätswert über diese Liste innerhalb
|
||||||
|
der TPM-Hardware, so dass das TPM einem Dritten beweisen kann, ob kritische Systemdateien geändert wurden oder nicht.
|
||||||
|
Lesen Sie \url{https://www.usenix.org/events/sec04/tech/sailer.html}, um mehr über IMA zu erfahren.\\
|
||||||
|
Wenn Sie unsicher sind, sagen Sie N.
|
||||||
|
\english{The Trusted Computing Group(TCG) runtime Integrity Measurement Architecture(IMA) maintains a list of hash values of executables
|
||||||
|
and other sensitive system files, as they are read or executed.
|
||||||
|
If an attacker manages to change the contents of an important system file being measured, we can tell.
|
||||||
|
If your system has a TPM chip, then IMA also maintains an aggregate integrity value over this list inside the TPM hardware,
|
||||||
|
so that the TPM can prove to a third party whether or not critical system files have been modified.
|
||||||
|
Read \url{https://www.usenix.org/events/sec04/tech/sailer.html} to learn more about IMA.
|
||||||
|
If unsure, say N.}
|
||||||
|
|
||||||
|
\subsubsection{EVM support}
|
||||||
|
CONFIG\_EVM [=n] \textbf{[N]}\\
|
||||||
|
EVM schützt die erweiterten Sicherheitsattribute einer Datei vor Integritätsangriffen.\\
|
||||||
|
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
|
||||||
|
\english{EVM protects a file's security extended attributes against integrity attacks.\\
|
||||||
|
If you are unsure how to answer this question, answer N.}
|
||||||
|
|
||||||
|
%17.26
|
||||||
|
\subsection{First legacy `major LSM' to be initialized () \texorpdfstring{$\longrightarrow$}{->}}
|
||||||
|
Diese Auswahl ist nur dazu da, CONFIG\_DEFAULT\_SECURITY in alten Kernelkonfigurationen in CONFIG\_LSM in neuen
|
||||||
|
Kernelkonfigurationen zu konvertieren.
|
||||||
|
Ändern Sie diese Auswahl nicht, es sei denn, Sie erstellen eine neue Kernelkonfiguration, denn diese Auswahl wird ignoriert,
|
||||||
|
nachdem CONFIG\_LSM gesetzt wurde.\\
|
||||||
|
Wählt das \texttt{major security module} aus, das zuerst initialisiert wird.
|
||||||
|
Überschrieben durch CONFIG\_LSM, das nicht standardmäßig gesetzt ist.
|
||||||
|
\english{This choice is there only for converting CONFIG\_DEFAULT\_SECURITY in old kernel configs to CONFIG\_LSM in new kernel configs.
|
||||||
|
Don't change this choice unless you are creating a fresh kernel config, for this choice will be ignored after CONFIG\_LSM has been set.\\
|
||||||
|
Selects the legacy ``major security module'' that will be initialized first.
|
||||||
|
Overridden by non-default CONFIG\_LSM.}
|
||||||
|
|
||||||
|
\subsubsection{SELinux}
|
||||||
|
CONFIG\_DEFAULT\_SECURITY\_SELINUX [=n] \textbf{[N]}\\
|
||||||
|
Für diese Option ist keine Hilfe verfügbar.
|
||||||
|
\english{There is no help available for this option.}
|
||||||
|
|
||||||
|
\subsubsection{Simplified Mandatory Access Control}
|
||||||
|
CONFIG\_DEFAULT\_SECURITY\_SMACK [=n] \textbf{[N]}\\
|
||||||
|
Für diese Option ist keine Hilfe verfügbar.
|
||||||
|
\english{There is no help available for this option.}
|
||||||
|
|
||||||
|
\subsubsection{TOMOYO}
|
||||||
|
CONFIG\_DEFAULT\_SECURITY\_TOMOYO [=n] \textbf{[N]}\\
|
||||||
|
Für diese Option ist keine Hilfe verfügbar.
|
||||||
|
\english{There is no help available for this option.}
|
||||||
|
|
||||||
|
\subsubsection{AppArmor}
|
||||||
|
CONFIG\_DEFAULT\_SECURITY\_APPARMOR [=n] \textbf{[N]}\\
|
||||||
|
Für diese Option ist keine Hilfe verfügbar.
|
||||||
|
\english{There is no help available for this option.}
|
||||||
|
|
||||||
|
|
||||||
|
\subsubsection{Unix Discretionary Access Controls}
|
||||||
|
CONFIG\_DEFAULT\_SECURITY\_DAC [=y] \textbf{[Y]}\\
|
||||||
|
Für diese Option ist keine Hilfe verfügbar.
|
||||||
|
\english{There is no help available for this option.}
|
||||||
|
|
||||||
|
\subsection{Ordered list of enabled LSMs}
|
||||||
|
CONFIG\_LSM [=landlock,lockdown,yama,integrity,bpf] \textbf{[landlock,lockdown,yama,integrity,bpf]}\\
|
||||||
|
Eine durch Kommata getrennte Liste von LSMs in der Reihenfolge der Initialisierung.
|
||||||
|
Alle LSMs, die in dieser Liste fehlen, mit Ausnahme derjenigen mit der Reihenfolge LSM\_ORDER\_FIRST und LSM\_ORDER\_LAST,
|
||||||
|
die immer aktiviert werden, wenn sie in der Kernelkonfiguration ausgewählt sind, werden ignoriert.
|
||||||
|
Dies kann beim Booten mit dem Parameter \texttt{lsm=} kontrolliert werden.\\
|
||||||
|
Wenn Sie unsicher sind, belassen Sie dies als Voreinstellung.
|
||||||
|
\english{A comma-separated list of LSMs, in initialization order.
|
||||||
|
Any LSMs left off this list, except for those with order LSM\_ORDER\_FIRST and LSM\_ORDER\_LAST, which are always enabled
|
||||||
|
if selected in the kernel configuration, will be ignored.
|
||||||
|
This can be controlled at boot with the ``lsm='' parameter.\\
|
||||||
|
If unsure, leave this as the default.}
|
||||||
|
|
||||||
|
%17.28
|
||||||
|
\subsection{Kernel hardening options \texorpdfstring{$\longrightarrow$}{->}}
|
||||||
|
|
||||||
|
\subsubsection{Memory initialization \texorpdfstring{$\longrightarrow$}{->}}
|
||||||
|
|
||||||
|
\paragraph{Initialize kernel stack variables at function entry () \texorpdfstring{$\longrightarrow$}{->}}\mbox{}\\
|
||||||
|
Diese Option ermöglicht die Initialisierung von Stack-Variablen zum Zeitpunkt des Funktionseintritts.
|
||||||
|
Dies hat die Möglichkeit, die größte Abdeckung zu haben (da alle Funktionen ihre Variablen initialisieren lassen können),
|
||||||
|
aber die Leistungsauswirkungen hängen von der Komplexität der Funktionsaufrufe eines bestimmten Workloads ab.\\
|
||||||
|
Damit wird der Abdeckungsgrad über Klassen von potenziell nicht initialisierten Variablen ausgewählt.
|
||||||
|
Die ausgewählte Klasse von Variablen wird vor der Verwendung in einer Funktion initialisiert.
|
||||||
|
\english{This option enables initialization of stack variables at function entry time.
|
||||||
|
This has the possibility to have the greatest coverage (since all functions can have their variables initialized),
|
||||||
|
but the performance impact depends on the function calling complexity of a given workload's syscalls.\\
|
||||||
|
This chooses the level of coverage over classes of potentially uninitialized variables.
|
||||||
|
The selected class of variable will be initialized before use in a function.}
|
||||||
|
|
||||||
|
\subparagraph{no automatic stack variable initialization (weakest)}\mbox{}\\
|
||||||
|
CONFIG\_INIT\_STACK\_NONE [=n] \textbf{[N]}\\
|
||||||
|
Deaktivieren der automatischen Initialisierung von Stack-Variablen.
|
||||||
|
Dies macht den Kernel anfällig für die Standardklassen der Ausnutzung nicht initialisierter Stack-Variablen
|
||||||
|
und der Preisgabe von Informationen.
|
||||||
|
\english{Disable automatic stack variable initialization.
|
||||||
|
This leaves the kernel vulnerable to the standard classes of uninitialized stack variable exploits and information exposures.}
|
||||||
|
|
||||||
|
\subparagraph{pattern-init everything (strongest)}\mbox{}\\
|
||||||
|
CONFIG\_INIT\_STACK\_ALL\_PATTERN [=n] \textbf{[N]}\\
|
||||||
|
Initialisiert alles auf dem Stack (einschließlich Padding) mit einem bestimmten Debug-Wert.
|
||||||
|
Auf diese Weise sollen alle Klassen von nicht initialisierten Stack-Variablen ausgenutzt und Informationen preisgegeben werden,
|
||||||
|
selbst Variablen, vor denen gewarnt wurde, weil sie nicht initialisiert wurden.
|
||||||
|
Es ist bekannt, dass die Initialisierung von Mustern viele bestehende Fehler im Zusammenhang mit nicht initialisierten Locals provoziert,
|
||||||
|
z.\,B. wenn Zeiger Nicht-NULL-Werte erhalten, Puffergrößen und Indizes sehr groß sind.
|
||||||
|
Das Muster ist situationsabhängig; Clang auf 64-Bit verwendet \texttt{0xAA}-Wiederholungen für alle Typen und Padding außer float und double,
|
||||||
|
die \texttt{0xFF}-Wiederholungen (-NaN) verwenden.
|
||||||
|
Clang auf 32-Bit verwendet \text{0xFF}-Wiederholungen für alle Typen und Auffüllungen.
|
||||||
|
\english{Initializes everything on the stack (including padding) with a specific debug value.
|
||||||
|
This is intended to eliminate all classes of uninitialized stack variable exploits and information exposures,
|
||||||
|
even variables that were warned about having been left uninitialized.\\
|
||||||
|
Pattern initialization is known to provoke many existing bugs related to uninitialized locals, e.g. pointers receive non-NULL values,
|
||||||
|
buffer sizes and indices are very big.
|
||||||
|
The pattern is situation-specific; Clang on 64-bit uses 0xAA repeating for all types and padding except float and double which use 0xFF
|
||||||
|
repeating (-NaN).
|
||||||
|
Clang on 32-bit uses 0xFF repeating for all types and padding.}
|
||||||
|
|
||||||
|
\subparagraph{zero-init everything (strongest and safest)}\mbox{}\\
|
||||||
|
CONFIG\_INIT\_STACK\_ALL\_ZERO [=y] \textbf{[Y]}\\
|
||||||
|
Initialisiert alles auf dem Stack (einschließlich Padding) mit einem Nullwert.
|
||||||
|
Damit sollen alle Arten von Exploits für nicht initialisierte Stack-Variablen und die Preisgabe von Informationen verhindert werden,
|
||||||
|
selbst bei Variablen, vor denen gewarnt wurde, dass sie nicht initialisiert wurden.
|
||||||
|
Die Nullinitialisierung bietet sichere Standardwerte für Strings (sofort NUL-terminiert), Zeiger (NULL), Indizes (Index 0)
|
||||||
|
und Größen (0 Länge) und ist daher als Sicherheitsmaßnahme für die Produktion besser geeignet als die Musterinitialisierung (pattern init).
|
||||||
|
\english{Initializes everything on the stack (including padding) with a zero value.
|
||||||
|
This is intended to eliminate all classes of uninitialized stack variable exploits and information exposures,
|
||||||
|
even variables that were warned about having been left uninitialized.\\
|
||||||
|
Zero initialization provides safe defaults for strings (immediately NUL-terminated), pointers (NULL), indices (index 0),
|
||||||
|
and sizes (0 length), so it is therefore more suitable as a production security mitigation than pattern initialization.}
|
||||||
|
|
||||||
|
\paragraph{Enable heap memory zeroing on allocation by default}\mbox{}\\
|
||||||
|
CONFIG\_INIT\_ON\_ALLOC\_DEFAULT\_ON [=y] \textbf{[Y]}\\
|
||||||
|
Dies hat den Effekt, dass \texttt{init\_on\_alloc=1} auf der Kernel-Kommandozeile gesetzt wird.
|
||||||
|
Dies kann mit \texttt{init\_on\_alloc=0} deaktiviert werden.
|
||||||
|
Wenn \texttt{init\_on\_alloc} aktiviert ist, wird der gesamte Speicher des Page Allocators und des Slab Allocators bei
|
||||||
|
der Allokation auf Null gesetzt, wodurch viele Arten von \glqq uninitialisiertem Heap-Speicher\grqq{} vermieden werden,
|
||||||
|
insbesondere die Gefährdung des Heap-Inhalts.
|
||||||
|
Die Auswirkungen auf die Leistung variieren je nach Arbeitslast, aber in den meisten Fällen sind \qty{<1}{\percent} Auswirkungen zu verzeichnen.
|
||||||
|
Bei einigen synthetischen Workloads wurden sogar bis zu \qty{7}{\percent} gemessen.
|
||||||
|
\english{This has the effect of setting ``init\_on\_alloc=1'' on the kernel command line.\\
|
||||||
|
This can be disabled with ``init\_on\_alloc=0''.
|
||||||
|
When ``init\_on\_alloc'' is enabled, all page allocator and slab allocator memory will be zeroed when allocated, eliminating
|
||||||
|
many kinds of ``uninitialized heap memory'' flaws, especially heap content exposures.
|
||||||
|
The performance impact varies by workload, but most cases see $<1\%$ impact.
|
||||||
|
Some synthetic workloads have measured as high as $7\%$.}
|
||||||
|
|
||||||
|
\paragraph{Enable heap memory zeroing on free by default}\mbox{}\\
|
||||||
|
CONFIG\_INIT\_ON\_FREE\_DEFAULT\_ON [=y] \textbf{[Y]}\\
|
||||||
|
Dies hat den Effekt, dass \texttt{init\_on\_free=1} auf der Kernel-Kommandozeile gesetzt wird.\\
|
||||||
|
Dies kann mit \texttt{init\_on\_free=0} deaktiviert werden.
|
||||||
|
Ähnlich wie bei \texttt{init\_on\_alloc} wird bei der Aktivierung von \texttt{init\_on\_free} der gesamte Speicher des Page Allocators
|
||||||
|
und des Slab Allocators beim Freigeben auf Null gesetzt, wodurch viele Arten von \glqq uninitialisiertem Heap-Speicher\grqq{} vermieden werden,
|
||||||
|
insbesondere die Aufdeckung von Heap-Inhalten.
|
||||||
|
Der Hauptunterschied zu \texttt{init\_on\_free} besteht darin, dass die Lebensdauer der Daten im Speicher verkürzt wird,
|
||||||
|
da alles, was freigegeben wird, sofort gelöscht wird, so dass Live-Forensik oder Cold-Boot-Speicherangriffe nicht in der Lage sind,
|
||||||
|
freigegebene Speicherinhalte wiederherzustellen.
|
||||||
|
Die Auswirkung auf die Leistung variiert je nach Arbeitslast, ist aber teurer als \texttt{init\_on\_alloc} aufgrund
|
||||||
|
der negativen Cache-Effekte beim Berühren von \glqq kalten\grqq{} Speicherbereichen.
|
||||||
|
In den meisten Fällen sind die Auswirkungen \qtyrange{3}{5}{\percent}.
|
||||||
|
Bei einigen synthetischen Workloads wurden bis zu \qty{8}{\percent} gemessen.
|
||||||
|
\english{This has the effect of setting ``init\_on\_free=1'' on the kernel command line.
|
||||||
|
This can be disabled with ``init\_on\_free=0''.
|
||||||
|
Similar to ``init\_on\_alloc'', when ``init\_on\_free'' is enabled, all page allocator and slab allocator memory will be zeroed
|
||||||
|
when freed, eliminating many kinds of ``uninitialized heap memory'' flaws, especially heap content exposures.
|
||||||
|
The primary difference with ``init\_on\_free'' is that data lifetime in memory is reduced, as anything freed is wiped immediately,
|
||||||
|
making live forensics or cold boot memory attacks unable to recover freed memory contents.
|
||||||
|
The performance impact varies by workload, but is more expensive than ``init\_on\_alloc'' due to the negative cache effects of
|
||||||
|
touching ``cold'' memory areas. Most cases see 3-5\% impact.
|
||||||
|
Some synthetic workloads have measured as high as 8\%.}
|
||||||
|
|
||||||
|
|
||||||
|
\paragraph{Enable register zeroing on function exit}\mbox{}\\
|
||||||
|
CONFIG\_ZERO\_CALL\_USED\_REGS [=n] \textbf{[N]}\\
|
||||||
|
Am Ende von Funktionen sollten alle vom Aufrufer verwendeten Registerinhalte immer auf Null gesetzt werden.
|
||||||
|
Dies trägt dazu bei, dass temporäre Werte nicht über die Funktionsgrenze hinaus durchsickern.
|
||||||
|
Dies bedeutet, dass Registerinhalte weniger wahrscheinlich für Seitenkanäle und Informationsoffenlegung zur Verfügung stehen.
|
||||||
|
Außerdem wird dadurch die Anzahl der nützlichen ROP-Gadgets im resultierenden Kernel-Image um etwa \qty{20}{\percent}
|
||||||
|
reduziert (und die vom Compiler erzeugten \texttt{write-what-where}-Gadgets werden entfernt).
|
||||||
|
Dies hat bei den meisten Workloads einen Leistungseinfluss von weniger als \qty{1}{\%}.
|
||||||
|
Das Wachstum der Abbildgröße hängt von der Architektur ab und sollte auf seine Eignung geprüft werden.
|
||||||
|
Zum Beispiel wächst x86\_64 um weniger als \qty{1}{\%}, und arm64 wächst um etwa \qty{5}{\%}.
|
||||||
|
\english{At the end of functions, always zero any caller-used register contents.
|
||||||
|
This helps ensure that temporary values are not leaked beyond the function boundary.
|
||||||
|
This means that register contents are less likely to be available for side channels and information exposures.
|
||||||
|
Additionally, this helps reduce the number of useful ROP gadgets by about 20\% (and removes compiler
|
||||||
|
generated ``write-what-where'' gadgets) in the resulting kernel image.
|
||||||
|
This has a less than 1\% performance impact on most workloads.
|
||||||
|
Image size growth depends on architecture, and should be evaluated for suitability.
|
||||||
|
For example, x86\_64 grows by less than 1\%, and arm64 grows by about 5\%.}
|
||||||
|
|
||||||
|
|
||||||
|
\subsubsection{Hardening of kernel data structures \texorpdfstring{$\longrightarrow$}{->}}
|
||||||
|
|
||||||
|
\paragraph{Check integrity of linked list manipulation}\mbox{}\\
|
||||||
|
CONFIG\_LIST\_HARDENED [=y] \textbf{[Y]}\\
|
||||||
|
Minimale Integritätsprüfung in den Routinen zur Manipulation von verknüpften Listen, um Speicherbeschädigungen abzufangen,
|
||||||
|
bei denen nicht garantiert ist, dass sie zu einem sofortigen Zugriffsfehler führen.\\
|
||||||
|
Wenn Sie unsicher sind, sagen Sie N.
|
||||||
|
\english{Minimal integrity checking in the linked-list manipulation routines to catch memory corruptions that are not
|
||||||
|
guaranteed to result in an immediate access fault.\\
|
||||||
|
If unsure, say N.}
|
||||||
|
|
||||||
|
\paragraph{Trigger a BUG when data corruption is detected}\mbox{}\\
|
||||||
|
CONFIG\_BUG\_ON\_DATA\_CORRUPTION [=n] \textbf{[N]}\\
|
||||||
|
Wählen Sie diese Option, wenn der Kernel einen BUG auslösen soll, wenn er bei der Überprüfung der Gültigkeit von
|
||||||
|
Kernel-Speicherstrukturen auf beschädigte Daten stößt.\\
|
||||||
|
Wenn Sie unsicher sind, wählen Sie N.
|
||||||
|
\english{Select this option if the kernel should BUG when it encounters data corruption in kernel memory structures
|
||||||
|
when they get checked for validity.\\
|
||||||
|
If unsure, say N.}
|
||||||
|
|
||||||
|
\subsubsection{Randomize layout of sensitive kernel structures \texorpdfstring{$\longrightarrow$}{->}}
|
||||||
|
Wenn Sie dies aktivieren, werden die Layouts von Strukturen, die ausschließlich Funktionszeiger sind
|
||||||
|
(und nicht manuell mit \_\_no\_randomize\_layout annotiert wurden), oder Strukturen, die explizit mit \_\_randomize\_layout markiert
|
||||||
|
wurden, zur Kompilierungszeit randomisiert.
|
||||||
|
Dies kann eine zusätzliche Schwachstelle für Exploits darstellen, die auf diese Strukturtypen abzielen.\\
|
||||||
|
Die Aktivierung dieser Funktion führt zu einigen Leistungseinbußen, erhöht die Speichernutzung geringfügig und verhindert die
|
||||||
|
Verwendung von forensischen Tools wie Volatility gegen das System (es sei denn, der Kernel-Quellbaum wird nach der Kernel-Installation
|
||||||
|
nicht bereinigt).\\
|
||||||
|
Der für die Kompilierung verwendete Seed befindet sich in scripts/basic/randomize.seed.
|
||||||
|
Er verbleibt nach einem \texttt{make clean}, damit externe Module mit dem vorhandenen Seed kompiliert werden können und wird durch
|
||||||
|
ein \texttt{make mrproper} oder \texttt{make distclean} entfernt.
|
||||||
|
Diese Datei sollte nicht veröffentlicht werden, da sonst das Strukturlayout ermittelt werden kann.
|
||||||
|
\english{If you enable this, the layouts of structures that are entirely function pointers (and have not been manually annotated with
|
||||||
|
\_\_no\_randomize\_layout), or structures that have been explicitly marked with \_\_randomize\_layout, will be randomized at compile-time.
|
||||||
|
This can introduce the requirement of an additional information exposure vulnerability for exploits targeting these structure types.\\
|
||||||
|
Enabling this feature will introduce some performance impact, slightly increase memory usage, and prevent the use of forensic tools
|
||||||
|
like Volatility against the system (unless the kernel source tree isn't cleaned after kernel installation).\\
|
||||||
|
The seed used for compilation is in scripts/basic/randomize.seed.
|
||||||
|
It remains after a ``make clean'' to allow for external modules to be compiled with the existing seed and will be removed by a
|
||||||
|
``make mrproper'' or ``make distclean''.
|
||||||
|
This file should not be made public, or the structure layout can be determined.}
|
||||||
|
|
||||||
|
\paragraph{Disable structure layout randomization}\mbox{}\\
|
||||||
|
CONFIG\_RANDSTRUCT\_NONE [=y] \textbf{[Y]}\\
|
||||||
|
Normaler Aufbau: keine Randomisierung des Strukturlayouts.
|
||||||
|
\english{Build normally: no structure layout randomization.}
|
||||||
|
|||||||
Reference in New Issue
Block a user