🇰🇷 한글 설명
리눅스 커널의 net_sched 구성 요소에서 지연된 qdisc 드롭 발생 시 skb 메모리 누수가 발생하는 취약점이 발견되었습니다. 루트 qdisc가 TCQ_F_DEQUEUE_DROPS 플래그를 구현하지 않을 경우, 자식 qdisc의 로컬 목록에 있는 패킷이 해제되지 않고 메모리에 남게 됩니다. 이를 해결하기 위해 qdisc_dequeue_drop() 함수가 루트 qdisc를 인식하고 적절히 메모리를 해제하도록 수정되었습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 버려져야 할 데이터 조각들이 메모리에서 삭제되지 않고 계속 쌓이는 문제입니다. 이로 인해 시스템의 메모리가 점진적으로 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net_sched: fix skb memory leak in deferred qdisc drops
When the network stack cleans up the deferred list via qdisc_run_end(),
it operates on the root qdisc. If the root qdisc do not implement the
TCQ_F_DEQUEUE_DROPS flag the packets queue to free are never freed and
gets stranded on the child's local to_free list.
Fix this by making qdisc_dequeue_drop() aware of the root qdisc. It
fetches the root qdisc and check for the TCQ_F_DEQUEUE_DROPS flag. If
the flag is present, the packet is appended directly to the root's
to_free list. Otherwise, drop it directly as it was done before the
optimization was implemented.
📍 영향받는 시스템
TCQ_F_DEQUEUE_DROPS 플래그를 구현하지 않은 루트 qdisc를 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
네트워크 트래픽을 의도적으로 조작하여 특정 qdisc 드롭을 유발함으로써 메모리 누수를 가속화할 수 있음
🛡️ 대응 방법
해당 취약점이 수정된 최신 리눅스 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 수정된 패치 버전 이후인지 확인