🇰🇷 한글 설명
Linux 커널의 io_uring/waitid 구성 요소에서 task_work 취소 상태를 제대로 확인하지 않아 발생하는 취약점입니다. 취소된 작업이 kworker 컨텍스트에서 실행될 때 잘못된 태스크 정보를 참조하여 발생할 수 있는 논리적 오류를 해결했습니다.
💡 쉬운 설명
컴퓨터가 작업을 취소했는데도 불구하고, 시스템이 이를 무시하고 엉뚱한 정보를 처리하려고 시도할 수 있는 문제입니다. 이로 인해 시스템이 혼란을 겪거나 잘못된 동작을 할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
io_uring/waitid: honor task_work cancellation
io_waitid_cb() may run through the fallback task_work path when
task_work_add() can no longer queue work to the originating task. The
fallback runs from a kworker and io_uring marks such task work as
canceled through tw.cancel.
io_waitid_cb() currently ignores tw.cancel and calls __do_wait().
waitid is task-context dependent: __do_wait() performs child lookup
relative to current, and the retry path also uses
current->signal->wait_chldexit. If the callback runs from the fallback
kworker, current is therefore not the task that submitted the request.
Honor tw.cancel before entering __do_wait(). Complete the request with
-ECANCELED and skip the siginfo copy, since canceled task work may run
without the submitting task's userspace execution context.
Keep the existing siginfo handling for normal waitid completion and
explicit cancellation.
📍 영향받는 시스템
io_uring을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특수하게 조작된 io_uring 요청을 통해 작업 취소 메커니즘의 논리적 허점을 이용
🛡️ 대응 방법
io_uring의 task_work 취소 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인