Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/0xblackash/cve-2026-74469
Escalada de PrivilegiosForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHub0xblackash/cve-2026-74469

CVE-2026-74469

Repositorio de investigación para CVE-2026-74469 (DiagSpill), un desbordamiento de contador de transporte de par SCTP del kernel de Linux que provoca una escritura fuera de límites, con PoC, análisis de causa raíz y detalles del parche.

4hace 1 díaAú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
Ver Repositorio

⚡ CVE-2026-74469 — DiagSpill

Desbordamiento del contador de transportes de pares SCTP del kernel de Linux

Una vulnerabilidad del kernel de Linux en SCTP causada por un desbordamiento de un contador de transportes de pares de 16 bits, que permite que el contador pase de 65535 a 0. Durante un volcado de diagnóstico SCTP, el valor desbordado puede provocar una reserva insuficiente del payload del skb seguida de una escritura fuera de límites de los datos de dirección de los pares.


⚠️ Aviso legal

Este repositorio está destinado únicamente a investigación de seguridad autorizada, análisis de vulnerabilidades del kernel, entornos CTF, depuración del kernel y pruebas defensivas.

No utilice el código de prueba de concepto contra sistemas sin autorización explícita.


📌 Descripción general de la vulnerabilidad

El aviso CVE del kernel de Linux describe el problema como un desbordamiento de transport_count de 16 bits en SCTP, seguido de una asignación de INET_DIAG_PEERS de tamaño insuficiente y una escritura fuera de límites durante el volcado de diagnóstico.


🧬 Descripción de la vulnerabilidad

El código vulnerable mantiene el número de transportes de pares únicos en un contador de 16 bits:

root@kitploit:~
transport_count

Cada nuevo par único añadido incrementa el contador.

El límite crítico es:

root@kitploit:~
65535

Añadir otro transporte único provoca:

root@kitploit:~
65535 + 1
     ↓
     0

El desbordamiento resultante crea una inconsistencia entre:

root@kitploit:~
transport_count

y:

root@kitploit:~
transport_addr_list

El subsistema de diagnóstico posteriormente confía en el contador desbordado al calcular el tamaño del búfer de respuesta, mientras sigue iterando por la lista completa de direcciones de pares.


🔬 Causa raíz

La vulnerabilidad se puede representar como:

root@kitploit:~
                    SCTP Association
                           │
                           ▼
                 Add unique peers
                           │
                           ▼
                 transport_count
                    uint16_t
                           │
                           ▼
                    65,535 peers
                           │
                           ▼
                 + 1 unique peer
                           │
                           ▼
                    Integer wrap
                           │
                           ▼
                transport_count = 0
                           │
                           ▼
                  SCTP sock_diag
                           │
                           ▼
             Reserve incorrect payload
                           │
                           ▼
          Iterate complete peer list
                           │
                           ▼
             Out-of-bounds skb write

El aviso upstream indica específicamente que el transporte número 65.536 hace que el contador se desborde a cero.


🧠 Por qué ocurre el bug

El código de diagnóstico depende efectivamente de dos vistas diferentes del mismo estado.

Lado de asignación

root@kitploit:~
transport_count
       │
       ▼
payload size

Lado de copia

root@kitploit:~
transport_addr_list
       │
       ▼
copy every peer address

Después de que el entero se desborda:

root@kitploit:~
transport_count = 0

transport_addr_list =
    [peer 1]
    [peer 2]
    [peer 3]
    ...
    [peer 65536]

Por lo tanto, el asignador reserva espacio basándose en:

root@kitploit:~
0 peers

mientras que la operación de copia todavía puede procesar:

root@kitploit:~
65536 peer addresses

Esta discrepancia produce la violación de seguridad de memoria.


💥 Corrupción de memoria

El aviso del kernel de Linux describe el volcado de diagnóstico resultante como la reserva de un payload vacío y luego la escritura de aproximadamente 8 MiB de direcciones de pares más allá del final del skb.

Conceptualmente:

root@kitploit:~
Expected skb:

┌───────────────────────────────┐
│ INET_DIAG header              │
├───────────────────────────────┤
│ Peer addresses                │
└───────────────────────────────┘
              ▲
              │
          valid end


Actual vulnerable state:

┌───────────────────────────────┐
│ INET_DIAG header              │
└───────────────────────────────┘
              ▲
              │
          skb tail

              ↓
      Peer address writes
              ↓
      Peer address writes
              ↓
      Peer address writes
              ↓
      OUT-OF-BOUNDS WRITE

Red Hat clasifica el fallo como CWE-787: Escritura fuera de límites.


🔎 Ruta de código vulnerable

La ruta relevante se puede resumir como:

root@kitploit:~
SCTP association
      │
      ▼
sctp_assoc_add_peer()
      │
      ▼
transport_count++
      │
      ▼
16-bit overflow
      │
      ▼
SCTP sock_diag
      │
      ▼
INET_DIAG_PEERS
      │
      ▼
skb payload reservation
      │
      ▼
transport_addr_list iteration
      │
      ▼
Out-of-bounds write

El archivo fuente afectado es:

root@kitploit:~
net/sctp/associola.c

El anuncio CVE del kernel de Linux identifica este archivo explícitamente.


🩹 Corrección upstream

La corrección upstream es:

root@kitploit:~
bd0e9289e2642f6a5c54faad304ce0f41e926d22

Commit:

root@kitploit:~
sctp: prevent peer transport count overflow

La corrección rechaza un nuevo par único cuando:

root@kitploit:~
transport_count >= U16_MAX

Es importante destacar que la comprobación ocurre después de la búsqueda de pares existentes.

Esto preserva la capacidad de recuperar un transporte ya existente incluso cuando la asociación ha alcanzado el límite.


🛡️ Lógica del parche

Vulnerable

root@kitploit:~
New peer
   │
   ▼
transport_count++
   │
   ▼
Possible 16-bit wrap
   │
   ▼
Diagnostic size mismatch
   │
   ▼
OOB write

Parcheado

root@kitploit:~
New peer
   │
   ▼
Existing peer?
   │
 ┌─┴──────────┐
 │            │
YES           NO
 │            │
 ▼            ▼
Reuse       Check U16_MAX
transport       │
                ▼
          Reject at limit

La propiedad de seguridad importante es evitar que el contador se desborde alguna vez, preservando al mismo tiempo la semántica normal de búsqueda para un par existente.


📊 Vulnerable vs Parcheado


💥 Impacto de seguridad

La corrupción de memoria puede provocar potencialmente:

  • Caída del kernel
  • Denegación de servicio
  • Corrupción de memoria del kernel
  • Escritura fuera de límites en el kernel
  • Potencial escalada de privilegios
  • Potencial ejecución de código en el kernel

La investigación pública publicada tras la divulgación reporta explotación local-root bajo condiciones específicas, mientras que la puntuación original del CNA del kernel de Linux utiliza AV:L/AC:H/PR:L/UI:N.

La vulnerabilidad también se describe como potencialmente alcanzable de forma remota bajo circunstancias muy específicas de configuración de SCTP/direcciones, pero eso no debe tratarse como equivalente a una vulnerabilidad explotable remotamente de forma general.


🧪 Entorno de investigación

Topología aislada recomendada:

root@kitploit:~
┌───────────────────────────────────────────┐
│              Linux VM                    │
│                                           │
│       ┌───────────────────┐               │
│       │   SCTP Association │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│       ┌───────────────────┐               │
│       │ Multiple SCTP      │               │
│       │ Peer Transports    │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│       ┌───────────────────┐               │
│       │   SCTP sock_diag   │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│          INET_DIAG_PEERS                  │
│                                           │
└───────────────────────────────────────────┘

Herramientas útiles:

root@kitploit:~
ip sctp
ss
ss -a
ss -A sctp
dmesg -w
gdb
pwndbg
crash

Comprobar el soporte de SCTP:

root@kitploit:~
lsmod | grep sctp

Comprobar la configuración del kernel:

root@kitploit:~
grep CONFIG_IP_SCTP /boot/config-$(uname -r)

🔎 Verificación del kernel

Comprobar el kernel en ejecución:

root@kitploit:~
uname -r

Comprobar la configuración de SCTP:

root@kitploit:~
grep -E 'CONFIG_IP_SCTP|CONFIG_SCTP' \
/boot/config-$(uname -r)

Comprobar los módulos SCTP cargados:

root@kitploit:~
lsmod | grep -i sctp

Inspeccionar los sockets SCTP:

root@kitploit:~
ss -A sctp

🧪 Flujo de reproducción

Para investigación controlada del kernel:

root@kitploit:~
01. Build vulnerable kernel
          ↓
02. Boot isolated VM
          ↓
03. Enable SCTP
          ↓
04. Create controlled SCTP association
          ↓
05. Populate unique peer transports
          ↓
06. Reach transport-count boundary
          ↓
07. Trigger SCTP diagnostic dump
          ↓
08. Monitor skb diagnostics
          ↓
09. Capture kernel behavior
          ↓
10. Apply upstream fix
          ↓
11. Repeat test
          ↓
12. Compare vulnerable vs patched

Monitorizar la salida del kernel:

root@kitploit:~
sudo dmesg -w

Para depuración:

root@kitploit:~
gdb vmlinux

o:

root@kitploit:~
pwndbg vmlinux

📂 Estructura del repositorio

root@kitploit:~
CVE-2026-74469-DiagSpill/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── sctp-transport-count.md
│   ├── sock-diag.md
│   ├── skb-overflow.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ Mitigación

La mitigación principal es actualizar a un kernel que contenga la corrección upstream.

Para Debian/Kali:

root@kitploit:~
sudo apt update
sudo apt full-upgrade

Luego reiniciar:

root@kitploit:~
sudo reboot

Verificar:

root@kitploit:~
uname -r

Si SCTP no es necesario, los administradores también pueden considerar deshabilitar la funcionalidad SCTP afectada según su entorno y requisitos operativos. La investigación pública enumera específicamente deshabilitar SCTP / sctp_diag como mitigación inmediata cuando esos componentes no se utilizan.


📦 Versiones del kernel corregidas

El anuncio upstream de la rama estable enumera estas versiones corregidas:

Estas versiones provienen del anuncio CVE del kernel de Linux; las distribuciones pueden aplicar la corrección en paquetes con una numeración de versión diferente.


🧩 Lecciones de seguridad

01 — Nunca permitir que los contadores acotados se desborden silenciosamente

Un contador de 16 bits tiene un máximo estricto:

root@kitploit:~
U16_MAX = 65535

El código sensible a la seguridad debe manejar explícitamente ese límite.

02 — Los recuentos de asignación y copia deben coincidir

El tamaño utilizado para asignar un búfer debe corresponder al número de objetos realmente copiados en él.

03 — Las interfaces de diagnóstico son sensibles a la seguridad

Las API de diagnóstico del kernel pueden convertirse en superficies de ataque de corrupción de memoria cuando el estado interno se vuelve inconsistente.

04 — Los bugs de enteros pueden convertirse en bugs de seguridad de memoria

La primitiva original es un desbordamiento de entero, pero el impacto de seguridad resultante es una escritura fuera de límites en el kernel.

05 — El estado de red del kernel es complejo

Las asociaciones SCTP pueden contener grandes colecciones de transportes de pares, lo que hace que los límites de contadores y la lógica de gestión de listas sean críticos para la seguridad.


📚 Referencias

  • CVE: CVE-2026-74469
  • Nombre en clave: DiagSpill
  • Subsistema: Linux SCTP
  • Archivo afectado: net/sctp/associola.c
  • Función principal: sctp_assoc_add_peer()
  • Corrección: sctp: prevent peer transport count overflow
  • Corrección upstream: bd0e9289e2642f6a5c54faad304ce0f41e926d22
  • CWE: CWE-787 / Escritura fuera de límites
  • Aviso CVE del kernel de Linux: CVE-2026-74469 advisory
  • Debian Security Tracker: CVE-2026-74469 Debian tracker
  • Red Hat: CVE-2026-74469 Red Hat advisory

⚡ DiagSpill

CVE-2026-74469

Linux Kernel · SCTP · sock_diag · OOB Write · Kernel Security


Research • Analyze • Reproduce • Harden


0xBlackash

Descargar herramienta
CampoDetalles
CVECVE-2026-74469
Nombre en claveDiagSpill
ComponenteLinux Kernel
SubsistemaSCTP / sock_diag
Archivo afectadonet/sctp/associola.c
Función principalsctp_assoc_add_peer()
Clase de bugDesbordamiento de entero / Escritura fuera de límites
ImpactoCorrupción de memoria del kernel
Impacto potencialEscalada de privilegios local
CVSS v3.17.0 — Alta
Vector de ataqueLocal
Complejidad del ataqueAlta
Privilegios requeridosBajos
Interacción del usuarioNinguna
EstadoParcheado
Propiedad de seguridadVulnerableParcheado
Límite de transporte de 16 bits aplicado❌✅
Desbordamiento del contador prevenido❌✅
Pares existentes siguen siendo utilizables✅✅
Tamaño del payload de diagnóstico fiable❌✅
Escritura OOB en skb prevenida❌✅
Corrupción de memoria del kernel mitigada❌✅
RamaVersión corregida
5.105.10.265
5.155.15.216
6.16.1.183
6.66.6.151
6.126.12.103
6.186.18.44
7.17.1.8
7.27.2-rc6