🔍 CVE-2026-89747

7.8
CVSS Score
HIGH
2026-09-11
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 tracing 기능에서 sub-buffer의 크기 변경 시 발생하는 Use-After-Free 취약점입니다. trace_pipe를 읽는 과정에서 버퍼의 순서가 변경되면, 이미 해제된 메모리 주소를 참조하게 되어 시스템 불안정이나 권한 상승을 초래할 수 있습니다.

💡 쉬운 설명

데이터를 읽고 있는 도중에 데이터가 담긴 바구니를 갑자기 바꿔버려서, 컴퓨터가 이미 버려진 바구니를 찾으려다 오류가 발생하는 문제입니다. 이로 인해 시스템이 멈추거나 해킹의 위험이 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: tracing: Fix use-after-free in trace_pipe read on sub-buffer order change Writing to buffer_subbuf_size_kb calls ring_buffer_subbuf_order_set(), which frees every sub-buffer of the ring buffer, including the reader page, and replaces them with newly allocated ones. Readers of trace_pipe hold pointers into those pages. ring_buffer_peek() looks up an event under cpu_buffer->reader_lock but returns the event pointer after dropping the lock, and peek_next_entry() then calls ring_buffer_event_length() and ring_buffer_event_data() on it. If the sub-buffer order is changed in that window, the reader dereferences freed memory: BUG: KASAN: use-after-free in ring_buffer_peek+0x3e0/0x430 Read of size 1 at addr ffff88802a4cf010 by task syz-executor989/6002 Freed by: free_buffer_page kernel/trace/ring_buffer.c:398 [inline] ring_buffer_subbuf_order_set+0x1325/0x18e0 kernel/trace/ring_buffer.c:7444 buffer_subbuf_size_write+0x182/0x280 kernel/trace/trace.c:8221 Take trace_access_lock(RING_BUFFER_ALL_CPUS) around the order change. This is the lock trace_pipe readers already hold across their entire peek-and-print loop, so the swap can no longer race with a reader that is dereferencing a peeked event.

📍 영향받는 시스템

Linux Kernel (tracing 기능이 활성화된 버전)

⚔️ 공격 벡터

로컬 사용자가 trace_pipe를 읽는 동시에 버퍼 크기를 변경하는 조작을 통해 메모리 오류 유도

🛡️ 대응 방법

커널 패치를 적용하여 버퍼 크기 변경 시 trace_access_lock을 사용하도록 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel