🇰🇷 한글 설명
Linux 커널의 enic 드라이버에서 장치 제거 시 tx_hang_reset 작업이 적절히 취소되지 않아 발생하는 Use-After-Free 취약점입니다. 장치 제거 과정에서 watchdog이나 notify 경로가 작업을 재스케줄링할 수 있어, 메모리가 해제된 후에도 해당 작업이 실행될 위험이 있습니다.
💡 쉬운 설명
컴퓨터 부품(네트워크 카드)을 제거하는 과정에서 시스템이 이미 삭제된 메모리 영역에 접근하려고 시도하는 오류입니다. 이로 인해 시스템이 멈추거나 보안상 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
enic: fix tx_hang_reset use-after-free on device removal
enic_remove() cancels the reset and change_mtu_work items but does not
cancel tx_hang_reset. A TX timeout that fires while the device is being
removed can schedule enic_tx_hang_reset() so that it runs after
free_netdev(), resulting in a use-after-free.
cancel_work_sync() alone is not sufficient here: the still-live watchdog
and notify paths can re-schedule these work items in the window between
the cancel and unregister_netdev(). Use disable_work_sync(), which
cancels the work and blocks any subsequent schedule_work() from
requeuing it, and apply it to the reset and change_mtu_work items as
well so the same requeue race is closed for all teardown work.
📍 영향받는 시스템
Linux kernel (enic driver 사용 시스템)
⚔️ 공격 벡터
장치 제거 시 발생하는 타이밍 이슈(Race Condition)를 이용한 로컬 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 disable_work_sync()가 적용된 드라이버를 사용하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.