CVE-2026-97611 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: openvswitch: flow table mask 배열의 use-after-free 수정
tbl_mask_array_realloc() 함수는 old가 더 이상 접근 가능하지 않게 되기 전에 기존 mask_array를 폐기합니다.
old = ovsl_dereference(tbl->mask_array); if (old) {
... call_rcu(&old->rcu, mask_array_rcu_cb); }
rcu_assign_pointer(tbl->mask_array, new);
call_rcu()는 이미 실행 중인 읽기 측 임계 섹션(read-side critical sections)에만 대기합니다. tbl->mask_array은 call_rcu() 호출과 rcu_assign_pointer() 사이에 old를 가리키고 있으므로, 이 시간 창(window) 동안 ovs_flow_tbl_lookup_stats()에 진입하는 독자는 pending grace period가 커버하지 않는 새로운 임계 섹션에서 old를 가져오게 됩니다.
tbl_mask_array_realloc()은 ovs_mutex 하의 프로세스 컨텍스트에서 실행되므로 해당 시간 창은 선점 가능(preemptible)하며, 그race 기간보다 길어질 수 있습니다. 그러면 mask_array_rcu_cb()는 스왑이 수행되기 전에 old를 해제합니다:
BUG: KASAN: slab-use-after-free in flow_lookup.constprop.0+0x2bf/0x2f0 Read of size 8 at addr ffff888020b3e018 by task poc/741 flow_lookup.constprop.0+0x2bf/0x2f0 ovs_flow_tbl_lookup_stats+0x4a3/0x5c0 ovs_dp_process_packet+0x19c/0x710 ovs_vport_receive+0x243/0x390 internal_dev_xmit+0x81/0x170 Freed by task 728: kfree+0x16a/0x4e0 rcu_core+0x853/0x1030
기존 배열을 폐기하기 전에 새 배열을 게시하십시오. call_rcu()가 대체한 kfree_rcu()는 스왑 이후에 실행되었습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.