In the Linux kernel, the following vulnerability has been resolved: wifi: ath5k: do not access array OOB Vincent reports: > The ath5k driver seems to do an array-index-out-of-bounds access as > shown by the UBSAN kernel message: > UBSAN: array-index-out-of-bounds in drivers/net/wireless/ath/ath5k/base.c:1741:20 > index 4 is out of range for type 'ieee80211_tx_rate [4]' > ... > Call Trace: > <TASK> > dump_stack_lvl+0x5d/0x80 > ubsan_epilogue+0x5/0x2b > __ubsan_handle_out_of_bounds.cold+0x46/0x4b > ath5k_tasklet_tx+0x4e0/0x560 [ath5k] > tasklet_action_common+0xb5/0x1c0 It is real. 'ts->ts_final_idx' can be 3 on 5212, so: info->status.rates[ts->ts_final_idx + 1].idx = -1; with the array defined as: struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES]; while the size is: #define IEEE80211_TX_MAX_RATES 4 is indeed bogus. Set this 'idx = -1' sentinel only if the array index is less than the array size. As mac80211 will not look at rates beyond the size (IEEE80211_TX_MAX_RATES). Note: The effect of the OOB write is negligible. It just overwrites the next member of info->status, i.e. ack_signal.
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: wifi: ath5k: no acceder al array OOB Vincent informa: > El controlador ath5k parece realizar un acceso de índice de array fuera de límites como > mostrado por el mensaje del kernel de UBSAN: > UBSAN: índice de array fuera de límites en drivers/net/wireless/ath/ath5k/base.c:1741:20 > el índice 4 está fuera de rango para el tipo 'ieee80211_tx_rate [4]' > ... > Traza de Llamada: > <TAREA> > dump_stack_lvl+0x5d/0x80 > ubsan_epilogue+0x5/0x2b > __ubsan_handle_out_of_bounds.cold+0x46/0x4b > ath5k_tasklet_tx+0x4e0/0x560 [ath5k] > tasklet_action_common+0xb5/0x1c0 Es real. 'ts->ts_final_idx' puede ser 3 en 5212, así que: info->status.rates[ts->ts_final_idx + 1].idx = -1; con el array definido como: struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES]; mientras que el tamaño es: #define IEEE80211_TX_MAX_RATES 4 es de hecho erróneo. Establecer este centinela 'idx = -1' solo si el índice del array es menor que el tamaño del array. Ya que mac80211 no buscará tasas más allá del tamaño (IEEE80211_TX_MAX_RATES). Nota: El efecto de la escritura OOB es insignificante. Simplemente sobrescribe el siguiente miembro de info->status, es decir, ack_signal.
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
| Attack Vector | ADJACENT_NETWORK |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | NONE |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | HIGH |
| Integrity Impact | HIGH |
| Availability Impact | LOW |
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Type: Secondary
Exploitability Score: 2.8
Impact Score: 5.5
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
CWE-125
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd3401d6bc0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd3401d5980> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd369407600> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd38477cb00> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd3401d4c40> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd3401d5c00> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384211480> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7fd3401d7780> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7fd3401d7bc0> | Operating System |
| Vulnerable | CPE |
|---|---|
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* |