// For flags

CVE-2024-26999

serial/pmac_zilog: Remove flawed mitigation for rx irq flood

Severity Score

"-"
*CVSS v-

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

In the Linux kernel, the following vulnerability has been resolved:

serial/pmac_zilog: Remove flawed mitigation for rx irq flood

The mitigation was intended to stop the irq completely. That may be
better than a hard lock-up but it turns out that you get a crash anyway
if you're using pmac_zilog as a serial console:

ttyPZ0: pmz: rx irq flood !
BUG: spinlock recursion on CPU#0, swapper/0

That's because the pr_err() call in pmz_receive_chars() results in
pmz_console_write() attempting to lock a spinlock already locked in
pmz_interrupt(). With CONFIG_DEBUG_SPINLOCK=y, this produces a fatal
BUG splat. The spinlock in question is the one in struct uart_port.

Even when it's not fatal, the serial port rx function ceases to work.
Also, the iteration limit doesn't play nicely with QEMU, as can be
seen in the bug report linked below.

A web search for other reports of the error message "pmz: rx irq flood"
didn't produce anything. So I don't think this code is needed any more.
Remove it.

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: serial/pmac_zilog: eliminar la mitigación defectuosa para rx irq Flood La mitigación tenía como objetivo detener irq por completo. Esto puede ser mejor que un bloqueo duro, pero resulta que de todos modos se bloquea si estás usando pmac_zilog como consola serie: ttyPZ0: pmz: rx irq Flood ! ERROR: recursión de spinlock en CPU#0, swapper/0 Esto se debe a que la llamada pr_err() en pmz_receive_chars() da como resultado que pmz_console_write() intente bloquear un spinlock ya bloqueado en pmz_interrupt(). Con CONFIG_DEBUG_SPINLOCK=y, esto produce un error fatal. El spinlock en cuestión es el de la estructura uart_port. Incluso cuando no es fatal, la función de recepción del puerto serie deja de funcionar. Además, el límite de iteración no funciona bien con QEMU, como se puede ver en el informe de error vinculado a continuación. Una búsqueda en la web de otros informes del mensaje de error "pmz: rx irq Flood" no produjo nada. Así que no creo que este código ya sea necesario. Retírelo.

*Credits: N/A
CVSS Scores
Attack Vector
-
Attack Complexity
-
Privileges Required
-
User Interaction
-
Scope
-
Confidentiality
-
Integrity
-
Availability
-
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-02-19 CVE Reserved
  • 2024-05-01 CVE Published
  • 2024-05-03 EPSS Updated
  • 2024-11-05 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 4.19.313
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 4.19.313"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 5.4.275
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 5.4.275"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 5.10.216
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 5.10.216"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 5.15.157
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 5.15.157"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 6.1.88
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 6.1.88"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 6.6.29
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 6.6.29"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 6.8.8
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 6.8.8"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 2.6.12 < 6.9
Search vendor "Linux" for product "Linux Kernel" and version " >= 2.6.12 < 6.9"
en
Affected