🇰🇷 한글 설명
Linux 커널의 FUSE 구성 요소에서 io-uring 큐를 게시할 때 메모리 순서 보장이 누락된 취약점입니다. WRITE_ONCE() 대신 smp_store_release()를 사용하여 큐 필드 초기화가 포인터 할당 전에 완료되도록 보장해야 합니다.
💡 쉬운 설명
컴퓨터가 데이터를 처리할 때 순서가 뒤섞여서 아직 준비되지 않은 데이터를 읽으려고 시도할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fuse: publish io-uring queues with release semantics
fuse_uring_create_queue() initializes a fuse_ring_queue and then
publishes the pointer into ring->queues[qid] with WRITE_ONCE() under the
fch->lock. There are several readers that may concurrently be fetching
that pointer locklessly and then deferencing it.
WRITE_ONCE() doesn't ensure ordering of the queue's field
initialization before the ring->queues[qid] pointer assignment. The
queue must be published with smp_store_release() so the field
initialization is guaranteed to happen before.
Readers in paths where the read may happen concurrently with the store
need to use READ_ONCE() because any race involving a plain access is
undefined.
📍 영향받는 시스템
io-uring 및 FUSE를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
동시성 제어 미흡을 이용한 레이스 컨디션(Race Condition) 유도
🛡️ 대응 방법
커널 패치를 적용하여 smp_store_release() 및 READ_ONCE()를 사용하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.