🇰🇷 한글 설명
Linux 커널의 SMB 클라이언트 내 cached_fid 구조체에서 비트필드 공유로 인한 RMW(Read-Modify-Write) 레이스 컨디션 취약점이 발견되었습니다. 여러 CPU가 동일한 바이트 내의 서로 다른 플래그를 동시에 업데이트할 때, 한 프로세스의 변경 사항이 다른 프로세스에 의해 덮어씌워져 데이터 무결성이 깨질 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 하나의 데이터를 수정하려고 할 때, 서로의 작업 내용을 지워버리는 충돌 문제가 발생할 수 있습니다. 이로 인해 시스템의 파일 상태 정보가 잘못 기록될 위험이 있습니다.
🇺🇸 원문 (English)
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 클라이언트를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
동시성 제어가 미흡한 환경에서 특정 SMB 작업이 동시에 수행될 때 발생하는 레이스 컨디션
🛡️ 대응 방법
해당 취약점이 해결된 최신 Linux 커널로 업데이트하여 비트필드를 개별 bool 필드로 분리 적용
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인