🔍 CVE-2026-93252

0.0
CVSS Score
UNKNOWN
2026-09-24
2026-10-19 10:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 OCFS2 파일 시스템에서 ocfs2_init_acl() 함수 호출 시 순환 잠금 의존성(Circular Locking Dependency)으로 인한 데드락 취약점이 발견되었습니다. 특정 작업 경로에서 서로 다른 두 개의 잠금을 상호 반대 순서로 획득하려 시도할 때 시스템이 멈출 수 있는 문제입니다. 패치는 트랜잭션 시작 전에 ACL 상태를 미리 계산하여 잠금 순서를 올바르게 조정함으로써 이를 해결합니다.

💡 쉬운 설명

컴퓨터 시스템이 두 가지 작업을 동시에 처리하려다 서로가 가진 열쇠를 기다리며 영원히 멈춰버리는 '교착 상태' 문제입니다. 이 문제가 발생하면 파일 시스템이 응답하지 않아 시스템 전체가 먹통이 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ocfs2: fix circular locking dependency in ocfs2_init_acl() A lockdep warning indicates a circular locking dependency between `&oi->ip_xattr_sem` and `&journal->j_trans_barrier`: WARNING: possible circular locking dependency detected is trying to acquire lock: (&oi->ip_xattr_sem){++++}-{4:4}, at: ocfs2_init_acl+0x2fd/0x7e0 fs/ocfs2/acl.c:367 but task is already holding lock: (&journal->j_trans_barrier){.+.+}-{4:4}, at: ocfs2_start_trans+0x3ab/0x700 fs/ocfs2/journal.c:369 The deadlock involves two code paths: Path 1 (setxattr) where `ocfs2_xattr_set()` acquires `ip_xattr_sem` (write) and then starts a transaction, which acquires `j_trans_barrier` (read); and Path 2 (mkdir/mknod) where `ocfs2_mknod()` starts a transaction (`j_trans_barrier` read) and then calls `ocfs2_init_acl()`, which attempts to acquire `ip_xattr_sem` (read) on the parent directory to retrieve the default ACL. Because rw_semaphores are subject to writer priority, a pending writer on `j_trans_barrier` (e.g., the journal commit thread) can cause Path 1 to block, while Path 2 is blocked waiting for Path 1 to release `ip_xattr_sem`. The patch fixes the lock ordering by precomputing the ACL state before starting the OCFS2 transaction, while preserving POSIX ACL storage semantics and the existing inode/security initialization order. By reading the parent directory's default ACL and preparing the new inode's ACLs outside the transaction, `ip_xattr_sem` is always acquired before `j_trans_barrier`. `struct ocfs2_acl_state` encapsulates the prepared ACL state, while `ocfs2_acl_init_prepare()` and `ocfs2_acl_init_release()` avoid code duplication between `ocfs2_mknod()` and `ocfs2_init_security_and_acl()`. `ocfs2_calc_xattr_init()` and `ocfs2_init_acl()` use this precomputed state, removing internal `ip_xattr_sem` acquisition and redundant disk reads. Additionally, remove the `ip_xattr_sem` acquisition from `ocfs2_xattr_set_handle()`. This function is only used while initializing a new inode that has not yet been inserted into the inode hash or attached to a dentry, meaning there is no risk of concurrent access and the lock is unnecessary.

📍 영향받는 시스템

Linux kernel (OCFS2 파일 시스템을 사용하는 버전)

⚔️ 공격 벡터

로컬 사용자가 특정 파일 시스템 작업(mkdir, mknod, setxattr 등)을 교차로 수행하여 데드락 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel