🇰🇷 한글 설명
Linux 커널의 Wacom HID 드라이버에서 kfifo 버퍼가 비어 있을 때 잘못된 데이터를 레코드 길이로 해석하여 발생하는 slab-out-of-bounds 쓰기 취약점입니다. 이로 인해 kfifo 내부 상태가 손상되어 버퍼 크기를 초과하는 데이터가 메모리에 기록될 수 있습니다.
💡 쉬운 설명
와콤 타블렛 드라이버가 빈 메모리 공간의 쓰레기 값을 잘못 읽어 들여, 정해진 용량보다 훨씬 많은 데이터를 메모리에 강제로 써버리는 오류입니다. 이로 인해 시스템의 중요한 메모리 영역이 망가질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
HID: wacom: fix slab-out-of-bounds write in wacom_wac_queue_insert
wacom_wac_queue_insert() calls kfifo_skip() in a loop when the kfifo
doesn't have enough space for the incoming report. If the kfifo is
empty, kfifo_skip() reads stale data left in the kmalloc'd buffer
via __kfifo_peek_n() and interprets it as a record length, advancing
fifo->out by that garbage value. This corrupts the internal kfifo
state, causing kfifo_unused() to return a value much larger than the
actual buffer size, which bypasses __kfifo_in_r()'s guard:
if (len + recsize > kfifo_unused(fifo))
return 0;
kfifo_copy_in() then performs an out-of-bounds memcpy, writing up to
3842 bytes past the 256-byte buffer.
Add a !kfifo_is_empty() condition to the while loop so kfifo_skip()
is never called on an empty fifo, and check the return value of
kfifo_in() to reject reports that are too large for the fifo.
📍 영향받는 시스템
Linux kernel (Wacom HID driver 포함 버전)
⚔️ 공격 벡터
조작된 HID 리포트를 통해 kfifo 버퍼의 경계를 넘어서는 메모리 쓰기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인