🇰🇷 한글 설명
Linux 커널의 io_uring 네트워크 모듈에서, 번들 전송(send bundle) 요청이 멀티샷 전용 함수인 io_req_post_cqe()를 잘못 호출하여 커널 경고(WARNING)가 발생하는 문제가 수정되었습니다. 수정에서는 요청이 여러 CQE를 게시하려는지 나타내는 새로운 플래그를 추가했습니다.
💡 쉬운 설명
리눅스 커널의 비동기 입출력 기능 중 네트워크 전송 부분에서 잘못된 함수 호출이 있었습니다. 이로 인해 커널이 경고를 띄우고 시스템이 불안정해질 수 있었으며, 이를 바로잡는 패치가 적용되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
io_uring/net: fix io_req_post_cqe abuse by send bundle
[ 114.987980][ T5313] WARNING: CPU: 6 PID: 5313 at io_uring/io_uring.c:872 io_req_post_cqe+0x12e/0x4f0
[ 114.991597][ T5313] RIP: 0010:io_req_post_cqe+0x12e/0x4f0
[ 115.001880][ T5313] Call Trace:
[ 115.002222][ T5313] <TASK>
[ 115.007813][ T5313] io_send+0x4fe/0x10f0
[ 115.009317][ T5313] io_issue_sqe+0x1a6/0x1740
[ 115.012094][ T5313] io_wq_submit_work+0x38b/0xed0
[ 115.013223][ T5313] io_worker_handle_work+0x62a/0x1600
[ 115.013876][ T5313] io_wq_worker+0x34f/0xdf0
As the comment states, io_req_post_cqe() should only be used by
multishot requests, i.e. REQ_F_APOLL_MULTISHOT, which bundled sends are
not. Add a flag signifying whether a request wants to post multiple
CQEs. Eventually REQ_F_APOLL_MULTISHOT should imply the new flag, but
that's left out for simplicity.
📍 영향받는 시스템
io_uring 네트워크 번들 전송 기능을 포함한 Linux 커널 (수정 이전의 6.x 계열 일부 버전)
⚔️ 공격 벡터
로컬 사용자가 io_uring의 번들 send 요청을 실행하면 커널 경고와 서비스 거부(시스템 불안정) 상태를 유발할 수 있음
🛡️ 대응 방법
배포판 제공 보안 업데이트를 통해 최신 리눅스 커널로 업그레이드하거나, 필요하지 않다면 io_uring 기능을 비활성화
🔧 검증 코드
출력되는 커널 버전을 배포판 보안 공지에서 해당 패치가 포함된 버전과 비교하고, io_uring 심볼이 존재하면 해당 기능이 커널에 포함되어 있음을 의미합니다.
uname -r && (grep -i io_uring /proc/kallsyms 2>/dev/null | head -n 1)