🇰🇷 한글 설명
Linux 커널의 media: vidtv 구성 요소에서 NULL 포인터 역참조 취약점이 발견되었습니다. vidtv_psi_pmt_stream_init() 함수가 메모리 할당 실패 시 NULL을 반환할 수 있음에도 불구하고, vidtv_channel_pmt_match_sections() 함수에서 이를 확인하지 않아 시스템 오류(General Protection Fault)가 발생합니다.
💡 쉬운 설명
프로그램이 메모리를 빌려오는 데 실패했을 때, 그 실패 사실을 확인하지 않고 바로 사용하려고 시도하여 컴퓨터 시스템이 멈추거나 오류를 일으키는 문제입니다. 이는 시스템의 안정성을 해칠 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: vidtv: fix NULL pointer dereference in vidtv_channel_pmt_match_sections
syzbot reported a general protection fault in vidtv_psi_desc_assign [1].
vidtv_psi_pmt_stream_init() can return NULL on memory allocation
failure, but vidtv_channel_pmt_match_sections() does not check for
this. When tail is NULL, the subsequent call to
vidtv_psi_desc_assign(&tail->descriptor, desc) dereferences a NULL
pointer offset, causing a general protection fault.
Add a NULL check after vidtv_psi_pmt_stream_init(). On failure, clean
up the already-allocated stream chain and return.
[1]
Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN PTI
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
RIP: 0010:vidtv_psi_desc_assign+0x24/0x90 drivers/media/test-drivers/vidtv/vidtv_psi.c:629
Call Trace:
<TASK>
vidtv_channel_pmt_match_sections drivers/media/test-drivers/vidtv/vidtv_channel.c:349 [inline]
vidtv_channel_si_init+0x1445/0x1a50 drivers/media/test-drivers/vidtv/vidtv_channel.c:479
vidtv_mux_init+0x526/0xbe0 drivers/media/test-drivers/vidtv/vidtv_mux.c:519
vidtv_start_streaming drivers/media/test-drivers/vidtv/vidtv_bridge.c:194 [inline]
vidtv_start_feed+0x33e/0x4d0 drivers/media/test-drivers/vidtv/vidtv_bridge.c:239
📍 영향받는 시스템
Linux kernel (media: vidtv driver components)
⚔️ 공격 벡터
메모리 할당 실패를 유도할 수 있는 환경에서 특정 미디어 스트리밍 초기화 과정을 통해 발생 가능
🛡️ 대응 방법
vidtv_psi_pmt_stream_init() 호출 이후 NULL 체크 로직을 추가하고, 실패 시 할당된 자원을 정리하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전이 적용되었는지 확인합니다.