CVE-2025-38248
bridge: mcast: 라우터 포트 구성 중 use-after-free 수정
- 게시됨
- 2025. 7. 9.
- 업데이트됨
- 2026. 8. 5.
- CNA 할당 중
- Linux
- 증거 관찰됨
- 2026. 8. 8.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H낮음 · 다음 30일
- 백분위수
- 18.5%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
리눅스 커널에서 다음 취약점이 해결되었습니다: bridge: mcast: 라우터 포트 구성 중 use-after-free 수정 브리지는 멀티캐스트 라우터가 존재하는 포트의 전역 목록을 유지합니다. 이 목록은 포워딩 중에 참조되어 멀티캐스트 패킷이 일치하는 MDB 엔트리의 멤버가 아닌 포트에도 전달되도록 보장합니다. VLAN별 멀티캐스트 스누핑이 활성화되면 각 포트의 포트별 멀티캐스트 컨텍스트가 비활성화되고 포트는 전역 라우터 포트 목록에서 제거됩니다: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 # ip link add name dummy1 up master br1 type dummy # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 1 $ bridge -d mdb show | grep router 그러나 VLAN별 멀티캐스트 스누핑이 활성화된 경우에도 포트가 전역 목록에 다시 추가될 수 있습니다: # ip link set dev dummy1 type bridge_slave mcast_router 0 # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 커밋 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions") 이후, VLAN별 멀티캐스트 스누핑이 활성화되면 포트에서 멀티캐스트 비활성화는 포트별 멀티캐스트 컨텍스트가 아닌 {포트, VLAN}별 멀티캐스트 컨텍스트를 비활성화합니다. 결과적으로 포트는 삭제된 후에도 전역 라우터 포트 목록에 남아 있게 됩니다. 이로 인해 목록을 순회할 때(예: 새 포트를 목록에 추가할 때) use-after-free [1]가 발생합니다: # ip link del dev dummy1 # ip link add name dummy2 up master br1 type dummy # ip link set dev dummy2 type bridge_slave mcast_router 2 마찬가지로, 오래된 엔트리는 VLAN별 라우터 포트 목록에서도 발견될 수 있습니다. VLAN별 멀티캐스트 스누핑이 비활성화되면 각 포트의 {포트, VLAN}별 컨텍스트가 비활성화되고 포트는 VLAN별 라우터 포트 목록에서 제거됩니다: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 # ip link add name dummy1 up master br1 type dummy # bridge vlan add vid 2 dev dummy1 # bridge vlan global set vid 2 dev br1 mcast_snooping 1 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 0 $ bridge vlan global show dev br1 vid 2 | grep router 그러나 VLAN별 멀티캐스트 스누핑이 비활성화된 경우에도 포트가 VLAN별 목록에 다시 추가될 수 있습니다: # bridge vlan set vid 2 dev dummy1 mcast_router 0 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 VLAN이 포트에서 삭제되면 VLAN에서 멀티캐스트 스누핑이 활성화되어 있지 않으므로 {포트, VLAN}별 멀티캐스트 컨텍스트가 비활성화되지 않습니다. 결과적으로 포트는 더 이상 VLAN의 멤버가 아닌데도 VLAN별 라우터 포트 목록에 남아 있게 됩니다. 이로 인해 목록을 순회할 때(예: 새 포트를 목록에 추가할 때) use-after-free [2]가 발생합니다: # ip link add name dummy2 up master br1 type dummy # bridge vlan add vid 2 dev dummy2 # bridge vlan del vid 2 dev dummy1 # bridge vlan set vid 2 dev dummy2 mcast_router 2 br_multicast_port_ctx_deinit()에서 관련(전역 또는 VLAN별) 라우터 포트 목록에서 포트를 제거하여 이러한 문제를 해결합니다. 이 함수는 포트 삭제 시 포트별 멀티캐스트 컨텍스트로 호출되고, VLAN 삭제 시 {포트, VLAN}별 멀티캐스트 컨텍스트로 호출됩니다. 멀티캐스트 라우터 타이머를 삭제하는 것만으로는 충분하지 않다는 점에 유의하세요. 타이머는 임시 멀티캐스트 라우터 상태(1 또는 3)만 처리하며 영구 상태(2)는 처리하지 않기 때문입니다. [1] BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560 Write of size 8 at addr ffff888004a67328 by task ip/384 [...] Call Trace: <TASK> dump_stack ---truncated---
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.