CVE-2026-58087 PUBLISHED

Heap out-of-bounds access in semctl(2)

Assigner: freebsd
Reserved: 29.06.2026 Published: 19.08.2026 Updated: 19.08.2026

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.

Product Status

Vendor FreeBSD
Product FreeBSD
Versions Default: unknown
  • affected from 15.1-RELEASE to p2 (excl.)
  • affected from 15.0-RELEASE to p12 (excl.)
  • affected from 14.4-RELEASE to p8 (excl.)

Credits

  • Maik Muench of Secfault Security finder

References

Problem Types

  • CWE-191: Integer Underflow (Wrap or Wraparound) CWE
  • CWE-125: Out-of-bounds Read CWE
  • CWE-787: Out-of-bounds Write CWE