🇰🇷 한글 설명
리눅스 커널의 sch_cake 스케줄러에서 cake_drop 함수가 qlen(큐 길이)을 잘못 감소시키는 취약점이 발견되었습니다. cake_enqueue가 NET_XMIT_CN을 반환할 때 부모 qdisc의 상태와 계층 구조의 qlen/backlog 계산이 일치하지 않아 NULL 역참조가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터가 지나가는 통로를 관리하는 프로그램에서 숫자를 잘못 계산하는 오류가 있었습니다. 이 오류로 인해 시스템이 예상치 못한 상황에서 멈추거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: sch_cake: Fix incorrect qlen reduction in cake_drop
In cake_drop(), qdisc_tree_reduce_backlog() is used to update the qlen
and backlog of the qdisc hierarchy. Its caller, cake_enqueue(), assumes
that the parent qdisc will enqueue the current packet. However, this
assumption breaks when cake_enqueue() returns NET_XMIT_CN: the parent
qdisc stops enqueuing current packet, leaving the tree qlen/backlog
accounting inconsistent. This mismatch can lead to a NULL dereference
(e.g., when the parent Qdisc is qfq_qdisc).
This patch computes the qlen/backlog delta in a more robust way by
observing the difference before and after the series of cake_drop()
calls, and then compensates the qdisc tree accounting if cake_enqueue()
returns NET_XMIT_CN.
To ensure correct compensation when ACK thinning is enabled, a new
variable is introduced to keep qlen unchanged.
📍 영향받는 시스템
Linux kernel (sch_cake 구성 요소가 포함된 버전)
⚔️ 공격 벡터
특정 네트워크 트래픽 조건(NET_XMIT_CN 반환 상황)을 유도하여 시스템 오류 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.