🇰🇷 한글 설명
Linux 커널의 net/sched: sch_dualpi2 구성 변경 시 C-queue와 L-queue의 드레인 로직 오류로 인해 NULL skb 역참조가 발생할 수 있는 취약점입니다. 설정 변경 과정에서 C-queue가 비어 있고 L-queue에만 패킷이 있는 경우, 유효하지 않은 메모리 참조로 인해 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터 처리 방식 중 하나인 dualpi2 설정이 바뀔 때, 컴퓨터가 잘못된 메모리 위치를 참조하여 시스템이 멈추거나 오류가 날 수 있는 문제입니다. 데이터가 특정 통로에만 있을 때 이를 제대로 확인하지 못해 발생하는 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: sch_dualpi2: drain both C-queue and L-queue in dualpi2_change()
Fix dualpi2_change() to correctly enforce updated limit and memlimit
values after a configuration change of the dualpi2 qdisc.
Before this patch, dualpi2_change() always attempted to dequeue packets
via the root qdisc (C-queue) when reducing backlog or memory usage, and
unconditionally assumed that a valid skb will be returned. When traffic
classification results in packets being queued in the L-queue while the
C-queue is empty, this leads to a NULL skb dereference during limit or
memlimit enforcement.
This is fixed by first dequeuing from the C-queue path if it is
non-empty. Once the C-queue is empty, packets are dequeued directly from
the L-queue. Return values from qdisc_dequeue_internal() are checked for
both queues. When dequeuing from the L-queue, the parent qdisc qlen and
backlog counters are updated explicitly to keep overall qdisc statistics
consistent.
📍 영향받는 시스템
Linux kernel (sch_dualpi2 qdisc 사용 환경)
⚔️ 공격 벡터
네트워크 트래픽 분류를 조작하여 C-queue는 비우고 L-queue에만 패킷을 쌓은 상태에서 qdisc 설정을 변경하도록 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인