🇰🇷 한글 설명
Linux 커널의 RapidIO mport 캐릭터 디바이스 인터페이스에서 dma_req_free() 함수 호출 시 Use-After-Free 취약점이 발생합니다. kref_put()을 통해 매핑 참조가 해제된 후, 이미 해제된 객체의 뮤텍스를 해제하려고 시도하여 메모리 오류가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 관리 과정에서 이미 사용이 끝난 데이터 영역을 다시 사용하려고 할 때 발생하는 오류입니다. 공격자가 이를 악용하면 시스템을 중단시키거나 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rapidio: mport_cdev: fix use-after-free in dma_req_free()
dma_req_free() acquires buf_mutex through req->map, drops the mapping
reference with kref_put(), and then dereferences req->map again to unlock
the mutex.
If kref_put() drops the last reference, mport_release_mapping() frees the
mapping, and the subsequent mutex_unlock() dereferences a freed object.
This is a use-after-free.
Fix this by caching map and md before kref_put(), clearing req->map while
holding buf_mutex, and using the cached md for mutex unlocking.
The bug is reachable from userspace via the RapidIO mport character device
interface.
📍 영향받는 시스템
RapidIO mport 캐릭터 디바이스를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
사용자 공간(Userspace)에서 RapidIO mport 캐릭터 디바이스 인터페이스를 통해 접근 가능
🛡️ 대응 방법
kref_put() 호출 전 매핑 정보를 캐싱하고, 뮤텍스 해제 시 캐싱된 데이터를 사용하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.