🇰🇷 한글 설명
Linux 커널의 Ceph 파일 시스템에서 r_parent를 검증하기 전에 상태를 적용하는 과정 중 레이스 컨디션(경쟁 상태) 취약점이 발견되었습니다. 이로 인해 이름 변경(rename)과 같은 동시 작업 시 잘못된 디렉토리 inode에 상태 변경이 적용되거나, 참조 횟수(reference count) 불균형으로 인한 메모리 누수 및 언더플로우가 발생할 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 일어날 때 파일 시스템이 엉뚱한 폴더를 수정하거나 메모리 계산을 틀리게 하는 오류입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ceph: fix race condition validating r_parent before applying state
Add validation to ensure the cached parent directory inode matches the
directory info in MDS replies. This prevents client-side race conditions
where concurrent operations (e.g. rename) cause r_parent to become stale
between request initiation and reply processing, which could lead to
applying state changes to incorrect directory inodes.
[ idryomov: folded a kerneldoc fixup and a follow-up fix from Alex to
move CEPH_CAP_PIN reference when r_parent is updated:
When the parent directory lock is not held, req->r_parent can become
stale and is updated to point to the correct inode. However, the
associated CEPH_CAP_PIN reference was not being adjusted. The
CEPH_CAP_PIN is a reference on an inode that is tracked for
accounting purposes. Moving this pin is important to keep the
accounting balanced. When the pin was not moved from the old parent
to the new one, it created two problems: The reference on the old,
stale parent was never released, causing a reference leak.
A reference for the new parent was never acquired, creating the risk
of a reference underflow later in ceph_mdsc_release_request(). This
patch corrects the logic by releasing the pin from the old parent and
acquiring it for the new parent when r_parent is switched. This
ensures reference accounting stays balanced. ]
📍 영향받는 시스템
Linux Kernel (Ceph 파일 시스템 모듈 사용 환경)
⚔️ 공격 벡터
동시성 작업을 이용한 레이스 컨디션 유도 (Local/Remote)
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인하십시오.