CVE-2026-74620 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 22.

리눅스 커널에서 다음 취약점이 해결되었습니다:

net/sched: act_gact, act_police: 폴백 제어 작업에 대한 범위 검사 적용

tcf_action_check_ctrlact()는 기본 제어 작업의 범위를 검사합니다:

if (!opcode) ret = action > TC_ACT_VALUE_MAX ? -EINVAL : 0;

TC_ACT_VALUE_MAX은 TC_ACT_TRAP이므로, 커널 내부 심판값(verdicts) 중 그보다 큰 값들은 해당 방식으로 설정될 수 없습니다. 그러나 act_gact와 act_police는 각각 사용자 공간에서 제공하는 두 번째 독립적인 제어 작업을 포함하며, 이 작업들은 위의 헬퍼 함수에 도달하지 않습니다(각각 TCA_GACT_PROB.paction 및 TCA_POLICE_RESULT). 둘 다 TC_ACT_GOTO_CHAIN만 거부하므로, 그 외의 모든 값은 그대로 저장되고 작업으로부터 그대로 반환됩니다.

특히 사용자 공간에서는 UAPI 값 범위에 의도적으로 포함되지 않은 TC_ACT_VALUE_MAX + 1인 TC_ACT_CONSUMED를 저장할 수 있습니다. 이 심판값은 각 호출자에게 해당 작업이 skb(스케줄러 버퍼)의 소유권을 가졌음을 알리므로, 아무도 이를 해제하지 않습니다: sch_handle_ingress(), sch_handle_egress() 및 tcf_qevent_handle()는 모두 이에 대해 의도적으로 해제를 건너뜁니다. 그 결과 필터를 통과하는 모든 패킷당 하나씩 sk_buff와 해당 데이터 버퍼가 누설되며, 이는 커널에서 생성된 패킷을 포함한 체인상의 모든 트래픽에 대해 무제한으로 발생합니다.

두 경우 모두 결정론적이며 쉽게 재현 가능합니다. act_gact는 tcfg_pval를 >= 1로 클램핑하므로, pval = 1일 때 gact_determ()은 모든 패킷에 대해 폴백을 반환합니다. act_police에는 필수적인レート(rate)가 없으므로, rate = 0이면 tcfp_mtu = ~0이 되어 tcf_police_mtu_check()는 항상 통과합니다.

TC_ACT_CONSUMED는 commit 720f22fed81b("net: sched: refactor reinsert action")에서 추가되었으며, 이는 두 가지 goto-chain 가드가 작성된 이후의 작업입니다: commit 9469f375ab09 ("net/sched: act_gact: disallow 'goto chain' on fallback control action") 및 commit c08f5ed5d625 ("net/sched: act_police: disallow 'goto chain' on fallback control action"). 새로운 심판값이 등장했을 때 어느 가드도 확장되지 않았습니다.

기존의 범위 테스트를 tcf_action_check_ctrlact()에서 분리하여 tcf_action_valid()로 만들고, 두 폴백 모두에 적용합니다. 이 헬퍼는 goto_chain를 할당하기도 하는 tcf_action_check_ctrlact()를 직접 호출할 수 없는데, 이는 정확히 이러한 두 위치가 수행해서는 안 되는 작업이기 때문입니다.

v7.2-rc6에서 재현됨: kmemleak은 패킷당 1개의 누설된 232바이트 skbuff_head_cache 객체와 그 704바이트 데이터 버퍼를 보고합니다. 이 패치를 적용하면 두 구성 모두 -EINVAL로 거부되며, kmemleak은 아무것도 보고하지 않습니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 15.

모더레이션

수락

항목

VDB-394385

EPSS

0.00000

출처

Want to know what is going to be exploited?

We predict KEV entries!