Linux 커널에서는 다음 취약점이 해결되었습니다. virtio_net: IFF_XMIT_DST_RELEASE가 지워지고 napi_tx가 false인 경우 dst_ops에서 UAF를 수정합니다. virtio_net 드라이버가 napi_tx=N으로 구성된 경우 UAF 문제가 발생합니다. 장치의 IFF_XMIT_DST_RELEASE 플래그가 지워집니다. (예: tc 경로 필터 규칙 구성 중) IFF_XMIT_DST_RELEASE가 net_device에서 제거되면 네트워크 스택 드라이버는 패킷이 도착할 때까지 skb->dst에 대한 참조를 보유할 것으로 예상합니다. 가득 차있다
Linux 커널에서는 다음 취약점이 해결되었습니다.
virtio_net: IFF_XMIT_DST_RELEASE가 지워지고 napi_tx가 false인 경우 dst_ops에서 UAF를 수정합니다.
virtio_net 드라이버가 napi_tx=N으로 구성된 경우 UAF 문제가 발생합니다. 장치의 IFF_XMIT_DST_RELEASE 플래그가 지워집니다. (예: tc 경로 필터 규칙 구성 중)
IFF_XMIT_DST_RELEASE가 net_device에서 제거되면 네트워크 스택 드라이버는 패킷이 도착할 때까지 skb->dst에 대한 참조를 보유할 것으로 예상합니다. 완전히 전송되고 해제됩니다. napi_tx=N인 virtio_net에서, skb는 장기간 동안 virtio 전송 링에 남아 있을 수 있습니다.
이러한 skbs가 아직 보류 중인 동안 네트워크 네임스페이스가 파괴되면, 해당 dst_ops 구조가 해제되었습니다. 후속 패킷이 나올 때 전송되면 free_old_xmit()가 트리거되어 오래된 skbs를 정리합니다. 그런 다음 오래된 dst_entry와 연관된 skb에서 dst_release()를 호출합니다. dst_ops(dst_entry에서 참조)가 이미 해제되었으므로 UAF 커널 페이징 요청이 발생합니다.
명시적으로 릴리스하려면 start_xmit에 skb_dst_drop(skb)을 추가하여 문제를 해결하세요. skb가 virtio_net에 대기하기 전의 dst 참조입니다.
통화 추적: 가상 주소 ffff80007e150000에서 커널 페이징 요청을 처리할 수 없습니다. CPU: 2 UID: 0 PID: 6236 통신: ping Kdump: 로드됨 오염되지 않음 7.0.0-rc1+ #6 PREEMPT ... percpu_counter_add_batch+0x3c/0x158 lib/percpu_counter.c:98 (P) dst_release+0xe0/0x110 net/core/dst.c:177 skb_release_head_state+0xe8/0x108 net/core/skbuff.c:1177 sk_skb_reason_drop+0x54/0x2d8 net/core/skbuff.c:1255 dev_kfree_skb_any_reason+0x64/0x78 net/core/dev.c:3469 napi_consume_skb+0x1c4/0x3a0 net/core/skbuff.c:1527 __free_old_xmit+0x164/0x230 drivers/net/virtio_net.c:611 [virtio_net] free_old_xmit drivers/net/virtio_net.c:1081 [virtio_net] start_xmit+0x7c/0x530 drivers/net/virtio_net.c:3329 [virtio_net] ...
재생산 단계: NETDEV="enp3s0"
config_qdisc_route_filter() {
tc qdisc del dev $NETDEV 루트
tc qdisc add dev $NETDEV 루트 핸들 1: prio
TC 필터 추가 dev $NETDEV 상위 1:0
프로토콜 ip prio 100 100 flowid로의 경로 1:1
IP 경로 추가 192.168.1.100/32 dev $NETDEV 영역 100
}
test_ns() { ip netns 테스트 추가 IP 링크 설정 $NETDEV netns testns ip netns exec testns ifconfig $NETDEV 10.0.32.46/24 ip netns exec testns ping -c 1 10.0.32.1 IP 네트워크 델 테스트 }
config_qdisc_route_filter
test_ns 수면 2 test_ns
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 78.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 78.00 |
VPI 공식 vpi-v1 기준