🔍 CVE-2025-68774

7.5
CVSS Score
HIGH
2026-01-13
2026-07-30 06:24
✅ 완료

🇰🇷 한글 설명

Linux 커널의 hfsplus 파일 시스템에서 sync()와 link() 함수가 동시에 호출될 때 발생하는 레이스 컨디션 취약점입니다. 두 스레드가 동일한 bnode를 생성하려고 시도하는 과정에서 참조 횟수(refcnt) 관리가 누락되어 커널 패닉(BUG_ON)을 유발할 수 있습니다.

💡 쉬운 설명

두 가지 작업이 동시에 파일 시스템의 같은 부분을 수정하려고 할 때, 시스템이 데이터 개수를 잘못 세어 오류를 일으키는 문제입니다. 이로 인해 컴퓨터 시스템이 갑자기 멈추거나 꺼질 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: hfsplus: fix missing hfs_bnode_get() in __hfs_bnode_create When sync() and link() are called concurrently, both threads may enter hfs_bnode_find() without finding the node in the hash table and proceed to create it. Thread A: hfsplus_write_inode() -> hfsplus_write_system_inode() -> hfs_btree_write() -> hfs_bnode_find(tree, 0) -> __hfs_bnode_create(tree, 0) Thread B: hfsplus_create_cat() -> hfs_brec_insert() -> hfs_bnode_split() -> hfs_bmap_alloc() -> hfs_bnode_find(tree, 0) -> __hfs_bnode_create(tree, 0) In this case, thread A creates the bnode, sets refcnt=1, and hashes it. Thread B also tries to create the same bnode, notices it has already been inserted, drops its own instance, and uses the hashed one without getting the node. ``` node2 = hfs_bnode_findhash(tree, cnid); if (!node2) { <- Thread A hash = hfs_bnode_hash(cnid); node->next_hash = tree->node_hash[hash]; tree->node_hash[hash] = node; tree->node_hash_cnt++; } else { <- Thread B spin_unlock(&tree->hash_lock); kfree(node); wait_event(node2->lock_wq, !test_bit(HFS_BNODE_NEW, &node2->flags)); return node2; } ``` However, hfs_bnode_find() requires each call to take a reference. Here both threads end up setting refcnt=1. When they later put the node, this triggers: BUG_ON(!atomic_read(&node->refcnt)) In this scenario, Thread B in fact finds the node in the hash table rather than creating a new one, and thus must take a reference. Fix this by calling hfs_bnode_get() when reusing a bnode newly created by another thread to ensure the refcount is updated correctly. A similar bug was fixed in HFS long ago in commit a9dc087fd3c4 ("fix missing hfs_bnode_get() in __hfs_bnode_create") but the same issue remained in HFS+ until now.

📍 영향받는 시스템

hfsplus 파일 시스템을 사용하는 Linux 커널 버전

⚔️ 공격 벡터

동시에 파일 시스템 작업을 수행하도록 유도하여 커널 패닉 유발 (Local)

🛡️ 대응 방법

hfsplus 관련 커널 패치를 적용하거나 최신 커널로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel