In the Linux kernel, the following vulnerability has been resolved: smb: client: split cached_fid bitfields to avoid shared-byte RMW races is_open, has_lease and on_list are stored in the same bitfield byte in struct cached_fid but are updated in different code paths that may run concurrently. Bitfield assignments generate byte read–modify–write operations (e.g. `orb $mask, addr` on x86_64), so updating one flag can restore stale values of the others. A possible interleaving is: CPU1: load old byte (has_lease=1, on_list=1) CPU2: clear both flags (store 0) CPU1: RMW store (old | IS_OPEN) -> reintroduces cleared bits To avoid this class of races, convert these flags to separate bool fields.
Se ha resuelto la siguiente vulnerabilidad en el kernel de Linux: smb: cliente: dividir los campos de bits de cached_fid para evitar condiciones de carrera RMW de bytes compartidos is_open, has_lease y on_list se almacenan en el mismo byte de campo de bits en la estructura cached_fid, pero se actualizan en diferentes rutas de código que pueden ejecutarse concurrentemente. Las asignaciones de campos de bits generan operaciones de lectura-modificación-escritura de bytes (p. ej., 'orb $mask, addr' en x86_64), por lo que al actualizar una bandera (flag) se puede restaurar valores obsoletos de las otras. Una posible intercalación es: CPU1: carga el byte antiguo (has_lease=1, on_list=1) CPU2: borra ambas banderas (almacena 0) CPU1: almacena RMW (old | IS_OPEN) -> reintroduce los bits borrados Para evitar esta clase de condiciones de carrera, hay que convertir estas banderas a campos bool separados.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
| Attack Vector | LOCAL |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | NONE |
| Integrity Impact | NONE |
| Availability Impact | HIGH |
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
NVD-CWE-noinfo
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x7f76027c5540> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7f76027c5780> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7f7602740bc0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7f76394cc580> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7f76027c6c00> | 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:*:*:*:*:*:*:*:* |