Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
qemu-colo-l4-oob — QEMU 11.1.2 - Alta - Local/Remoto - OOB - Desbordamiento de heap L4 IPv4 corto en COLO filter-rewriter | Kitploit
Herramientas/GitHubGitHub/abraxas/qemu-colo-l4-oob
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónFuzzingPapers e InvestigaciónExplotación de Binarios
GitHubabraxas/qemu-colo-l4-oob

qemu-colo-l4-oob

QEMU 11.1.2 - Alta - Local/Remoto - OOB - Desbordamiento de heap L4 IPv4 corto en COLO filter-rewriter

Ver Repositorio
2hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - qemu-colo-l4-oob

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  qemu-colo-l4-oob

qemu-colo-l4-oob

QEMU v11.1.2 (4fc49f46dc95d4a27de2509e7fceb2931e91faeb) - filtro reescritor de COLO

Clase: OOB (desbordamiento de búfer en el heap READ/WRITE). Alcance: Local (invitado) / Remoto (par de COLO).

parse_packet_early acepta IPv4 una vez que L2 más ip_hl*4 encaja. Nunca exige una cabecera L4 mínima. fill_connection_key entonces lee cuatro bytes en transport_header sin comprobar la longitud restante. filter-rewriter copia la trama con g_malloc0(size) y, después de que SYN haya movido la conexión a TCPS_SYN_RECEIVED, un ACK con conn->offset != 0 escribe th_ack / th_seq más allá de ese bloque cuando la longitud capturada termina en la cabecera de transporte.

COLO no está activado por defecto. Se activa cuando se configura -object filter-rewriter (y colo-compare). El TX/RX del invitado en ese reescritor está dentro del modelo de seguridad de la virtualización. Un par de COLO en primary_in / secondary_in es un protocolo de red, también no confiable.

Una trama IPv4/TCP de 34 bytes es suficiente para un heap-buffer-overflow READ de ASan en filter-rewriter.

IDaún sin CVE
CWECWE-125 / CWE-787
CVSSAlto: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
ProductoQEMU
Afectadov11.1.2 (4fc49f46), reescritor/compare de COLO habilitados
Autenticacióninvitado en un netdev de reescritor COLO, o un par de comparación COLO
LicenciaGNU Affero GPL v3.0
Laboratoriosockets de loopback 127.0.0.1:18770 / 18771

Qué puede hacer un atacante

Quién: invitado no confiable en una NIC con COLO habilitado, o un par de comparación COLO hostil. De invitado a host / de par a host. Heap del espacio de usuario de QEMU.

Integridad / reconocimiento (probado en laboratorio)

MétodoSumideroPrivilegio
ACK IPv4/TCP corto tras un SYN con cabecera completa (trama de 34 bytes, la longitud termina en la cabecera de transporte)filter-rewriter handle_primary_tcp_pkt / fill_connection_keyASan heap-buffer-overflow READ en filter-rewriter. El TCP de control con cabecera completa deja QEMU vivo.
Misma ausencia de mínimo L4parse_packet_early net/colo.c:43-98El paquete se clasifica como TCP sin una cabecera L4 en el búfer.

Integridad (inferida, misma cota ausente)

Tras el SYN, conn->offset != 0, el reescritor almacena th_ack / th_seq en net/filter-rewriter.c:112-114 y :216-218. Las opciones IP (ip_hl > 5) desplazan esa escritura al siguiente bloque del heap. Escritura en el heap del host activable por el invitado.

fill_pkt_tcp_info de colo-compare establece header_size a partir de th_off<<2 sin comprobarlo contra pkt->size. payload_size sufre underflow. colo_compare_packet_payload hace memcmp decenas de kilobytes más allá de ambas asignaciones de paquetes. Caída más lectura del heap del host.

Disponibilidad (probado en laboratorio)

QEMU aborta bajo ASan en la lectura del reescritor. Sin ASan, esto es un OOB de heap en vivo en el proceso del hipervisor.

Superficie adyacente que permanece cerrada

  • Las rutas de longitud TAP / socket / bridge / l2tpv3 / stream / dgram en esta versión parecían acotadas (net_fill_rstate rechaza packet_len > NET_BUFSIZE).
  • La fuga ilimitada de la tabla de conexiones COLO al reiniciar la tabla hash es endurecimiento de asignación, no este residuo.
  • Kernel PwnEscape / Vghost: fuera de QEMU.
  • QEMU por defecto sin COLO: el reescritor no está activo. Este residuo requiere COLO configurado.

El laboratorio no demuestra control de RIP ni una shell de invitado a host. La clase es OOB de heap del proceso QEMU en un netdev con COLO habilitado.

Cómo lo encontré

Leí net/colo.c buscando un límite inferior de longitud que incluyera L4. El límite es Ethernet más VLAN más vnet_hdr. ip_hl se toma de una cola corta. fill_connection_key luego confía en transport_header. filter-rewriter siempre carga th_flags en el desplazamiento 13 de struct tcp_hdr.

Desvíos: tratar la longitud de TAP como el límite de COLO (ruta distinta); enviar el desbordamiento como primer paquete (el rewriter necesita SYN primero para que conn->offset esté activo); el subdesbordamiento de th_off en colo-compare como testigo principal (la LECTURA del rewriter se disparó primero).

Laboratorio

cd lab
./run.sh

Se dirige únicamente a sockets de loopback 127.0.0.1:18770 (netdev de filter-rewriter) y 18771 (colo-compare). El pin se clona desde github.com/qemu/QEMU tag v11.1.2 / 4fc49f46. ASan. Proxy COLO habilitado en tiempo de configuración. Solo witness.

SUCCESS qemu-colo-l4-oob asan=heap-buffer-overflow access=READ sink=filter-rewriter control=alive QEMU-COLO-L4-OOB-WITNESS

Reproducción: python3 qemu-colo-l4-oob-Abraxas-Labs.py.

La corrección

parse_packet_early debe exigir un encabezado L4 completo (TCP 20, UDP 8, SCTP 12, AH 8) después del encabezado IP, y rechazar cuando size termina en o antes de transport_header. fill_connection_key y los almacenamientos th_* del reescritor deben verificar la longitud restante. colo-compare debe rechazar th_off<<2 que no encaje en pkt->size antes de calcular payload_size.

Referencias

  • github.com/qemu/QEMU etiqueta v11.1.2 commit 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • parse_packet_early · filter-rewriter
  • Misma fijación: qemu-xhci-complete-uaf · qemu-nvme-sgl-bar
  • Serie: QEMU 11.1.2 leftovers
  • CWE-125 · CWE-787

Licencia

GNU Affero GPL v3.0. Consulte LICENSE. Solo laboratorio de loopback. Sin garantía.

Descargar herramienta