🇰🇷 한글 설명
Linux 커널의 io_uring 구성 요소 내 io_pin_pages 함수에서 정수 오버플로 취약점이 발견되었습니다. 사용자로부터 직접 전달된 uaddr 매개변수에 크기를 더하는 과정에서 오버플로가 발생할 수 있어 시스템 안정성을 해칠 수 있습니다.
💡 쉬운 설명
컴퓨터가 메모리 주소를 계산할 때 숫자가 너무 커져서 엉뚱한 곳을 가리키게 되는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
io_uring: check for overflows in io_pin_pages
WARNING: CPU: 0 PID: 5834 at io_uring/memmap.c:144 io_pin_pages+0x149/0x180 io_uring/memmap.c:144
CPU: 0 UID: 0 PID: 5834 Comm: syz-executor825 Not tainted 6.12.0-next-20241118-syzkaller #0
Call Trace:
<TASK>
__io_uaddr_map+0xfb/0x2d0 io_uring/memmap.c:183
io_rings_map io_uring/io_uring.c:2611 [inline]
io_allocate_scq_urings+0x1c0/0x650 io_uring/io_uring.c:3470
io_uring_create+0x5b5/0xc00 io_uring/io_uring.c:3692
io_uring_setup io_uring/io_uring.c:3781 [inline]
...
</TASK>
io_pin_pages()'s uaddr parameter came directly from the user and can be
garbage. Don't just add size to it as it can overflow.
📍 영향받는 시스템
Linux Kernel (io_uring 모듈을 사용하는 버전)
⚔️ 공격 벡터
사용자가 조작된 uaddr 값을 io_uring 시스템 호출을 통해 전달하여 정수 오버플로 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인