🇰🇷 한글 설명
Linux 커널의 mptlan 드라이버에서 mptlan_remove() 함수 실행 중 레이스 컨디션으로 인해 발생하는 Use-After-Free 취약점입니다. 드라이버가 언로드되는 과정에서 작업 큐가 완료되기 전에 메모리가 해제되어 잘못된 메모리 참조가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 제거하는 과정에서 프로그램이 아직 사용 중인 메모리를 먼저 지워버려 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition
mptlan_probe() calls mpt_register_lan_device() which initializes the
&priv->post_buckets_task workqueue. A call to
mpt_lan_wake_post_buckets_task() will subsequently start the work.
During driver unload in mptlan_remove() the following race may occur:
CPU0 CPU1
|mpt_lan_post_receive_buckets_work()
mptlan_remove() |
free_netdev() |
kfree(dev); |
|
| dev->mtu
| //use
Fix this by finishing the work prior to cleaning up in mptlan_remove().
[mkp: we really should remove mptlan instead of attempting to fix it]
📍 영향받는 시스템
mptlan 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
로컬 권한을 가진 공격자가 드라이버 언로드 시 레이스 컨디션을 유도하여 메모리 오염 유발
🛡️ 대응 방법
커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 mptlan_remove() 내 작업 완료 로직 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인