
Local privilege escalation proof-of-concept for CVE-2026-64531 abusing OVS kernel datapath to corrupt credentials and gain root via sudoers injection.
[!WARNING] The PoC is provided solely to help defenders, maintainers, and authorized security teams validate patches, mitigations, detections, and exposure on systems they own or are explicitly authorized to test.
You are solely responsible for ensuring that your use of this material is lawful, authorized, controlled, and conducted in an isolated test environment.
[!WARNING] This PoC is destructive. On success it corrupts a live kernel credential, modifies
/etc/sudoers.dor/etc/sudoers, opens a root shell, and leaves detached processes and corrupted OVS state alive to avoid unsafe teardown.Run it only in a disposable VM/throwaway host. Rebooting stops the remaining processes but does not undo the sudoers modification.
The PoC:
nla_lensudo -n bash.The PoC assumes and targets x86-64 to keep things simple. In theory, the bug should not be arch-specific.
unshare -Urn)sudo, bash, unshare, and idRun it as an unprivileged user with a passwd entry.
python3 ovswrap-poc.py
The PoC will automatically try unshare -Urn and fall back on aa-exec -p trinity -- unshare -Urn if it's AppArmor-blocked.
The PoC contains pre-derived values for ~800 exact x86-64 kernel builds, matched using:
uname -r
uname -v
uname -m
A matching record needs no local symbols, BTF, debug package, or pahole. For a non-covered build, the PoC asks for confirmation and attempts dynamic
derivation from:
System.map or nonzero /proc/kallsyms;pahole, which must already be installed.Failure to derive values does not mean the kernel is unaffected, as dynamic derivation can fail for a number of reasons; see the writeup for better ways to tell if you are affected.