CVE-2026-90136 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
platform/x86/amd/hsmp: Rechazar escrituras con valores negativos en power cap dentro de hwmon
La función hsmp_hwmon_write() toma el valor de hwmon proporcionado por el usuario como un signed long y asigna "val / MICROWATT_PER_MILLIWATT" a msg.args[0], que es un __u32. Dado que MICROWATT_PER_MILLIWATT es un unsigned long, una escritura negativa en power1_cap (por ejemplo, "echo -1 > power1_cap") se convierte primero en un valor sin signo enorme debido a la división y luego se almacena en el argumento u32.
Como resultado, se envía al SMU a través de HSMP_SET_SOCKET_POWER_LIMIT un límite de potencia del socket absurdo de varios gigavatios, en lugar de rechazar la escritura.
Se deben rechazar los valores negativos con -EINVAL antes de la conversión.
Probado con HSMP habilitado:
CAP=$(dirname $(grep -l amd_hsmp_hwmon \ /sys/class/hwmon/hwmon*/name | head -1))/power1_cap
# escritura negativa echo -1000000 > $CAP ; echo "ret=$?" # una escritura positiva válida debe seguir funcionando echo 400000000 > $CAP ; echo "ret=$?"
Antes: # echo -1000000 > $CAP ; echo "ret=$?" ret=0 <- aceptado; se envió un límite erróneo al SMU # echo 400000000 > $CAP ; echo "ret=$?" ret=0
Después: # echo -1000000 > $CAP ; echo "ret=$?" bash: echo: write error: Invalid argument ret=1 <- rechazado con -EINVAL # echo 400000000 > $CAP ; echo "ret=$?" ret=0 <- la escritura válida sigue funcionando
VulDB is the best source for vulnerability data and more expert information about this specific topic.