🇰🇷 한글 설명
Linux 커널의 UIO 드라이버에서 장치 등록 실패 시 처리 과정 중 stale info 포인터가 남는 취약점이 발견되었습니다. 등록 실패 후 호출자가 uio_info 구조체를 해제하더라도, 이미 열린 파일 디스크립터가 해당 메모리를 참조하여 Use-After-Free가 발생할 수 있습니다.
💡 쉬운 설명
장치를 등록하다가 오류가 났을 때, 시스템이 사용하던 메모리 주소를 제대로 지우지 않아 발생하는 문제입니다. 공격자가 이 틈을 타서 이미 해제된 메모리에 접근하여 시스템을 불안정하게 만들거나 공격할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
uio: Fix stale info pointer in failed registration path
After device_add(), the UIO device is visible to userspace and /dev/uioX
can be opened. If a later setup step fails, __uio_register_device()
unwinds the device but leaves idev->info pointing at the caller-owned
struct uio_info.
That is unsafe when an opener races with the failed registration path.
The open file keeps a reference to the uio_device, while the caller sees
registration failure and may free its struct uio_info. Later file
operations can then follow idev->info and dereference freed memory.
Handle post-device_add() failures like unregister: remove UIO attributes
while the info pointer is still valid, then clear idev->info under
info_lock and wake existing waiters/async users before removing the
device and minor. This makes already-open file descriptors observe the
same "device gone" state as normal uio_unregister_device().
📍 영향받는 시스템
Linux kernel (UIO driver component)
⚔️ 공격 벡터
장치 등록 실패 시점과 사용자 공간에서의 파일 오픈 시점 사이의 레이스 컨디션을 이용한 Use-After-Free 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 UIO 등록 실패 시의 메모리 해제 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인