
CVE-2026-64531 (OVSwrap) PoC - Linux kernel Open vSwitch LPE; for patch validation and security research
PoC di escalation dei privilegi locali (utente normale → root) nel modulo Open vSwitch del kernel Linux. Sfrutta il wrap-around intero del campo nla_len a 16 bit per passare da utente normale a root.
Quando il flusso di action nidificate generato da OVS supera i 65535 byte, il campo nla_len a 16 bit va in wrap-around. Un attaccante, con la sola CAP_NET_ADMIN all'interno di un namespace utente/rete privato, può costruire una action CLONE eccessivamente lunga, facendo ricadere il parser del kernel nei dati conntrack controllati dall'attaccante e ottenendo così primitive di lettura arbitraria del kernel e di decremento parola per parola, con cui alterare le proprie credenziali ed elevare i privilegi a root.
Il bug deriva da un'assegnazione non sicura vecchia di 13 anni (commit 74f84a5726c7), protetta in precedenza da un limite massimo di 32 KiB sulla lunghezza complessiva; è stato attivato dopo che il commit a1e64addf3ff di marzo 2025 ha rimosso il limite.
openvswitch del kernel Linuxunshare -Urn (nessun privilegio sul namespace iniziale richiesto)Le serie 6.13–6.17, 6.19 e 7.0 sono EOL e non riceveranno correzioni.
unshare -Urn), sudo installato# Deve essere eseguito come utente normale (non root)
python3 ovswrap-poc.py
Lo script esegue automaticamente unshare -Urn per entrare in un namespace utente+rete privato; include una tabella di offset precalcolata per circa 800 build del kernel x86-64 e, in caso di mancata corrispondenza, tenta la derivazione dinamica da System.map / BTF / pahole. In caso di successo, ottiene una shell root senza password scrivendo una voce in /etc/sudoers.d/.
Solo per ricerca sulla sicurezza, verifica delle vulnerabilità e test difensivi. Questo PoC corrompe le credenziali del kernel, modifica i file sudoers, lascia processi zombie e stato OVS danneggiato: eseguilo esclusivamente in una VM usa e getta, mai in ambienti di produzione o non autorizzati.
3f1f755366687d051174739fb99f7d560202f60b| Serie del kernel | Intervallo interessato | Prima versione corretta |
|---|
| 5.15.y | 5.15.180 – 5.15.211 | 5.15.212 |
| 6.1.y | 6.1.132 – 6.1.177 | 6.1.178 |
| 6.6.y | 6.6.84 – 6.6.144 | 6.6.145 |
| 6.12.y | 6.12.20 – 6.12.96 | 6.12.97 |
| 6.18.y | 6.18.0 – 6.18.39 | 6.18.40 |
| 7.1.y | 7.1.0 – 7.1.4 | 7.1.5 |