🇰🇷 한글 설명
Linux 커널의 net/sched DualPI2 구성 요소에서 GSO 백로그 계정 방식의 오류로 인해 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. DualPI2가 패킷을 분할할 때 실제 큐에 들어간 패킷 수보다 qlen 값이 더 크게 계산되어, QFQ 스케줄러 사용 시 시스템 충돌을 유발할 수 있습니다.
💡 쉬운 설명
네트워크 패킷을 처리하는 과정에서 숫자를 잘못 세는 버그가 있어, 시스템이 처리해야 할 데이터 양을 오해하게 만듭니다. 이로 인해 컴퓨터가 처리할 수 없는 빈 데이터를 참조하려다 시스템이 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: dualpi2: fix GSO backlog accounting
When DualPI2 splits a GSO skb into N segments, it propagates N
additional packets to its parent before returning NET_XMIT_SUCCESS.
The parent then accounts for the original skb once more, leaving its
qlen one larger than the number of packets actually queued.
With QFQ as the parent, after all real packets are dequeued, QFQ still
has a non-zero qlen while its in-service aggregate has no active
classes. qfq_choose_next_agg() returns NULL and qfq_dequeue() passes
the result to qfq_peek_skb(), causing a NULL pointer dereference.
Follow the same pattern used by tbf_segment() and taprio: count only
successfully queued segments, propagate the difference between the
original skb and those segments, and return NET_XMIT_SUCCESS whenever
at least one segment was queued.
📍 영향받는 시스템
DualPI2 및 QFQ 스케줄러를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특정 네트워크 트래픽 패턴을 생성하여 커널의 패킷 스케줄링 로직을 트리거함
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 배포판의 수정 버전인지 확인