🇰🇷 한글 설명
Linux 커널의 io_uring/tctx 모듈에서 xa_store()가 메모리 할당에 실패했을 때, xarray가 비어 있음에도 tctx->head가 NULL이 아닌 상태로 남는 문제가 발견되었습니다. 이로 인해 __io_uring_free()의 정합성 검사(WARN_ON_ONCE)가 발동하며, 임시 조치로 xarray 항목을 순회하여 남아 있으면 경고를 출력하도록 우회했습니다.
💡 쉬운 설명
리눅스 커널이 메모리를 할당하지 못하는 상황에서 내부 자료 구조 상태가 어긋나 경고가 발생하는 문제입니다. 이번 수정은 근본 원인이 해결되기 전까지 문제를 감지하고 기록하도록 만드는 임시 대응입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
io_uring/tctx: work around xa_store() allocation error issue
syzbot triggered the following WARN_ON:
WARNING: CPU: 0 PID: 16 at io_uring/tctx.c:51 __io_uring_free+0xfa/0x140 io_uring/tctx.c:51
which is the
WARN_ON_ONCE(!xa_empty(&tctx->xa));
sanity check in __io_uring_free() when a io_uring_task is going through
its final put. The syzbot test case includes injecting memory allocation
failures, and it very much looks like xa_store() can fail one of its
memory allocations and end up with ->head being non-NULL even though no
entries exist in the xarray.
Until this issue gets sorted out, work around it by attempting to
iterate entries in our xarray, and WARN_ON_ONCE() if one is found.
📍 영향받는 시스템
이 수정이 반영되기 전의 io_uring을 포함한 Linux 커널 버전 (정확한 범위는 배포판 보안 공지 확인 필요)
⚔️ 공격 벡터
로컬 사용자가 io_uring을 사용하는 과정에서 메모리 할당 실패가 유발되는 조건을 만들 때 경고가 발생하며, 주로 커널 안정성 문제로 분류됩니다.
🛡️ 대응 방법
배포판에서 제공하는 해당 CVE 보안 패치가 적용된 최신 커널로 업데이트하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전이 배포판 보안 공지에서 패치된 버전 이상인지 비교하여, 미만이면 취약한 것으로 판단하고 업데이트가 필요합니다.
uname -r && (dpkg -l linux-image-$(uname -r) 2>/dev/null || rpm -q kernel 2>/dev/null)