🇰🇷 한글 설명
Linux 커널의 net/sched: sch_taprio 구성 요소에서 비작업 보존형(non-work-conserving) 자식 qdisc를 처리할 때 발생하는 취약점입니다. 직접적인 dequeue 호출로 인해 peek된 skb가 고립되고 자식 qdisc의 qlen/backlog가 동기화되지 않아, qfq 자식 qdisc 사용 시 NULL 포인터 역참조로 인한 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 패킷을 관리하는 리눅스 커널의 특정 기능에서 데이터 처리 순서가 어긋나 시스템이 갑자기 멈추는 현상이 발생할 수 있습니다. 이는 잘못된 데이터 참조로 인해 컴퓨터의 핵심 운영체제가 충돌을 일으키는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: sch_taprio: Replace direct dequeue call with peek and qdisc_dequeue_peeked
When taprio's software path peeks a non-work-conserving child qdisc, the
child stashes the peeked skb in its gso_skb; taprio_dequeue_from_txq()
then takes the packet with a direct child ->dequeue() call, which ignores
that stash, orphans the peeked skb and desyncs the child's qlen/backlog.
With a qfq child this re-enters the child on an emptied list and
dereferences NULL, panicking the kernel from softirq on ordinary egress.
Take the packet through qdisc_dequeue_peeked(), as sch_red and sch_sfb
now do. The helper returns the child's stashed skb first and is a no-op
when there is none, so a work-conserving child is unaffected and the
gated path now consumes the skb whose length was charged to the budget.
📍 영향받는 시스템
Linux kernel (sch_taprio 및 qfq 자식 qdisc를 사용하는 환경)
⚔️ 공격 벡터
특정 네트워크 트래픽 패턴을 유도하여 커널의 softirq 경로에서 NULL 포인터 역참조를 유발함으로써 시스템을 중단시킴
🛡️ 대응 방법
sch_red 및 sch_sfb와 같이 qdisc_dequeue_peeked()를 사용하도록 커널 패치를 적용하거나 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.