🔍 CVE-2026-23074

7.8
CVSS Score
HIGH
2026-02-04
2026-10-19 19:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 net/sched 구성 요소에서 teql qdisc가 루트 qdisc로만 사용되도록 강제하지 않아 발생하는 취약점입니다. 특정 네트워크 스케줄링 시나리오에서 teql의 qlen 업데이트 미비로 인해 QFQ 클래스 비활성화 과정 중 dangling pointer가 발생하며, 이는 Use-After-Free(UAF) 취약점으로 이어집니다.

💡 쉬운 설명

네트워크 데이터 처리 순서를 정하는 프로그램의 설계 오류로 인해, 시스템이 이미 삭제된 메모리 주소를 다시 참조하게 되는 문제입니다. 이를 통해 공격자가 시스템의 제어권을 획득하거나 오류를 일으킬 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net/sched: Enforce that teql can only be used as root qdisc Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint. Although not important, I will describe the scenario that unearthed this issue for the curious. GangMin Kim <[email protected]> managed to concot a scenario as follows: ROOT qdisc 1:0 (QFQ) ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s └── class 1:2 (weight=1, lmax=1514) teql GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.

📍 영향받는 시스템

Linux Kernel (teql qdisc를 사용하는 환경)

⚔️ 공격 벡터

특정 네트워크 스케줄링 계층 구조(QFQ 하위에 netem과 teql을 조합)를 구성하여 메모리 해제 후 재참조 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 teql 사용 제약 조건을 적용해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel