🇰🇷 한글 설명
Linux 커널의 ice 드라이버에서 PTP 상태가 ICE_PTP_UNINIT인 상태로 PF 리셋이 발생할 경우, 잘못된 상태 전이로 인해 드라이버 언로드 시 커널 버그(Call Trace)가 발생합니다. 이는 주로 가상 머신(VM)에 PF1을 전달하는 과정에서 발생하며, ice_ptp_rebuild() 함수가 잘못된 상태를 ICE_PTP_ERROR로 업데이트하여 시스템 불안정을 초래합니다.
💡 쉬운 설명
네트워크 카드를 사용하는 과정에서 특정 설정이 꼬이면 컴퓨터의 핵심 시스템(커널)이 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다. 특히 가상 머신을 사용할 때 네트워크 장치를 연결하거나 해제하는 과정에서 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ice: fix PTP Call Trace during PTP release
If a PF reset occurs when the PTP state is ICE_PTP_UNINIT, then
ice_ptp_rebuild() will update the state to ICE_PTP_ERROR. This will
result in the following PTP release call trace during driver unload:
kernel BUG at lib/list_debug.c:52!
ice_ptp_release+0x332/0x3c0 [ice]
ice_deinit_features.part.0+0x10e/0x120 [ice]
ice_remove+0x100/0x220 [ice]
This was observed when passing PF1 through to a VM. ice_ptp_init()
fails because ctrl_pf is NULL and sets the state to ICE_PTP_UNINIT.
Fix by detecting the ICE_PTP_UNINIT state in ice_ptp_rebuild() and
returning without error, preventing the invalid state transition to
ICE_PTP_ERROR. The only valid path to ICE_PTP_ERROR is from
ICE_PTP_RESETTING after a failed rebuild.
📍 영향받는 시스템
Linux kernel (ice driver 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 가상 머신에 PF(Physical Function)를 할당하거나 해제하는 과정에서 트리거 가능
🛡️ 대응 방법
Linux 커널을 최신 패치가 적용된 버전으로 업데이트하여 ice_ptp_rebuild()의 상태 전이 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.