🇰🇷 한글 설명
Linux 커널의 iommufd 서브시스템에서 iopt_access_list_id가 잘못 덮어씌워지는 버그가 발견되었습니다. iopt_add_access() 함수 호출 중 특정 조건에서 ID 값이 불일치하여 커널 경고(WARN_ON)를 발생시킬 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 관리 기능 중 하나에서 데이터 식별 번호가 잘못 기록되는 오류가 있었습니다. 이로 인해 시스템이 예상치 못한 동작을 하거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommufd: Fix iopt_access_list_id overwrite bug
Syzkaller reported the following WARN_ON:
WARNING: CPU: 1 PID: 4738 at drivers/iommu/iommufd/io_pagetable.c:1360
Call Trace:
iommufd_access_change_ioas+0x2fe/0x4e0
iommufd_access_destroy_object+0x50/0xb0
iommufd_object_remove+0x2a3/0x490
iommufd_object_destroy_user
iommufd_access_destroy+0x71/0xb0
iommufd_test_staccess_release+0x89/0xd0
__fput+0x272/0xb50
__fput_sync+0x4b/0x60
__do_sys_close
__se_sys_close
__x64_sys_close+0x8b/0x110
do_syscall_x64
The mismatch between the access pointer in the list and the passed-in
pointer is resulting from an overwrite of access->iopt_access_list_id, in
iopt_add_access(). Called from iommufd_access_change_ioas() when
xa_alloc() succeeds but iopt_calculate_iova_alignment() fails.
Add a new_id in iopt_add_access() and only update iopt_access_list_id when
returning successfully.
📍 영향받는 시스템
iommufd 기능을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
로컬 권한을 가진 공격자가 특수하게 조작된 iommufd 관련 시스템 호출을 통해 발생 가능
🛡️ 대응 방법
iommufd 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인