Vulnerabilidad en kernel de Linux (CVE-2022-48629)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
05/03/2024
Última modificación:
26/02/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: crypto: qcom-rng: asegúrese de que el búfer para generar esté completamente lleno. La función de generación en la estructura rng_alg espera que el búfer de destino esté completamente lleno si la función devuelve 0. qcom_rng_read() puede ejecutarse en una situación en la que el búfer está parcialmente lleno de aleatoriedad y la parte restante del búfer se pone a cero ya que qcom_rng_generate() no verifica el valor de retorno. Este problema se puede reproducir ejecutando lo siguiente desde libkcapi: kcapi-rng -b 9000000 > OUTFILE El OUTFILE generado tendrá tres secciones enormes que contienen todos ceros, y esto se debe al código donde falla la prueba 'val & PRNG_STATUS_DATA_AVAIL'. Solucionemos este problema asegurándonos de que qcom_rng_read() siempre regrese con un búfer lleno si la función tiene éxito. También hagamos que qcom_rng_generate() devuelva el valor correcto. Aquí hay algunas estadísticas del proyecto ent (https://www.fourmilab.ch/random/) que muestra información sobre la calidad de los números generados: $ ent -c qcom-random-before Valor Char Ocurrencias Fracción 0 606748 0.067416 1 33104 0,003678 2 33001 0,003667 ... 253 ? 32883 0,003654 254 ? 33035 0,003671 255 ? 33239 0,003693 Total: 9000000 1,000000 Entropía = 7,811590 bits por byte. Una compresión óptima reduciría el tamaño de este archivo de 9000000 bytes en un 2 por ciento. La distribución de chi cuadrado para 9000000 muestras es 9329962,81 y aleatoriamente excedería este valor menos del 0,01 por ciento de las veces. El valor medio aritmético de los bytes de datos es 119,3731 (127,5 = aleatorio). El valor de Monte Carlo para Pi es 3,197293333 (error del 1,77 por ciento). El coeficiente de correlación serial es 0,159130 (totalmente no correlacionado = 0,0). Sin este parche, los resultados de la prueba de chi-cuadrado son del 0,01% y los números ciertamente no son aleatorios según la página del proyecto de ent. Los resultados mejoran con este parche: $ ent -c qcom-random-after Valor Char Ocurrencias Fracción 0 35432 0.003937 1 35127 0.003903 2 35424 0.003936 ... 253 ? 35201 0,003911 254 ? 34835 0,003871 255 ? 35368 0,003930 Total: 9000000 1,000000 Entropía = 7,999979 bits por byte. Una compresión óptima reduciría el tamaño de este archivo de 9000000 bytes en un 0 por ciento. La distribución de chi cuadrado para 9000000 muestras es 258,77 y aleatoriamente excedería este valor el 42,24 por ciento de las veces. El valor medio aritmético de los bytes de datos es 127,5006 (127,5 = aleatorio). El valor de Monte Carlo para Pi es 3,141277333 (error del 0,01 por ciento). El coeficiente de correlación serial es 0,000468 (totalmente no correlacionado = 0,0). Este cambio se probó en un teléfono Nexus 5 (SoC msm8974).
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.19 (incluyendo) | 4.19.236 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (incluyendo) | 5.4.187 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (incluyendo) | 5.10.108 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.31 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 5.16.17 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc4:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc5:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc6:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc7:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.17:rc8:*:*:*:*:*:* |
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/0f9b7b8df17525e464294c916acc8194ce38446b
- https://git.kernel.org/stable/c/184f7bd08ce56f003530fc19f160d54e75bf5c9d
- https://git.kernel.org/stable/c/485995cbc98a4f77cfd4f8ed4dd7ff8ab262964d
- https://git.kernel.org/stable/c/a680b1832ced3b5fa7c93484248fd221ea0d614b
- https://git.kernel.org/stable/c/a8e32bbb96c25b7ab29b1894dcd45e0b3b08fd9d
- https://git.kernel.org/stable/c/ab9337c7cb6f875b6286440b1adfbeeef2b2b2bd
- https://git.kernel.org/stable/c/0f9b7b8df17525e464294c916acc8194ce38446b
- https://git.kernel.org/stable/c/184f7bd08ce56f003530fc19f160d54e75bf5c9d
- https://git.kernel.org/stable/c/485995cbc98a4f77cfd4f8ed4dd7ff8ab262964d
- https://git.kernel.org/stable/c/a680b1832ced3b5fa7c93484248fd221ea0d614b
- https://git.kernel.org/stable/c/a8e32bbb96c25b7ab29b1894dcd45e0b3b08fd9d
- https://git.kernel.org/stable/c/ab9337c7cb6f875b6286440b1adfbeeef2b2b2bd