🇰🇷 한글 설명
Linux 커널의 net/sched cls_flow 모듈에서 공유 블록(shared block)을 사용할 때 NULL 포인터 역참조 취약점이 발생합니다. flow_change() 함수가 완전히 한정된 baseclass 없이 flow 필터를 추가할 경우 block->q가 NULL인 상태를 확인하지 않고 접근하여 시스템 중단을 초래합니다.
💡 쉬운 설명
Linux 커널의 네트워크 트래픽 관리 기능에서 특정 설정 방식으로 실행할 때 존재하지 않는 메모리를 접근하여 시스템이 중단되는 문제입니다. 악의적인 네트워크 필터 설정을 추가하면 이 취약점을 악용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: cls_flow: fix NULL pointer dereference on shared blocks
flow_change() calls tcf_block_q() and dereferences q->handle to derive
a default baseclass. Shared blocks leave block->q NULL, causing a NULL
deref when a flow filter without a fully qualified baseclass is created
on a shared block.
Check tcf_block_shared() before accessing block->q and return -EINVAL
for shared blocks. This avoids the null-deref shown below:
=======================================================================
KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
RIP: 0010:flow_change (net/sched/cls_flow.c:508)
Call Trace:
tc_new_tfilter (net/sched/cls_api.c:2432)
rtnetlink_rcv_msg (net/core/rtnetlink.c:6980)
[...]
=======================================================================
📍 영향받는 시스템
Linux kernel (net/sched 모듈 포함, 구체적 버전 범위는 공개 정보 없음)
⚔️ 공격 벡터
tc(traffic control) 명령어로 공유 블록에 baseclass 없이 flow 필터 추가
🛡️ 대응 방법
Linux 커널을 최신 패치된 버전으로 업데이트 (tcf_block_shared() 체크 포함)
🔧 검증 코드
'patched' 출력 시 취약점 수정됨, 'vulnerable' 또는 찾을 수 없음 시 패치 필요
grep -r 'tcf_block_shared' /usr/src/linux-headers-*/net/sched/cls_flow.c 2>/dev/null | grep -q . && echo 'patched' || echo 'vulnerable'