CVE-2026-3038: Local DoS and possible privilege escalation via routing sockets
The rtsockmsgbuffer() function serializes routing information into a buffer. As a part of this, it copies sockaddr structures into a sockaddrstorage structure on the stack. It assumes that the source sockaddr length field had already been validated, but this is not necessarily the case, and it's possible for a malicious userspace program to craft a request which triggers a 127-byte overflow.
In practice, this overflow immediately overwrites the canary for the rtsockmsgbuffer() stack frame, resulting in a panic once the function returns.
The bug allows an unprivileged user to crash the kernel by triggering a stack buffer overflow in rtsockmsgbuffer(). In particular, the overflow will corrupt a stack canary value that is verified when the function returns; this mitigates the impact of the stack overflow by triggering a kernel panic.
Other kernel bugs may exist which allow userspace to find the canary value and thus defeat the mitigation, at which point local privilege escalation may be possible.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-3038?
CVE-2026-3038 is classified as a local denial of service (DoS) vulnerability with potential for privilege escalation.
How do I fix CVE-2026-3038?
To fix CVE-2026-3038, update your FreeBSD system to the latest version or apply the relevant patches provided by the FreeBSD security team.
Which FreeBSD versions are affected by CVE-2026-3038?
CVE-2026-3038 affects FreeBSD versions 13.5, 14.3, and 15.0 on various patch levels.
What type of vulnerability is CVE-2026-3038?
CVE-2026-3038 is a local denial of service vulnerability that may lead to privilege escalation through routing sockets.
Can CVE-2026-3038 be exploited remotely?
CVE-2026-3038 requires local access to exploit, making it a local vulnerability rather than a remote one.