CVE-2024-27391
wifi: wilc1000: do not realloc workqueue everytime an interface is added
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
0Exploited in Wild
-Decision
Descriptions
In the Linux kernel, the following vulnerability has been resolved:
wifi: wilc1000: do not realloc workqueue everytime an interface is added
Commit 09ed8bfc5215 ("wilc1000: Rename workqueue from "WILC_wq" to
"NETDEV-wq"") moved workqueue creation in wilc_netdev_ifc_init in order to
set the interface name in the workqueue name. However, while the driver
needs only one workqueue, the wilc_netdev_ifc_init is called each time we
add an interface over a phy, which in turns overwrite the workqueue with a
new one. This can be observed with the following commands:
for i in $(seq 0 10)
do
iw phy phy0 interface add wlan1 type managed
iw dev wlan1 del
done
ps -eo pid,comm|grep wlan
39 kworker/R-wlan0
98 kworker/R-wlan1
102 kworker/R-wlan1
105 kworker/R-wlan1
108 kworker/R-wlan1
111 kworker/R-wlan1
114 kworker/R-wlan1
117 kworker/R-wlan1
120 kworker/R-wlan1
123 kworker/R-wlan1
126 kworker/R-wlan1
129 kworker/R-wlan1
Fix this leakage by putting back hif_workqueue allocation in
wilc_cfg80211_init. Regarding the workqueue name, it is indeed relevant to
set it lowercase, however it is not attached to a specific netdev, so
enforcing netdev name in the name is not so relevant. Still, enrich the
name with the wiphy name to make it clear which phy is using the workqueue.
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: wifi: wilc1000: no reasignar la cola de trabajo cada vez que se agrega una interfaz. Commit 09ed8bfc5215 ("wilc1000: cambiar el nombre de la cola de trabajo de "WILC_wq" a "NETDEV-wq"") movió la creación de la cola de trabajo en wilc_netdev_ifc_init para configurar el nombre de la interfaz en el nombre de la cola de trabajo. Sin embargo, aunque el controlador solo necesita una cola de trabajo, se llama a wilc_netdev_ifc_init cada vez que agregamos una interfaz a través de un phy, lo que a su vez sobrescribe la cola de trabajo con una nueva. Esto se puede observar con los siguientes comandos: for i in $(seq 0 10) do iw phy phy0 interfaz add wlan1 tipo administrado iw dev wlan1 del done ps -eo pid,comm|grep wlan 39 kworker/R-wlan0 98 kworker/ R-wlan1 102 ktrabajador/R-wlan1 105 ktrabajador/R-wlan1 108 ktrabajador/R-wlan1 111 ktrabajador/R-wlan1 114 ktrabajador/R-wlan1 117 ktrabajador/R-wlan1 120 ktrabajador/R-wlan1 123 ktrabajador/R- wlan1 126 kworker/R-wlan1 129 kworker/R-wlan1 Solucione esta fuga volviendo a colocar la asignación hif_workqueue en wilc_cfg80211_init. Con respecto al nombre de la cola de trabajo, es relevante establecerlo en minúsculas; sin embargo, no está adjunto a un netdev específico, por lo que hacer cumplir el nombre de netdev en el nombre no es tan relevante. Aún así, enriquezca el nombre con el nombre de wiphy para dejar claro qué phy está usando la cola de trabajo.
CVSS Scores
SSVC
- Decision:Track
Timeline
- 2024-02-25 CVE Reserved
- 2024-05-01 CVE Published
- 2024-05-02 EPSS Updated
- 2024-12-19 CVE Updated
- ---------- Exploited in Wild
- ---------- KEV Due Date
- ---------- First Exploit
CWE
CAPEC
References (6)
URL | Tag | Source |
---|---|---|
https://git.kernel.org/stable/c/09ed8bfc5215ad5aac91c50008277b5586b9ef24 | Vuln. Introduced |
URL | Date | SRC |
---|
URL | Date | SRC |
---|
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" | >= 5.17 < 6.1.83 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.17 < 6.1.83" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.17 < 6.6.23 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.17 < 6.6.23" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.17 < 6.7.11 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.17 < 6.7.11" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.17 < 6.8.2 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.17 < 6.8.2" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 5.17 < 6.9 Search vendor "Linux" for product "Linux Kernel" and version " >= 5.17 < 6.9" | en |
Affected
|