Description (CNA)
The GETALL and SETALL commands in semctl(2) recorded the number of semaphores in the target set, dropped the lock protecting the set, allocated a buffer sized for that count, and reacquired the lock. A sequence-number check was used to verify that the set had not been replaced in the interim, but the sequence number wraps after 0x8000 create/destroy cycles. By rapidly destroying and recreating semaphore sets at the same index, another process can cause the sequence number to wrap, allowing a set with a different number of semaphores to pass validation. The subsequent copy then reads or writes past the end of the allocated buffer. An unprivileged local user can trigger out-of-bounds reads and writes on kernel heap memory, potentially leading to privilege escalation.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| FreeBSD / FreeBSD | affected 15.1-RELEASE before p2; affected 15.0-RELEASE before p12; affected 14.4-RELEASE before p8 |
CWE
CWE-191, CWE-125, CWE-787
References
ADP enrichment
No English description supplied.
No references supplied.