🇰🇷 한글 설명
Linux 커널의 iommufd 구성 요소에서 iommufd_fault_alloc() 함수 호출 시 fput() 이후 객체를 중복 해제하여 참조 횟수(refcount) 불균형이 발생하는 취약점입니다. 이로 인해 메모리 누수 및 커널 경고가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리를 관리하는 과정에서 이미 사용이 끝난 데이터를 한 번 더 지우려고 시도하여 발생하는 오류입니다. 이로 인해 시스템의 메모리가 낭비되거나 예기치 않은 경고가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommufd: Fix out_fput in iommufd_fault_alloc()
As fput() calls the file->f_op->release op, where fault obj and ictx are
getting released, there is no need to release these two after fput() one
more time, which would result in imbalanced refcounts:
refcount_t: decrement hit 0; leaking memory.
WARNING: CPU: 48 PID: 2369 at lib/refcount.c:31 refcount_warn_saturate+0x60/0x230
Call trace:
refcount_warn_saturate+0x60/0x230 (P)
refcount_warn_saturate+0x60/0x230 (L)
iommufd_fault_fops_release+0x9c/0xe0 [iommufd]
...
VFS: Close: file count is 0 (f_op=iommufd_fops [iommufd])
WARNING: CPU: 48 PID: 2369 at fs/open.c:1507 filp_flush+0x3c/0xf0
Call trace:
filp_flush+0x3c/0xf0 (P)
filp_flush+0x3c/0xf0 (L)
__arm64_sys_close+0x34/0x98
...
imbalanced put on file reference count
WARNING: CPU: 48 PID: 2369 at fs/file.c:74 __file_ref_put+0x100/0x138
Call trace:
__file_ref_put+0x100/0x138 (P)
__file_ref_put+0x100/0x138 (L)
__fput_sync+0x4c/0xd0
Drop those two lines to fix the warnings above.
📍 영향받는 시스템
iommufd 모듈을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
로컬 공격자가 특정 시스템 호출을 통해 커널의 참조 횟수 불균형을 유도하여 메모리 누수 유발
🛡️ 대응 방법
iommufd_fault_alloc() 내의 중복된 객체 해제 코드를 제거한 최신 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인합니다.