CVE-2021-46927: nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert
In the Linux kernel, the following vulnerability has been resolved:
nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert
After commit 5b78ed24e8ec ("mm/pagemap: add mmap_assert_locked()
annotations to find_vma*()"), the call to get_user_pages() will trigger
the mmap assert.
static inline void mmap_assert_locked(struct mm_struct *mm)
{
lockdep_assert_held(&mm->mmap_lock);
VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm);
}
[ 62.521410] kernel BUG at include/linux/mmap_lock.h:156!
...........................................................
[ 62.538938] RIP: 0010:find_vma+0x32/0x80
...........................................................
[ 62.605889] Call Trace:
[ 62.608502] <TASK>
[ 62.610956] ? lock_timer_base+0x61/0x80
[ 62.614106] find_extend_vma+0x19/0x80
[ 62.617195] __get_user_pages+0x9b/0x6a0
[ 62.620356] __gup_longterm_locked+0x42d/0x450
[ 62.623721] ? finish_wait+0x41/0x80
[ 62.626748] ? __kmalloc+0x178/0x2f0
[ 62.629768] ne_set_user_memory_region_ioctl.isra.0+0x225/0x6a0 [nitro_enclaves]
[ 62.635776] ne_enclave_ioctl+0x1cf/0x6d7 [nitro_enclaves]
[ 62.639541] __x64_sys_ioctl+0x82/0xb0
[ 62.642620] do_syscall_64+0x3b/0x90
[ 62.645642] entry_SYSCALL_64_after_hwframe+0x44/0xae
Use get_user_pages_unlocked() when setting the enclave memory regions.
That's a similar pattern as mmap_read_lock() used together with
get_user_pages().
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel stability flaw in the nitro_enclaves driver. A specific memory-registration path can hit a kernel BUG because code calls a page-pinning helper without the expected mmap lock handling. The public sources do not provide CVSS, CWE, or confirmed exploitation evidence.
Executive priority
Treat this as a targeted kernel reliability risk for Nitro Enclaves hosts, not a broadly proven internet-facing emergency. Prioritize patching where enclave workloads exist or the driver is enabled, and track vendor kernel guidance because public severity data is incomplete.
Technical view
The issue occurs in ne_set_user_memory_region_ioctl() when get_user_pages() reaches find_vma() after mmap_assert_locked() annotations were added. The resolved change uses get_user_pages_unlocked() for enclave memory region setup. The bundle identifies affected Linux 5.15/5.16-era versions and references two stable kernel commits.
Likely exposure
Exposure appears limited to Linux systems running affected kernels where the nitro_enclaves driver is present and the enclave memory-region ioctl path is reachable. The sources do not identify remote exposure or affected distributions.
Exploitation context
CISA KEV is false in the bundle, and no cited source states active exploitation. The supplied stack trace shows a kernel BUG triggered through an ioctl path, suggesting local interaction with the Nitro Enclaves interface rather than a network attack.
Researcher notes
The public record is sparse: no CVSS, CWE, exploit status, or distribution-specific package list is included. Analysis should focus on kernel version lineage, whether nitro_enclaves is reachable, and whether fixes matching the two stable commits are present.
Mitigation direction
Update to a vendor kernel containing the referenced stable fixes.
Check distribution advisories for the exact fixed package version.
Disable or avoid nitro_enclaves where the feature is not required.
Restrict access to the enclave device interface to authorized workloads.
Monitor kernel logs for BUG/Oops traces involving nitro_enclaves and find_vma().
Validation and detection
Inventory Linux kernel versions on hosts that use Nitro Enclaves.
Confirm whether the nitro_enclaves module or driver is loaded.
Map installed kernels against vendor packages containing the stable fixes.
Review system logs for the supplied stack-trace pattern.
Validate remediation in staging before broad kernel rollout.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2021-46927 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.