🇰🇷 한글 설명
Linux 커널 네트워크 스케줄러의 fw_classify 함수에서 공유 블록 사용 시 NULL 포인터 역참조 발생. 빈 cls_fw 필터가 공유 블록에 연결되고 nonzero major skb 마크를 가진 패킷이 분류될 때 커널 폐주. fw_change()에서 공유 블록에 대한 구식 방법 사용을 거부하여 해결.
💡 쉬운 설명
Linux 커널의 네트워크 트래픽 필터링 부분에서 메모리를 잘못 접근하는 버그입니다. 특정 네트워크 설정에서 패킷이 처리될 때 커널이 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: cls_fw: fix NULL pointer dereference on shared blocks
The old-method path in fw_classify() calls tcf_block_q() and
dereferences q->handle. Shared blocks leave block->q NULL, causing a
NULL deref when an empty cls_fw filter is attached to a shared block
and a packet with a nonzero major skb mark is classified.
Reject the configuration in fw_change() when the old method (no
TCA_OPTIONS) is used on a shared block, since fw_classify()'s
old-method path needs block->q which is NULL for shared blocks.
The fixed null-ptr-deref calling stack:
KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
RIP: 0010:fw_classify (net/sched/cls_fw.c:81)
Call Trace:
tcf_classify (./include/net/tc_wrapper.h:197 net/sched/cls_api.c:1764 net/sched/cls_api.c:1860)
tc_run (net/core/dev.c:4401)
__dev_queue_xmit (net/core/dev.c:4535 net/core/dev.c:4790)
📍 영향받는 시스템
Linux kernel의 모든 배포판 (net/sched 모듈이 활성화된 경우)
⚔️ 공격 벡터
공유 네트워크 블록 설정에서 nonzero major skb mark를 가진 패킷 전송
🛡️ 대응 방법
Linux 커널을 최신 안정화 버전으로 업데이트 및 보안 패치 적용
🔧 검증 코드
커널 버전 확인 후 최신 보안 패치가 적용된 버전인지 배포판 보안 공지에서 확인
uname -r && grep -i 'fw_classify' /proc/version 2>/dev/null || dpkg -l | grep linux-image