🇰🇷 한글 설명
Linux 커널의 ixgbevf 네트워크 드라이버가 Hyper-V VM에서 negotiate_features 함수 포인터를 초기화하지 않아 NULL 포인터 역참조가 발생합니다. 드라이버 로드 시 커널 패닉이 야기됩니다.
💡 쉬운 설명
Microsoft Hyper-V 가상머신에서 네트워크 드라이버 초기화 시 필수 함수가 빠져있어 시스템이 충돌합니다. 커널 업데이트로 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ixgbevf: add missing negotiate_features op to Hyper-V ops table
Commit a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by
negotiating supported features") added the .negotiate_features callback
to ixgbe_mac_operations and populated it in ixgbevf_mac_ops, but forgot
to add it to ixgbevf_hv_mac_ops. This leaves the function pointer NULL
on Hyper-V VMs.
During probe, ixgbevf_negotiate_api() calls ixgbevf_set_features(),
which unconditionally dereferences hw->mac.ops.negotiate_features().
On Hyper-V this results in a NULL pointer dereference:
BUG: kernel NULL pointer dereference, address: 0000000000000000
[...]
Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine [...]
Workqueue: events work_for_cpu_fn
RIP: 0010:0x0
[...]
Call Trace:
ixgbevf_negotiate_api+0x66/0x160 [ixgbevf]
ixgbevf_sw_init+0xe4/0x1f0 [ixgbevf]
ixgbevf_probe+0x20f/0x4a0 [ixgbevf]
local_pci_probe+0x50/0xa0
work_for_cpu_fn+0x1a/0x30
[...]
Add ixgbevf_hv_negotiate_features_vf() that returns -EOPNOTSUPP and
wire it into ixgbevf_hv_mac_ops. The caller already handles -EOPNOTSUPP
gracefully.
📍 영향받는 시스템
Linux 커널의 ixgbevf 드라이버를 사용하는 Microsoft Hyper-V VM (a7075f501bd3 커밋 이후 버전)
⚔️ 공격 벡터
로컬에서 드라이버 재로드 또는 시스템 재부팅 트리거 시 서비스 거부(DoS) 유발
🛡️ 대응 방법
Linux 커널을 ixgbevf_hv_negotiate_features_vf() 함수가 포함된 패치된 버전으로 업데이트
🔧 검증 코드
드라이버 버전과 로드 상태 확인, NULL pointer 에러 미발생 시 안전 상태
modinfo ixgbevf 2>/dev/null | grep -E 'version|filename' || dmesg | grep -i 'ixgbevf\|null pointer'