Описание
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.
A flaw was found in the Linux kernel's Server Message Block (SMB) client. This vulnerability is caused by a race condition during concurrent updates to internal flags, which can lead to stale data being restored. A remote attacker with low privileges could exploit this, potentially causing unexpected behavior or a denial of service in the SMB client.
Отчет
A moderate impact flaw was found in the Linux kernel's Server Message Block (SMB) client in Red Hat Enterprise Linux. The is_open, has_lease, and on_list flags of struct cached_fid were packed into a single bitfield byte while being updated by different code paths that may run concurrently. Because bitfield writes compile to byte-wide read-modify-write operations, an update performed by one CPU can restore stale values of flags that another CPU has already cleared, reintroducing inconsistent cached file-handle state in the SMB client's directory cache and lease handling. A remote attacker with low privileges able to influence concurrent SMB client operations could trigger this race, causing unexpected behavior or a denial of service in the SMB client. Red Hat rated this flaw as moderate (CVSS 6.3, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L). The vulnerable code is present in the affected RHEL 9 (kernel and kernel-rt) and RHEL 10 (kernel) update streams; fixes are currently deferred on the in-support affected update streams, consistent with the moderate impact rating and the fact that this is a timing-dependent state-consistency race without memory-safety consequences. The residual risk of the deferral is intermittent inconsistent SMB client cached state and potential denial of service of SMB mounts. The affected RHEL 9.0 and 9.7 update streams are out of support scope. RHEL 6, 7, and 8, Red Hat In-Vehicle OS 2.0, and the newest RHEL 9 and RHEL 10 minor releases are not affected because the vulnerable code is not present. The CVE.org record scores this flaw as important (CVSS 8.8); Red Hat's assessment differs because the realistic worst-case impact is corruption of the SMB client's cached state and denial of service rather than the high confidentiality and integrity impact implied by the upstream vector.
Меры по смягчению последствий
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability. Upgrading to a release that contains the fix is the available remediation; the corrected cached_fid flag handling is already included in the newest RHEL 9 and RHEL 10 minor releases, which are marked not affected.
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Red Hat Enterprise Linux 10 | kernel | Fix deferred | ||
| Red Hat Enterprise Linux 6 | kernel | Not affected | ||
| Red Hat Enterprise Linux 7 | kernel | Not affected | ||
| Red Hat Enterprise Linux 7 | kernel-rt | Not affected | ||
| Red Hat Enterprise Linux 8 | kernel | Not affected | ||
| Red Hat Enterprise Linux 8 | kernel-rt | Not affected | ||
| Red Hat Enterprise Linux 9 | kernel | Out of support scope | ||
| Red Hat Enterprise Linux 9 | kernel-rt | Fix deferred |
Показывать по
Дополнительная информация
Статус:
EPSS
6.3 Medium
CVSS3
Связанные уязвимости
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.
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.
smb: client: split cached_fid bitfields to avoid shared-byte RMW races
In the Linux kernel, the following vulnerability has been resolved: s ...
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.
EPSS
6.3 Medium
CVSS3