Fact-checked by Grok 2 weeks ago

Supervisor Mode Access Prevention

Supervisor Mode Access Prevention (SMAP) is a CPU-level security mechanism developed by Intel to protect operating system kernels from unauthorized access to user-space memory while operating in privileged supervisor mode. Introduced in the Broadwell microarchitecture in 2014, SMAP blocks kernel-mode reads and writes from pages marked as user-accessible, triggering a fault to prevent exploits that could trick the kernel into processing malicious user data. SMAP builds on earlier protections like Supervisor Mode Execution Prevention (SMEP), which focuses on preventing kernel execution of user-mode code, by extending safeguards to data access. It is enabled via a bit in the and modulated by the Alignment Check (AC) flag in the EFLAGS register, allowing temporary disabling for legitimate kernel operations like copying data between user and kernel space using instructions such as STAC (Set AC Flag) and CLAC (Clear AC Flag). This feature mitigates common kernel vulnerabilities, such as those exploited through buffer overflows or pointer manipulations, enhancing overall system integrity without significant performance overhead in . Operating systems like integrated SMAP support starting with kernel version 3.7 in 2012, while Windows and other platforms adopted it as hardware became available. has become a standard in subsequent architectures, including Skylake and beyond, and similar mechanisms exist in processors under the name Supervisor Mode Access Prevention. Its implementation underscores the evolution of hardware-enforced memory isolation to counter sophisticated attacks in multi-user environments.

Background Concepts

Supervisor and User Modes

In the x86 architecture, processor privilege levels are organized into four concentric rings, numbered from 0 to 3, where Ring 0 represents the highest privilege level, known as , and is reserved for operating system operations that require unrestricted access to hardware and system resources. Ring 3, the lowest privilege level, corresponds to user mode, in which application programs execute with restricted access to prevent interference with the kernel or other processes. Rings 1 and 2 are intermediate levels intended for device drivers or other semi-privileged code but are rarely utilized in , which typically employ only Rings 0 and 3 to simplify protection mechanisms. This ring-based separation originated with the introduction of in the processor in 1982, marking a shift from the earlier of the 8086, which lacked such privilege distinctions and treated all code with equal access rights. In , the current privilege level (CPL) is encoded in the selector and determines the instructions and memory regions accessible to the executing code, enforcing isolation between user applications and the to enhance system stability and security. Transitions between and supervisor modes are facilitated by interrupts, exceptions, and system calls, which trigger a controlled switch in level. Hardware interrupts, such as those from timers or I/O devices, and software exceptions, including faults like page faults or traps like divide-by-zero errors, cause the processor to save the current state and vector to a handler in Ring 0 after performing checks to verify the transition's validity. System calls, invoked via instructions like SYSCALL on or INT on earlier variants, similarly elevate the privilege level from Ring 3 to Ring 0, with the processor validating the caller's CPL and loading code while preserving user context for return. These mechanisms ensure that user-mode code cannot directly execute privileged operations, relying instead on mediated entry points into the . Without further hardware safeguards, supervisor mode permits the to read from or write to user-mode addresses, which is essential for tasks like copying user data but introduces significant risks from kernel bugs or unvalidated inputs. For instance, if kernel code inadvertently dereferences a malicious or invalid user-supplied pointer, it may access unmapped pages, triggering unrecoverable page faults that crash the system, or corrupt adjacent kernel data structures, enabling or information disclosure to attackers. Such unintended accesses can exploit vulnerabilities in kernel routines, amplifying the impact of errant user-space behavior on overall system integrity. Supervisor Mode Access Prevention () serves as a modern hardware enhancement to mitigate these risks by enforcing stricter controls on such cross-mode accesses. Supervisor Mode Execution Prevention (SMEP) is a hardware feature introduced by Intel in 2012 as part of the Ivy Bridge microarchitecture, designed to prevent the kernel from executing code mapped in user mode. It operates by checking the user/supervisor bit in page table entries (PTEs) during instruction fetches in kernel mode; if the bit indicates user-mode mapping, a general protection fault is triggered, blocking execution of potentially malicious user-space code injected into kernel address space. SMEP complements data access controls by focusing on execution prevention, thereby mitigating exploits like return-oriented programming that rely on kernel execution of tainted code. Physical Address Extension (PAE), introduced in the Pentium Pro processor in 1995, extends the x86 architecture to support larger physical memory addressing up to 64 GB using 36-bit physical addresses. The No Execute (NX) bit, also known as XD (Execute Disable) in Intel terminology, was introduced later by AMD in 2003 with the Opteron processor and by Intel in 2004 with certain Pentium 4 processors (Prescott core). The NX bit, a PTE flag, marks memory pages as non-executable, preventing the processor from fetching instructions from those pages regardless of privilege level, which helps isolate code from data regions and thwart buffer overflow attacks that attempt to execute shellcode in stack or heap areas. PAE mode requires enabling the PAE bit in the CR4 control register and uses a 3-level paging hierarchy (page directory pointer table, page directories, and page tables) for 36-bit physical addresses, with the NX bit integrated into the page directory pointer table and other entries for finer-grained control when supported. These protections interact through PTE flags in the x86 memory management unit (MMU), where the user/supervisor (U/S) bit determines accessibility based on the current privilege ring—user-mode processes (ring 3) cannot access supervisor-mode pages (ring 0), while SMEP and NX enforce execution rules atop this foundation. In a typical PTE, the U/S bit (bit 2) is combined with the NX bit (bit 63 in 64-bit PAE paging) to create layered defenses: for instance, a page marked as user-mode and non-executable can be read/written by applications but neither executed nor accessed by the kernel. SMEP specifically leverages the U/S bit during kernel-mode fetches to extend this isolation to execution, ensuring that even if user code is erroneously mapped into kernel space, it cannot run. The evolution of these hardware protections traces from early x86 segment limits in the 80286 and 80386 processors, which enforced memory boundaries via descriptor tables but offered limited fine-grained control, to modern mechanisms like Extended Page Tables (EPT) introduced in Intel's Nehalem architecture in 2008 for virtualization. EPT provides a second level of page tables for guest physical-to-host physical address translation, incorporating SMEP and NX equivalents (such as EPT's execute-host and execute-guest permissions) to shadow host protections in virtual environments, reducing hypervisor vulnerabilities to guest escapes. This progression has hardened kernels against both direct and virtualized attacks by integrating privilege, access, and execution controls into the paging hierarchy. SMEP leaves a gap in preventing kernel reads/writes to user-mode data, which subsequent features like SMAP address.

Development History

Intel's Proposal and Timeline

Intel first proposed Supervisor Mode Access Prevention (SMAP) in the August 2012 revision (014) of its Architecture Instruction Set Extensions Programming Reference, introducing it as a new hardware feature to enhance by preventing inadvertent supervisor-mode access to user-mode . This proposal was motivated by the increasing prevalence of kernel exploits that leverage access vulnerabilities. SMAP saw its initial hardware implementation in Intel's Broadwell microarchitecture, which began shipping in the second and third quarters of 2014, starting with low-power Core M processors and expanding to and variants. The feature's rollout continued across subsequent Intel architectures, solidifying its place in x86 security enhancements. Adoption extended beyond when incorporated SMAP support into its Zen microarchitecture, debuting with the processor family in early 2017, thereby broadening availability to competing x86 platforms. This expansion reflected growing industry consensus on the need for such access controls in modern processors.

Initial Software Integrations

Early software integrations focused on providing interfaces for enabling the feature in operating systems following Intel's August 2012 documentation of , with patches posted by H. Peter Anvin in September 2012 and initial support appearing in kernel releases shortly thereafter. These adaptations allowed developers to leverage the hardware protection against accidental or malicious kernel-mode access to user-space memory, marking the beginning of widespread adoption in open-source ecosystems. The was among the first to integrate support, with version 3.7—released on December 10, 2012—adding the capability to set the SMAP bit in the CR4 register, authored by H. Peter Anvin. By default, the kernel enabled SMAP globally for processors supporting it, providing immediate protection in new deployments without requiring user intervention. Building on this foundation, Linux developers contributed early patches to enhance SMAP usability, including mechanisms for automatic enablement to simplify configuration in security-hardened environments. These efforts, led by figures like Kees Cook as part of broader kernel self-protection initiatives, culminated in refinements around 2014 that reduced manual intervention needs and integrated SMAP more seamlessly into default builds. Initial support in FreeBSD arrived via a sysctl interface (security.smp.smap) in 2014, enabling administrators to activate SMAP at runtime for x86-64 systems with compatible CPUs. This addition provided a straightforward tuning option, similar to Linux's approach, and was part of ongoing efforts to incorporate Intel's security extensions into the BSD kernel.

Technical Mechanism

CR4 Register and SMAP Bit

The CR4 register in the x86 architecture serves as a control register that manages various processor features related to paging, debugging, and protection mechanisms. Bit 21 of CR4, known as the SMAP (Supervisor Mode Access Prevention) bit, is specifically allocated to enable or disable the SMAP feature globally across the processor. When software sets CR4.SMAP to 1 using the MOV to CR instruction in supervisor mode, SMAP becomes active, enforcing restrictions on data accesses from privileged code to user-space memory. Conversely, clearing the bit to 0 disables SMAP, reverting to standard access rules without this additional protection layer. With SMAP enabled, the processor generates a page-fault exception (#PF) whenever code executing in supervisor mode (e.g., ring 0) attempts a load or store operation to a linear address mapped to a user-mode page. This fault occurs specifically for data accesses, as determined by the U/S (User/Supervisor) flag in the page table entry (PTE) associated with the target address. The U/S bit in PTEs defines the access domain: when U/S = 1, the page is designated for user-mode access only, and SMAP enforces this by blocking supervisor-mode references unless overridden, such as by setting the AC (Alignment Check) flag in the EFLAGS register. The #PF error code for SMAP violations indicates a protection fault on a present page accessed from supervisor mode (P=1, U/S=0), allowing software to distinguish it from other fault causes during exception handling. Hardware support for can be detected at runtime using the instruction with leaf 7 (EAX = 07H) and subleaf 0 (ECX = 0H), where bit 20 of the EBX register is set to 1 if the processor implements the feature. This ensures that operating systems or applications can query and conditionally enable SMAP only on compatible hardware, avoiding on older processors.

Access Control Instructions

Supervisor Mode Access Prevention () relies on software instructions to temporarily disable its protections during legitimate operations that require accessing user-mode , such as data copying or pointer validation. These instructions manipulate the Alignment Check () flag in the EFLAGS register to override SMAP behavior when the feature is globally enabled via the CR4 register. By setting the AC flag, SMAP restrictions are lifted for explicit data accesses in supervisor mode, preventing general-purpose page faults while maintaining security elsewhere. The STAC (Set AC Flag) instruction sets the AC bit (bit 18) in the EFLAGS register, temporarily disabling SMAP and allowing supervisor-mode code to read from or write to user-mode addresses without triggering exceptions. This instruction has the opcode 0F 01 CB and operates in real-address mode, protected mode, compatibility mode, and 64-bit mode, but execution is restricted to privilege level 0 (ring 0) to ensure only kernel code can invoke it. If SMAP is not supported (indicated by CPUID leaf 07H, EBX bit 20 being clear), attempting to execute STAC raises an invalid opcode exception (#UD). After completing the necessary memory operation, the CLAC (Clear AC Flag) instruction clears the AC bit in EFLAGS, re-enabling protections to block inadvertent user-mode accesses. CLAC uses the 0F 01 CA and shares the same mode support and privilege requirements as STAC, also raising #UD on unsupported processors. Together, STAC and CLAC provide a low-overhead mechanism for fine-grained control, with each instruction typically incurring fewer than 10 CPU cycles on supported hardware. In assembly code, these instructions are used to bracket user pointer dereferences, ensuring protection is disabled only for the minimal scope required:
assembly
STAC                  ; Disable SMAP temporarily
movq (%rdi), %rax     ; Access user-mode pointer (e.g., load value)
CLAC                  ; Re-enable SMAP
STAC and CLAC were introduced alongside SMAP in the Intel Broadwell microarchitecture, as detailed in Intel's instruction set extensions documentation. On pre-Broadwell processors lacking hardware support, emulation is achieved through runtime patching mechanisms that substitute STAC and CLAC with no-operation (NOP) instructions, bypassing the feature without altering code flow.

Security Advantages

Mitigation of Kernel Bugs

Supervisor Mode Access Prevention (SMAP) mitigates common kernel programming errors by enforcing hardware-level restrictions that prevent the kernel from accessing user-mode memory unless explicitly permitted, thereby averting system crashes, privilege escalations, or information disclosures arising from bugs like null pointer dereferences or unvalidated user copies. For instance, when a kernel pointer erroneously references user-space addresses due to a null dereference or improper validation, SMAP triggers a page fault instead of allowing potentially exploitable access, enhancing system stability and security. This mechanism addresses a frequent class of vulnerabilities where kernel code assumes safe memory regions but inadvertently processes attacker-controlled user data. A key example involves functions such as copy_from_user(), which transfer data from user space to space; without , omitted or flawed validation in these routines could enable direct manipulation of user-supplied pointers, leading to arbitrary memory corruption. With enabled, developers must use explicit instructions like STAC (Set AC Flag) to temporarily disable the protection before accessing user memory and CLAC (Clear AC Flag) to re-enable it afterward, ensuring that any oversight in applying these instructions results in a detectable fault rather than silent exploitation. This requirement has proven effective in identifying and preventing bugs in subsystems that handle user input, such as network stacks or device drivers. SMAP also diminishes the exploitability of hardware-induced threats targeting kernel-user boundaries, including speculative execution vulnerabilities that transiently access forbidden regions during prediction. By blocking kernel-mode reads or writes to user pages, limits the pathways for such attacks to propagate from user-controlled memory into kernel execution flows, reducing the overall attack surface without relying solely on software checks. This complements Supervisor Mode Execution Prevention (SMEP), which similarly protects against execution-based issues but focuses on preventing user code from running in kernel mode.

Distinction from Execution Protections

Supervisor Mode Access Prevention () differs fundamentally from Supervisor Mode Execution Prevention (SMEP) in its scope of protection. While SMEP prevents the execution of code from user-mode pages when the is operating in supervisor mode, SMAP blocks all data accesses—reads and writes—from supervisor mode to user-mode pages. This distinction ensures that SMAP addresses vulnerabilities involving inadvertent data handling, whereas SMEP targets or execution-based attacks. Both mechanisms are essential in scenarios where exploits require multiple types of access, such as return-oriented programming (ROP) chains that leverage user-space gadgets for execution while also needing to read or write user-mode data structures. In such cases, SMEP alone would block the execution of ROP gadgets from user pages, but without SMAP, an attacker could still manipulate kernel control flow by accessing user data, potentially enabling partial compromise; conversely, SMAP without SMEP would allow execution but block data operations critical to chaining the attack. SMAP and SMEP can be enabled together through dedicated bits in the CR4 control register: bit 20 for SMEP and bit 21 for SMAP. Setting both bits activates complementary protections without mutual interference, allowing operating systems to enforce stricter isolation between privilege levels. SMAP was introduced as a follow-up to SMEP to cover previously overlooked data access paths in kernel-mode operations. SMEP first appeared in Intel documentation in 2011 and became available in processors around 2012, while SMAP was proposed in 2012 and began shipping in hardware with the Broadwell microarchitecture in 2014, enhancing overall supervisor-mode security.

System Implementations

Linux Kernel Features

Support for was integrated into the starting with version 3.7, released in December 2012, enabling the kernel to leverage the hardware feature for preventing inadvertent supervisor-mode accesses to -space . This implementation includes the use of STAC (Set AC Flag) and CLAC (Clear AC Flag) instructions to temporarily disable during explicit kernel accesses to user , such as in copy_from_user and copy_to_user functions, while re-enabling it afterward to maintain protection. SMAP is enabled by default on compatible x86 processors when the is compiled with the CONFIG_X86_SMAP option, which has been standard in mainline kernels since its introduction. To disable SMAP at time, the command-line "nosmap" can be specified, overriding support and preventing the CR4.SMAP bit from being set during initialization; this is useful for or on older systems. Early development patches for this support were proposed in September 2012 by developer H. Peter Anvin. In kernels version 4.x and later, operates alongside other kernel hardening mechanisms, including Kernel Address Space Layout Randomization (KASLR), which randomizes the kernel's load address to complicate exploitation attempts that might otherwise leverage bypasses. This layered approach contributes to a robust defense-in-depth strategy against memory corruption vulnerabilities. has been enabled by default in major distributions such as since version 14.04 (using kernel 3.13) and since version 20 (using kernel 3.12), reflecting its adoption in production environments post-2013 hardware availability.

Windows and Other OSes

Microsoft introduced support for enabling Supervisor Mode Access Prevention (SMAP) in in 2015, with it being enabled by default on supported in subsequent updates, as part of broader security extensions, including those related to Kernel DMA Protection. This support requires compatible , such as processors with the SMAP bit in the CR4 register. In and later versions, SMAP is enabled by default on supported systems and can be managed through settings or registry modifications under the key HKLM\SYSTEM\CurrentControlSet\Control\Session Manager[Memory Management](/page/Memory_management), allowing administrators to configure memory access protections. macOS adopted in the starting with version 10.13 High Sierra in 2017, leveraging the hardware feature to enhance from user-space accesses on compatible x86_64 systems. As of macOS Tahoe (15) released in 2025, Apple ended support for -based Macs, discontinuing the relevance of x86 features like in subsequent versions. This implementation complements existing protections like SMEP and has been refined in subsequent releases to address vulnerabilities. FreeBSD integrated SMAP support beginning with version 10 in 2014, following development efforts during the , where the feature was enabled at boot time for x86_64 architectures reporting SMAP capability via . The kernel automatically activates the SMAP bit in CR4 during initialization, with copyin() and copyout() subroutines using STAC/CLAC instructions to temporarily disable it for safe user-space memory operations. In embedded systems, Android leverages SMAP through its Linux kernel on x86 platforms, with explicit mention and hardening integration starting in Android Oreo (8.0) in 2017 to mitigate kernel memory bugs on supported Intel hardware. Similarly, the Zephyr RTOS added scoped SMAP support for x86 in 2017 via ongoing kernel enhancements, with broader enablement and stability improvements occurring in releases from 2020 onward to bolster security in resource-constrained environments. All these implementations require Intel processors from the Broadwell family or later that support the SMAP CPU feature.

Limitations

Bypass Techniques

Supervisor Mode Access Prevention (SMAP) provides a for legitimate through the STAC (Set AC Flag in EFLAGS) and CLAC (Clear AC Flag in EFLAGS) instructions, which temporarily disable protection for controlled operations such as copying data to user space. These instructions manipulate the Alignment Check () flag in the EFLAGS register: when the AC flag is cleared (value 0), SMAP enforcement is suspended, allowing supervisor-mode code to access user-mode pages without triggering an exception; conversely, setting the AC flag (value 1) re-enables SMAP. In the , functions like copy_to_user() invoke CLAC prior to the memory access to permit reading or writing user pages, followed immediately by STAC to restore protection and prevent unintended leaks or corruption. This approach ensures efficient handling of necessary inter-mode data transfers while minimizing exposure time, typically spanning only a few instructions. Malicious bypasses of often exploit legacy kernel code paths developed before SMAP's introduction, where routines inadvertently access user memory without employing STAC/CLAC, leading to exploitable page faults or data disclosures if an attacker controls the user-space content. Additionally, vulnerabilities akin to Meltdown enable transient circumvention of SMAP by allowing out-of-order loads from user pages during mispredicted execution paths, potentially leaking sensitive data via side channels like cache timing; such issues were mitigated through updates and kernel patches released in early 2018. These speculative bypasses were particularly effective on pre-patch processors, where hardware would speculatively process forbidden accesses before architectural faulting, but subsequent firmware and software defenses, including enhanced barrier instructions, rendered them ineffective on updated systems. To counter indirect branch prediction vulnerabilities that could exacerbate SMAP faults—such as speculative continuation after a fault handler's mispredicted branch—the Linux kernel integrates retpoline sequences or LFENCE (Load Fence) instructions in critical paths, including exception handling routines. Retpoline replaces vulnerable indirect jumps and calls with return-oriented constructs that trap speculation in a safe loop, preventing poisoned branch predictors from directing execution toward unauthorized user memory accesses during SMAP violation recovery. LFENCE serves as a serialization barrier in alternative mitigations, stalling speculative execution until the fault is resolved, thereby limiting the window for side-channel attacks tied to branch mispredictions in the page fault or general protection handlers. These techniques, part of broader Spectre variant 2 defenses, ensure that SMAP-related exception processing remains secure against prediction-based exploits without compromising handler performance. Detection of SMAP bypass attempts relies on the hardware-generated exceptions triggered by violations: supervisor-mode accesses to user pages when is active produce a page-fault exception () on processors, which the 's exception handler intercepts and logs as an "oops" with details on the faulting instruction, , and . logging mechanisms, such as the printk system, capture these events in the system log (e.g., via dmesg or /var/log/kern.log), enabling administrators to identify patterns indicative of bugs or attacks, including repeated faults from unpatched code paths. In cases of speculative bypasses, while the architectural fault still occurs, monitoring tools like kernel address sanitizer (KASAN) can augment detection by tracing anomalous accesses leading to these exceptions.

Overhead and Trade-offs

Enabling (SMAP) incurs a minor performance overhead in the kernel, stemming from the need to execute STAC (Set AC Flag) and CLAC (Clear AC Flag) instructions around user-space memory accesses to temporarily disable protection. Early implementations added these instructions to functions like get_user() and copy_to_user(), increasing code size and execution time slightly, though the cost per instruction is low on modern x86 hardware. Benchmarks evaluating kernel workloads, such as compilation tasks, show this overhead contributing roughly 1% of total CPU time in scenarios involving frequent user-space string operations like strncpy_from_user(). A primary involves heightened complexity in development, as every intentional user-space must be explicitly guarded with STAC/CLAC pairs or alternative mechanisms like the EFLAGS. bit for optimized paths (e.g., in copy_from_user). This requirement spans signal handling, mode transitions, and other subsystems, demanding careful auditing to avoid unprotected es that could trigger faults or enable exploits. Failure to apply these wrappers correctly risks introducing subtle bugs, complicating code maintenance and debugging in large codebases. Mitigation strategies focus on amortizing the overhead through batching: the 's user_access_begin() and user_access_end() interfaces allow multiple consecutive user accesses within a single STAC/CLAC scope, hoisting the protection toggles outside loops and reducing invocation frequency in copy-heavy operations. These approaches minimize the effective cost while preserving protection. Overall, the long-term security benefits of —such as robust of kernel bugs involving accidental user-memory dereferences—outweigh these costs, with negligible impact on user-space performance since the feature exclusively affects supervisor-mode operations. Real-world deployments demonstrate sustained viability, as the overhead remains sub-5% even in latency-sensitive syscall paths under 2014-era benchmarks from initial integration.

References

  1. [1]
    Intel® Supervisor Mode Access Prevention (Intel® SMAP) - ID:842704
    Intel® Supervisor Mode Access Prevention (Intel® SMAP) is a mechanism that provides next level of system protection by blocking a malicious user from tricking ...
  2. [2]
    Intel SMAP Comes To Try To Better Secure Linux - Phoronix
    Oct 2, 2012 · The Supervisor Mode Access Prevention feature is an instruction set extension whereby the kernel cannot access pages that are user-space.
  3. [3]
    Broadwell - Microarchitectures - Intel - WikiChip
    Apr 5, 2025 · Introduced in early 2015, Broadwell is a process shrink of Haswell which introduced several enhancements. Broadwell is named after Broadwell, ...
  4. [4]
    Supervisor mode access prevention - LWN.net
    Sep 26, 2012 · Intel's new "Supervisor Mode Access Prevention" (SMAP) feature changes that situation; those wanting the details can find them starting on page ...
  5. [5]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of nine volumes: Basic Architecture ... MODES OF OPERATION ...
  6. [6]
    Investigating kernel user-space access - Codethink
    Jun 16, 2020 · However, the kernel must never execute user-space memory and it must also never access user-space memory without explicit expectation to do so.
  7. [7]
    Hardware Features and Behaviors Related to Speculative Execution
    Sep 13, 2024 · SMEP prevents execution of code on user mode pages, even speculatively, when in supervisor mode. User mode code can only insert its own return ...
  8. [8]
    [PDF] Intel® Architecture Instruction Set Extensions Programming Reference
    Page 1. Intel® Architecture. Instruction Set Extensions Programming. Reference. 319433-014. AUGUST 2012. Page 2. ii. Ref. # 319433-014. INFORMATION IN THIS ...Missing: proposal | Show results with:proposal
  9. [9]
    Implement Intel SMAP and kernel patching framework - FreeBSD Wiki
    Sep 18, 2017 · Intel SMAP is a hardware extension to support advanced kernel ... The technology will appear in Intel Broadwell architecture in 2014Q2/Q3.
  10. [10]
    AMD Starts Linux Enablement On Next-Gen "Zen" Architecture
    Mar 17, 2015 · SMAP is short for the Supervisor Mode Access Prevention and is another Intel instruction set extension already supported by Linux. AMD Zen ...
  11. [11]
    [PDF] Optimizing for AMD Ryzen CPU
    Mar 2, 2017 · + SMAP Supervisor Mode Access Prevention. + XGETBV Get extended control register. + XSAVEC, XSAVES Compact and Supervisor Save/Restore.<|control11|><|separator|>
  12. [12]
    Linux_3.7 - Linux Kernel Newbies
    Dec 10, 2012 · This Linux release includes support for the ARM 64-bit architecture, ARM support to boot into different systems using the same kernel, signed kernel modules.
  13. [13]
    [PDF] Linux Kernel Self Protection Project - outflux.net
    Sep 14, 2017 · Google: Kees Cook, Thomas Garnier, Daniel Cashman, Jeff Vander Stoep, Jann Horn, Eric Biggers. ○. Huawei: Li Kun. ○. IBM: Michael Ellerman ...
  14. [14]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    ... CLAC—Clear AC Flag in EFLAGS Register ... STAC—Set AC Flag in EFLAGS Register ...Missing: SMAP | Show results with:SMAP
  15. [15]
    Kernel Self-Protection
    The kernel must never execute userspace memory. The kernel must also never access userspace memory without explicit expectation to do so. These rules can be ...
  16. [16]
    [PDF] A Framework for Investigating and Measuring Speculative Execution ...
    Feb 23, 2020 · Supervisor Mode Access Prevention (SMAP) forbids code in the kernel mode from accessing to user-space addresses. However, as shown in Table I, ...
  17. [17]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of ten volumes: Basic Architecture, Order Number 253665; Instruction Set ...
  18. [18]
    [PDF] ret2dir: Rethinking Kernel Isolation - USENIX
    Aug 20, 2014 · We introduce a new kernel exploitation technique, called return-to-direct-mapped memory (ret2dir), which bypasses all existing ret2usr defenses, ...
  19. [19]
    SMEP: What is it, and how to beat it on Windows - j00ru
    Jun 5, 2011 · The feature is called Supervisor Mode Execution Protection (SMEP for short) and it is documented in the newest release (May 2011) of the Intel manual 3A ...
  20. [20]
    [PDF] Recent Developments in the Linux Kernel Security Subsystem
    Platform. ○ 3.7: TPM. – IBM vTPM support on ppc64. – Infineon I2C TIS TPM driver. ○ 3.7: Support for Intel "Supervisor Mode Access. Prevention" (SMAP) feature.
  21. [21]
    The kernel's command-line parameters
    cpu lists¶. Some kernel parameters take a list of CPUs as a value, e.g. isolcpus, nohz_full, irqaffinity, rcu_nocbs. The format of this list is:.
  22. [22]
    Linux Kernel To Better Fend Off Exploits That Disable SMAP / SMEP ...
    Feb 23, 2019 · Supervisor Mode Execution Protection (SMEP) and Supervisor Mode Access Prevention (SMAP) are security features of recent generations of Intel ...
  23. [23]
    Linux Kernel 4.4.0-21 < 4.4.0-51 (Ubuntu 14.04/16.04 ... - Exploit-DB
    Dec 29, 2018 · chocobo_root.c linux AF_PACKET race condition exploit for CVE-2016-8655. Includes KASLR and SMEP/SMAP bypasses. For Ubuntu 14.04 / 16.04 ...
  24. [24]
    Does Windows 8.1 work with AMD Athlon 64 4000+? - Microsoft Learn
    Oct 19, 2013 · "You can't install Windows 8.1 because your processor doesn't support CompareExchange128. ... SMAP - Supports Supervisor Mode Access Prevention.UEFI Secure Boot in Windows 8.1 - Microsoft Q&AWindows 8.1: MMC has detected an error in snap-in and will unload itMore results from learn.microsoft.com
  25. [25]
    Will SMAP block drivers from reading a user-mode address? - NTDEV
    Mar 2, 2023 · SMAP is a newer mitigation that has been introduced to complement SMEP and further restrict access from the kernel to user-mode pages – it disallows both reads ...Missing: support | Show results with:support
  26. [26]
    Mac OS X Privilege Escalation via Use-After-Free: CVE-2016-1828
    May 17, 2016 · Bypassing SMAP is more difficult, since we would need to put both our fake vtable and our ROP stack at a known location in kernel memory.
  27. [27]
    Apple OS X 10.10.5 - 'rootsh' Local Privilege Escalation - Exploit-DB
    May 16, 2016 · rootsh is a local privilege escalation targeting OS X Yosemite 10.10.5 build 14F27. It exploits [CVE-2016-1758] and [CVE-2016-1828], two vulnerabilities in XNU.
  28. [28]
    FreeBSD-SA-21:11.smap
    Supervisor Mode Access Prevention (SMAP) is a security feature implemented by contemporary Intel and AMD CPUs.
  29. [29]
    Hardening the Kernel in Android Oreo - Android Developers Blog
    Aug 30, 2017 · Android Oreo hardens the kernel with hardened usercopy, PAN emulation, KASLR, and post-init read-only memory to reduce security bugs.
  30. [30]
    x86: scope SMAP support in Zephyr #3943 - GitHub
    Aug 15, 2017 · Reported by Andrew Boie: related to SMEP support. This is where the kernel may not access any data pages belonging to userspace without faulting ...
  31. [31]
    [PDF] Intel Analysis of Speculative Execution Side Channels - kib.kiev.ua
    Supervisor-Mode Access Prevention (SMAP) ... The bounds check bypass method takes advantage of speculative execution after conditional branch.<|separator|>
  32. [32]
    Retpoline: A Branch Target Injection Mitigation - Intel
    Aug 22, 2022 · The indirect branch predictor uses information about previously-executed branches to predict the destinations of future indirect branches. ...Missing: faults | Show results with:faults
  33. [33]
    [PATCH 0/3] Batched user access support - LWN.net
    Jan 24, 2016 · ... CPU time. And almost two thirds of that was just the SMAP overhead. So this patch series introduces a model for batching that SMAP overhead ...