CVE-2026-43071 in Linux
요약
\~에 의해 VulDB • 2026. 05. 24.
리눅스 커널에서 다음 취약점이 해결되었습니다:
dcache: 버킷의 최소 개수를 2로 제한
사용자가 'dhash_entries=1'을 설정할 때 dentry_hashtable에서 OOB(범위 밖) 읽기 문제가 발생합니다: BUG: unable to handle page fault for address: ffff888b30b774b0 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: Oops: 0000 [#1] SMP PTI
RIP: 0010:__d_lookup+0x56/0x120 Call Trace: d_lookup.cold+0x16/0x5d lookup_dcache+0x27/0xf0 lookup_one_qstr_excl+0x2a/0x180 start_dirop+0x55/0xa0 simple_start_creating+0x8d/0xa0 debugfs_start_creating+0x8c/0x180 debugfs_create_dir+0x1d/0x1c0 pinctrl_init+0x6d/0x140 do_one_initcall+0x6d/0x3d0 kernel_init_freeable+0x39f/0x460 kernel_init+0x2a/0x260
dhash_entries가 1로 설정되고 dcache_init()에 의해 d_hash_shift가 32로 계산되면, dentry_hashtable에는 버킷이 하나만 존재하게 됩니다. 이후 프로세스는 dentry_hashtable에서 하나 이상의 버킷(할당되지 않은 메모리 영역)에 접근합니다: d_lookup b = d_hash(hash) dentry_hashtable + ((u32)hashlen >> d_hash_shift) // C 표준은 오퍼랜드의 비트 너비를 초과하는 우측 시프트 연산의 동작을 정의하지 않습니다(미정 동작). // '(u32)hashlen >> d_hash_shift'의 결과는 'hashlen'이 되므로, 'b'는 할당되지 않은 메모리 영역을 가리키게 됩니다. hlist_bl_for_each_entry_rcu(b) hlist_bl_first_rcu(head) h->first // OOB 읽기 발생!
'd_hash_shift'가 u32 타입의 비트 너비를 초과하지 않도록 dentry_hashtable 버킷의 최소 개수를 2로 제한하여 이 문제를 해결합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.