Linux Kernel hasta 6.14.1 /proc/net/sockstat proto_memory_pcpu_drain denegación de servicio

| CVSS Puntuación meta temporal | Precio actual del exploit (≈) | Puntuación de interés CTI |
|---|---|---|
| 5.3 | $0-$5k | 0.00 |
Resumen
Una vulnerabilidad fue encontrada en Linux Kernel hasta 6.1.133/6.6.86/6.12.22/6.13.10/6.14.1 y clasificada como problemática. Se ve afectada una función desconocida del archivo /proc/net/sockstat. A través de la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esta vulnerabilidad está identificada como CVE-2025-22058. El ataque debe ser iniciado local. No hay ningún exploit disponible. Es recomendable actualizar el componente afectado.
Detalles
Una vulnerabilidad fue encontrada en Linux Kernel hasta 6.1.133/6.6.86/6.12.22/6.13.10/6.14.1 y clasificada como problemática. La función proto_memory_pcpu_drain del archivo /proc/net/sockstat es afectada por esta vulnerabilidad. Por la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esto tiene repercusión sobre la la disponibilidad. El resumen de CVE es:
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: udp: Se corrige la fuga de contabilidad de memoria. Matt Dowling informó de un extraño problema de uso de memoria UDP. En condiciones normales de funcionamiento, el uso de memoria UDP informado en /proc/net/sockstat se mantiene cercano a cero. Sin embargo, ocasionalmente alcanzaba 524 288 páginas y nunca se reducía. Además, el valor se duplicaba al finalizar la aplicación. Finalmente, causaba pérdidas intermitentes de paquetes. Podemos reproducir el problema con el siguiente script [0]: 1. /proc/net/sockstat informa 0 páginas # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 0 2. Ejecute el script hasta que el informe alcance 524 288 # python3 test.py & sleep 5 # cat /proc/net/sockstat | grep UDP: UDP: inuse 3 mem 524288 <-- (INT_MAX + 1) >> PAGE_SHIFT 3. Matar el socket y confirmar que el número nunca baje # pkill python3 && sleep 5 # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 524288 4. (necesario desde v6.0) Desencadenar proto_memory_pcpu_drain() # python3 test.py & sleep 1 && pkill python3 5. El número se duplica # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 1048577 La aplicación estableció INT_MAX en SO_RCVBUF, lo que desencadenó un desbordamiento de entero en udp_rmem_release(). Cuando se cierra un socket, udp_destruct_common() purga su cola de recepción y suma skb->truesize en ella. Este total se calcula y se almacena en una variable local de entero sin signo. El tamaño total se pasa a udp_rmem_release() para ajustar la memoria. Sin embargo, dado que la función acepta un argumento de entero con signo, el tamaño total puede volver a la normalidad, provocando un desbordamiento. La cantidad liberada se calcula de la siguiente manera: 1) Sumar size a sk->sk_forward_alloc. 2) Redondear sk->sk_forward_alloc al múltiplo inferior más cercano de PAGE_SIZE y asignarlo a amount. 3) Restar amount de sk->sk_forward_alloc. 4) Pasar amount >> PAGE_SHIFT a __sk_mem_reduce_allocated(). Cuando se produjo el problema, el total en udp_destruct_common() era 2147484480 (INT_MAX + 833), que se convirtió a -2147482816 en udp_rmem_release(). En 1) sk->sk_forward_alloc se cambia de 3264 a -2147479552, y 2) se establece -2147479552 en cantidad. 3) revierte el ajuste, por lo que no vemos ninguna advertencia en inet_sock_destruct(). Sin embargo, udp_memory_allocated se duplica en 4). Desde el commit 3cd3399dd7a8 ("net: implementar reservas por CPU para memory_allocated"), el uso de memoria ya no se duplica inmediatamente después de cerrar un socket, ya que __sk_mem_reduce_allocated() almacena en caché la cantidad en udp_memory_per_cpu_fw_alloc. Sin embargo, la siguiente vez que un socket UDP recibe un paquete, la resta se aplica, duplicando el uso de memoria UDP. Este problema provoca que la asignación de memoria posterior falle una vez que el valor de sk->sk_rmem_alloc del socket supere net.ipv4.udp_rmem_min, lo que provoca la pérdida de paquetes. Para evitar este problema, usemos unsigned int para el cálculo y llamemos a sk_forward_alloc_add() solo una vez para la delta pequeña. Tenga en cuenta que first_packet_length() también podría tener el mismo problema. [0]: desde la importación de socket * SO_RCVBUFFORCE = 33 INT_MAX = (2 ** 31) - 1 s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) s.setsockopt(SOL_SOCKET, SO_RCVBUFFORCE, INT_MAX) c = socket(AF_INET, SOCK_DGRAM) c.connect(s.getsockname()) datos = b'a' * 100 mientras sea verdadero: c.send(datos)El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2025-22058. La explotación se considera fácil. El ataque debe ser hecho local. Detalles técnicos son conocidos, pero no hay ningún exploit público disponible.
Para el scanner Nessus se dispone de un plugin ID 234884 (Debian dsa-5907 : affs-modules-6.1.0-33-4kc-malta-di - security update), que puede ayudar a determinar la existencia del riesgo analizado.
Una actualización a la versión 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.2 o 6.15-rc1 elimina esta vulnerabilidad. Aplicando el parche 9122fec396950cc866137af7154b1d0d989be52e/aeef6456692c6f11ae53d278df64f1316a2a405a/a116b271bf3cb72c8155b6b7f39083c1b80dcd00/c4bac6c398118fba79e32b1cd01db22dbfe29fbf/3836029448e76c1e6f77cc5fe0adc09b018b5fa8/df207de9d9e7a4d92f8567e2c539d9c8c12fd99d es posible eliminar el problema. El parche puede ser descargado de git.kernel.org. El mejor modo sugerido para mitigar el problema es Actualización.
La vulnerabilidad también está documentado en las bases de datos Tenable (234884), EUVD (EUVD-2025-11236) y CERT Bund (WID-SEC-2025-0844). Be aware that VulDB is the high quality source for vulnerability data.
Afectado
- Google Container-Optimized OS
- Debian Linux
- Amazon Linux 2
- Red Hat Enterprise Linux
- Ubuntu Linux
- SUSE Linux
- Oracle Linux
- SUSE openSUSE
- RESF Rocky Linux
- Open Source Linux Kernel
- Dell Avamar
- SolarWinds Security Event Manager
- Dell NetWorker
- Dell Secure Connect Gateway
- IBM QRadar SIEM
Producto
Escribe
Proveedor
Nombre
Versión
- 6.1.133
- 6.6.0
- 6.6.1
- 6.6.2
- 6.6.3
- 6.6.4
- 6.6.5
- 6.6.6
- 6.6.7
- 6.6.8
- 6.6.9
- 6.6.10
- 6.6.11
- 6.6.12
- 6.6.13
- 6.6.14
- 6.6.15
- 6.6.16
- 6.6.17
- 6.6.18
- 6.6.19
- 6.6.20
- 6.6.21
- 6.6.22
- 6.6.23
- 6.6.24
- 6.6.25
- 6.6.26
- 6.6.27
- 6.6.28
- 6.6.29
- 6.6.30
- 6.6.31
- 6.6.32
- 6.6.33
- 6.6.34
- 6.6.35
- 6.6.36
- 6.6.37
- 6.6.38
- 6.6.39
- 6.6.40
- 6.6.41
- 6.6.42
- 6.6.43
- 6.6.44
- 6.6.45
- 6.6.46
- 6.6.47
- 6.6.48
- 6.6.49
- 6.6.50
- 6.6.51
- 6.6.52
- 6.6.53
- 6.6.54
- 6.6.55
- 6.6.56
- 6.6.57
- 6.6.58
- 6.6.59
- 6.6.60
- 6.6.61
- 6.6.62
- 6.6.63
- 6.6.64
- 6.6.65
- 6.6.66
- 6.6.67
- 6.6.68
- 6.6.69
- 6.6.70
- 6.6.71
- 6.6.72
- 6.6.73
- 6.6.74
- 6.6.75
- 6.6.76
- 6.6.77
- 6.6.78
- 6.6.79
- 6.6.80
- 6.6.81
- 6.6.82
- 6.6.83
- 6.6.84
- 6.6.85
- 6.6.86
- 6.12.0
- 6.12.1
- 6.12.2
- 6.12.3
- 6.12.4
- 6.12.5
- 6.12.6
- 6.12.7
- 6.12.8
- 6.12.9
- 6.12.10
- 6.12.11
- 6.12.12
- 6.12.13
- 6.12.14
- 6.12.15
- 6.12.16
- 6.12.17
- 6.12.18
- 6.12.19
- 6.12.20
- 6.12.21
- 6.12.22
- 6.13.0
- 6.13.1
- 6.13.2
- 6.13.3
- 6.13.4
- 6.13.5
- 6.13.6
- 6.13.7
- 6.13.8
- 6.13.9
- 6.13.10
- 6.14.0
- 6.14.1
Licencia
Sitio web
- Proveedor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔍VulDB Confiabilidad: 🔍
CVSSv3
VulDB Puntuación meta base: 5.4VulDB Puntuación meta temporal: 5.3
VulDB Puntuación base: 5.3
VulDB Puntuación temporal: 5.1
VulDB Vector: 🔍
VulDB Confiabilidad: 🔍
NVD Puntuación base: 5.5
NVD Vector: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complejidad | Autenticación | Confidencialidad | Integridad | Disponibilidad |
|---|---|---|---|---|---|
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
VulDB Puntuación base: 🔍
VulDB Puntuación temporal: 🔍
VulDB Confiabilidad: 🔍
Explotación
Clase: Denegación de servicioCWE: CWE-770 / CWE-400 / CWE-404
CAPEC: 🔍
ATT&CK: 🔍
Físico: En parte
Local: Sí
Remoto: No
Disponibilidad: 🔍
Estado: No está definido
EPSS Score: 🔍
EPSS Percentile: 🔍
Predicción de precios: 🔍
Estimación del precio actual: 🔍
| 0-Day | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
|---|---|---|---|---|
| Hoy | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
Nessus ID: 234884
Nessus Nombre: Debian dsa-5907 : affs-modules-6.1.0-33-4kc-malta-di - security update
Inteligencia de amenazas
Interés: 🔍Actores activos: 🔍
Grupos APT activos: 🔍
Contramedidas
Recomendación: ActualizaciónEstado: 🔍
Hora de 0 días: 🔍
Actualización: Kernel 6.1.134/6.6.87/6.12.23/6.13.11/6.14.2/6.15-rc1
Parche: 9122fec396950cc866137af7154b1d0d989be52e/aeef6456692c6f11ae53d278df64f1316a2a405a/a116b271bf3cb72c8155b6b7f39083c1b80dcd00/c4bac6c398118fba79e32b1cd01db22dbfe29fbf/3836029448e76c1e6f77cc5fe0adc09b018b5fa8/df207de9d9e7a4d92f8567e2c539d9c8c12fd99d
Línea de tiempo
2024-12-29 🔍2025-04-16 🔍
2025-04-16 🔍
2026-02-15 🔍
Fuentes
Proveedor: kernel.orgAviso: git.kernel.org
Estado: Confirmado
CVE: CVE-2025-22058 (🔍)
GCVE (CVE): GCVE-0-2025-22058
GCVE (VulDB): GCVE-100-305111
EUVD: 🔍
CERT Bund: WID-SEC-2025-0844 - Linux Kernel: Mehrere Schwachstellen
Artículo
Fecha de creación: 2025-04-16 17:19Actualizado: 2026-02-15 09:17
Cambios: 2025-04-16 17:19 (58), 2025-04-28 06:08 (2), 2025-07-15 00:51 (7), 2025-10-13 00:35 (1), 2025-10-19 17:25 (1), 2025-10-19 19:00 (1), 2025-10-29 16:57 (1), 2025-10-31 23:25 (11), 2026-02-15 09:17 (1)
Completo: 🔍
Cache ID: 216::103
Be aware that VulDB is the high quality source for vulnerability data.
Sin comentarios aún. Idiomas: es + pt + en.
Por favor, inicie sesión para comentar.