Linux 커널에서는 다음 취약점이 해결되었습니다. ixgbevf: VEPA 멀티캐스트 소스 정리에서 use-after-free 수정 ixgbevf_clean_rx_irq()는 소스 MAC이 VF와 일치하는 프레임을 정리합니다. skb를 해제하여 자신의 주소(VEPA 멀티캐스트 해결 방법)를 확보하고 다음 설명으로 계속됩니다. dev_kfree_skb_irq(skb); 계속하다; skb 포인터는 while 루프 외부에서 선언되고 지속됩니다. 반복. 계속하면 "skb = NULL" 재설정을 건너뛰기 때문입니다. l의 바닥
Linux 커널에서는 다음 취약점이 해결되었습니다.
ixgbevf: VEPA 멀티캐스트 소스 정리에서 use-after-free 수정
ixgbevf_clean_rx_irq()는 소스 MAC이 VF와 일치하는 프레임을 정리합니다. skb를 해제하여 자신의 주소(VEPA 멀티캐스트 해결 방법)를 확보하고 다음 설명으로 계속됩니다.
dev_kfree_skb_irq(skb);
계속하다;
skb 포인터는 while 루프 외부에서 선언되고 지속됩니다. 반복. 계속하면 "skb = NULL" 재설정을 건너뛰기 때문입니다. 루프의 맨 아래에서 다음 반복은 "else if (skb)" 경로로 들어갑니다. 해제된 skb에서 ixgbevf_add_rx_frag()를 호출하여 역참조합니다. skb_shinfo(skb)->nr_frags - NAPI Softirq 컨텍스트에서 use-after-free입니다.
형제 드라이버 iavf는 이미 계속하기 전에 포인터를 사용하세요. 여기에도 동일한 패턴을 적용합니다.
ixgbevf 하드웨어가 없습니다. 버그는 정적 분석으로 발견되었습니다 (scan_drop_continue_loops.py + semgrep drop_continue_in_loop, 멀티툴 스캔에서 가장 높은 점수로 확증). UAF가 확인되었습니다 KASAN에서 정확한 코드를 재현하는 테스트 모듈을 탑재하여 패턴(skb, kfree_skb 할당 후 skb_shinfo(skb)->nr_frags 읽기):
버그: KASAN: ixgbevf_uaf_test_init+0x100/0x1000에서 slab-use-after-free insmod/30 작업으로 addr 000000006163ae78에서 크기 8을 읽습니다. 해제된 208바이트 영역 [000000006163adc0, 000000006163ae90)
QEMU는 igb(82576)를 에뮬레이트하지만 ixgbe(82599)는 에뮬레이트하지 않으며 igbvf VF 드라이버에는 VEPA 소스 정리 경로가 포함되어 있지 않으므로 전체 에뮬레이트된 하드웨어로는 엔드투엔드 재생이 불가능했습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준