🇰🇷 한글 설명
Linux 커널의 idpf 드라이버 로드 중 init_task에서 오류가 발생할 경우, vports 및 netdevs가 생성되지 않은 상태로 남게 됩니다. 이 상태에서 이후 리셋이 시도되면 서비스 태스크가 초기화되지 않은 리소스에 접근하여 커널 NULL 포인터 역참조로 인한 시스템 충돌(Crash)이 발생합니다.
💡 쉬운 설명
네트워크 드라이버가 작동을 시작하다가 중간에 오류가 나면, 시스템이 제대로 정리되지 않은 채 멈춰버릴 수 있습니다. 이 상태에서 다시 시작하려고 하면 컴퓨터의 핵심 기능이 망가져 시스템이 꺼질 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
idpf: fix error handling in the init_task on load
If the init_task fails during a driver load, we end up without vports and
netdevs, effectively failing the entire process. In that state a
subsequent reset will result in a crash as the service task attempts to
access uninitialized resources. Following trace is from an error in the
init_task where the CREATE_VPORT (op 501) is rejected by the FW:
[40922.763136] idpf 0000:83:00.0: Device HW Reset initiated
[40924.449797] idpf 0000:83:00.0: Transaction failed (op 501)
[40958.148190] idpf 0000:83:00.0: HW reset detected
[40958.161202] BUG: kernel NULL pointer dereference, address: 00000000000000a8
...
[40958.168094] Workqueue: idpf-0000:83:00.0-vc_event idpf_vc_event_task [idpf]
[40958.168865] RIP: 0010:idpf_vc_event_task+0x9b/0x350 [idpf]
...
[40958.177932] Call Trace:
[40958.178491] <TASK>
[40958.179040] process_one_work+0x226/0x6d0
[40958.179609] worker_thread+0x19e/0x340
[40958.180158] ? __pfx_worker_thread+0x10/0x10
[40958.180702] kthread+0x10f/0x250
[40958.181238] ? __pfx_kthread+0x10/0x10
[40958.181774] ret_from_fork+0x251/0x2b0
[40958.182307] ? __pfx_kthread+0x10/0x10
[40958.182834] ret_from_fork_asm+0x1a/0x30
[40958.183370] </TASK>
Fix the error handling in the init_task to make sure the service and
mailbox tasks are disabled if the error happens during load. These are
started in idpf_vc_core_init(), which spawns the init_task and has no way
of knowing if it failed. If the error happens on reset, following
successful driver load, the tasks can still run, as that will allow the
netdevs to attempt recovery through another reset. Stop the PTP callbacks
either way as those will be restarted by the call to idpf_vc_core_init()
during a successful reset.
📍 영향받는 시스템
Linux Kernel (idpf driver component)
⚔️ 공격 벡터
드라이버 로드 과정 중 하드웨어 응답 거부(예: FW의 CREATE_VPORT 거부)를 유도하여 시스템 충돌 유발
🛡️ 대응 방법
idpf 드라이버의 오류 처리 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인