Description
In order to apply a particular protection key to an address range, the kernel must update the corresponding page table entries. The subroutine which handled this failed to take into account the presence of 1GB largepage mappings created using the shm_create_largepage(3) interface. In particular, it would always treat a page directory page entry as pointing to another page table page. The bug can be abused by an unprivileged user to cause pmap_pkru_update_range() to treat userspace memory as a page table page, and thus overwrite memory to which the application would otherwise not have access.
Problem types
CWE-269 Improper Privilege Management
CWE-732 Incorrect Permission Assignment for Critical Resource
Product status
15.0-RELEASE (release) before p6
14.4-RELEASE (release) before p2
14.3-RELEASE (release) before p11
13.5-RELEASE (release) before p12
Credits
Nicholas Carlini using Claude, Anthropic
References
security.freebsd.org/advisories/FreeBSD-SA-26:11.amd64.asc