CVE-2026-23074 in Linux
요약
\~에 의해 VulDB • 2026. 06. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/sched: teql이 루트 qdisc로만 사용되도록 강제
teql의 설계 의도는 루트 qdisc로만 사용되어야 한다는 것입니다. 이 제약 조건을 확인해야 합니다.
중요하지는 않지만, 호기심 많은 분들을 위해 이 문제를 발견하게 된 시나리오를 설명하겠습니다.
GangMin Kim <[email protected]>은 다음과 같은 시나리오를 구성했습니다:
루트 qdisc 1:0 (QFQ) ├── 클래스 1:1 (weight=15, lmax=16384) netem (지연 6.4초 적용) └── 클래스 1:2 (weight=1, lmax=1514) teql
GangMin은 1:1(netem)에 큐잉되는 패킷을 전송합니다. QFQ가 이 클래스에서 dequeue를 호출하면 6.4초가 지나기 전까지는 패킷을 반환하지 않습니다. 그 사이 두 번째 패킷이 전송되어 1:2에 도착합니다. teql의 enqueue는 성공을 반환하며, 이로 인해 클래스 1:2가 활성화됩니다. 주요 문제는 teql이 dequeue 시에만 부모가 보이는 qlen(sch->q.qlen)을 업데이트한다는 점입니다. QFQ는 peek가 성공할 때만 dequeue를 호출하며(teql의 peek는 항상 NULL을 반환하므로), dequeue는 절대 호출되지 않아 qlen은 0으로 유지됩니다. 이를 고려할 때, GangMin이 1:2의 lmax 값을 업데이트하면 qfq_change_class가 qfq_deact_rm_from_agg를 호출합니다. 자식 qdisc의 qlen이 증가하지 않았기 때문에 qfq는 클래스를 비활성화하지 못하지만, 집계에서 해당 포인터는 여전히 해제됩니다. 따라서 6.4초 후(네트임의 지연 시간) 첫 번째 패킷이 다시 예약되면, 덩글링 포인터에 접근하여 GangMin이 UAF(Use-After-Free)를 유발하게 됩니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.