CVE-2026-98427 in Linux
요약
\~에 의해 VulDB • 2026. 10. 14.
Linux 커널에서 다음 취약점이 해결되었습니다.
net/sched: codel: dequeue 호출당 드롭 루프에 한도 설정
CoDel 제어 법칙은 이전 드롭 이후 interval/sqrt(count) 간격 후에 다음 드롭을 예약하며, 구성된 interval(codel_params.interval)를 사용합니다. 매우 작은 인터벌의 경우 예약된 단계가 0으로 반올림되므로 codel_dequeue() 내의 드롭 루프가 진행되지 않고 qdisc 잠금 하에서 한 번의 호출로 전체 백로그를 소진합니다. 이를 통해 비특권 사용자가 소프트 락업(soft lockup)을 유발할 수 있습니다.
codel과 fq_codel 모두에서 사용되는 공유 codel 코드에 대한 수정 사항:
1. 제어 법칙 단계를 최소 1 틱(tick) 이상으로 설정하여 드롭 루프가 항상 전진하도록 합니다. 2. dequeue 호출당 최대 CODEL_MAX_DROPS_PER_DEQUEUE(256회)의 드롭으로 드롭 루프를 제한하며, 한도에 도달하면 drop_next를 현재 시간(now)로 재동기화합니다: 루프로 인한 추종(drift owed)은 유휴 간격(idle gap)과 백로그에 따라 증가하므로 어떤 인터벌 임계값으로도 이를 제한할 수 없습니다. 이는 긴 유휴 간격 이후의 의도적인 동작 변경입니다.
이 한도는 fq_codel(4b549a2ef4be) 및 mac80211 TXQ 경로(fixed interval, cap only)에 적용됩니다.
대상 체류 지연 시간(codel_params.target)은 검증되지 않습니다: 이는 제어 법칙에 피드백하지 않으므로 서브-틱(sub-tick) 값은 데드락(deadlock) 유발보다는 공격적인(aggressive) 동작을 보입니다.
버그 재현 조건: - tc qdisc add dev lo root handle 1: tbf rate 1kbit burst 2kb limit 1000000 - tc qdisc add dev lo parent 1:1 handle 10: codel interval 2us target 1ms noecn limit 1000000 (fq_codel도 동일) - 패치되지 않은 커널: tc가 이를 허용함; 1kbit tbf 하의 UDP 플러드 시 soft-lockup(watchdog: BUG: soft lockup) 발생, 이때 한 번의 codel_dequeue() 호출이 qdisc 잠금 하에서 백로그를 드롭 - 패치된 커널: 동일한 설정으로 dequeue 호출당 최대 256회 드롭, 소프트 락업 없음
테스트: 재현기(reproducer) 및 interval 2us/3us 변형 버전은 정상 실행됨; tdc qdisc category 테스트 통과 (selftests 패치 참조).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.