🇰🇷 한글 설명
Linux 커널의 bna 드라이버에서 장치 제거(teardown) 과정 중 IOC 타이머가 재설정되는 취약점이 발견되었습니다. 이로 인해 이미 해제된 메모리 구조체에 접근하여 시스템 충돌이나 보안 문제를 일으킬 수 있습니다. 이를 해결하기 위해 모든 IOC 타이머를 안전하게 종료하는 로직이 추가되었습니다.
💡 쉬운 설명
컴퓨터 부품을 제거하는 과정에서 특정 타이머가 꺼지지 않고 계속 작동하여, 이미 사라진 메모리 영역을 건드리는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bna: prevent IOC timer rearm during teardown
bna: prevent IOC timer rearm during teardown
bnad_pci_remove() and the probe disable_ioceth path call
timer_delete_sync() for ioc_timer, sem_timer and hb_timer, but not for
iocpf_timer. bnad_iocpf_timeout() then takes bnad->bna_lock after
free_netdev() has freed the struct bnad.
Deleting iocpf_timer last does not fix this. sem_timer and
iocpf_timer rearm each other: bnad_iocpf_sem_timeout() can arm
iocpf_timer, and bnad_iocpf_timeout() arms sem_timer from
bfa_ioc_hw_sem_get() when the semaphore is busy.
timer_delete_sync() only waits out its own callback.
bnad_ioceth_disable() can time out and leave that callback live.
Shut all four IOC timers down with timer_shutdown_sync() on both
paths, so a later mod_timer() is ignored.
This issue was identified during our ongoing static-analysis research
while reviewing kernel code.
📍 영향받는 시스템
Linux kernel (bna driver 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 장치 드라이버의 제거 또는 재설정 과정을 유도하여 Use-After-Free 취약점 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 timer_shutdown_sync() 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인