Vulnerabilidad en kernel de Linux (CVE-2021-47131)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416
Utilización después de liberación
Fecha de publicación:
15/03/2024
Última modificación:
27/02/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net/tls: corrige el use-after-free después de que el dispositivo TLS se cae y se enciende. Cuando un netdev con descarga TLS activa se cae, se llama a tls_device_down para detener la descarga y derribarlo. el contexto TLS. Sin embargo, el socket permanece activo y todavía apunta al contexto TLS, que ahora está desasignado. Si se activa un netdev, mientras la conexión aún está activa, y el flujo de datos se reanuda después de varias retransmisiones TCP, se producirá un use-after-free del contexto TLS. Esta commit soluciona este error manteniendo vivo el contexto hasta su destrucción normal e implementa las alternativas necesarias para que la conexión pueda reanudarse en modo kTLS de software (no descargado). En el lado TX, tls_sw_fallback se utiliza para cifrar todos los paquetes. El lado RX ya tiene todos los respaldos necesarios, porque se admite la recepción de paquetes no descifrados. Lo que se necesita en el lado RX es bloquear las solicitudes de resincronización, que normalmente se producen después de recibir paquetes no descifrados. Se implementa la sincronización necesaria para un desmontaje elegante: primero se implementan los respaldos, luego se liberan los recursos del controlador (antes era posible tener un tls_dev_resync después de tls_dev_del). Se agrega una nueva bandera llamada TLS_RX_DEV_DEGRADED para indicar el modo de reserva. Se utiliza para omitir completamente la lógica de resincronización RX, ya que se vuelve inútil y algunos objetos pueden liberarse (por ejemplo, resync_async, que el controlador asigna y libera).
Impacto
Puntuación base 3.x
7.80
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.18 (incluyendo) | 5.10.43 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.12.10 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:5.13:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc4:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9
- https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4
- https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2
- https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9
- https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4
- https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2