🇰🇷 한글 설명
Linux 커널의 AMT 장치 제거 시, 취소된 지연된 작업(delayed works)이 이미 해제된 amt_dev 구조체에 접근하여 발생하는 Use-After-Free 취약점입니다. 이로 인해 커널 충돌이나 메모리 오염이 발생할 수 있습니다.
💡 쉬운 설명
장치를 제거할 때 컴퓨터가 아직 사용 중인 메모리를 미리 지워버려서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
amt: fix use-after-free in AMT delayed works
When an AMT device is removed, pending delayed works can still access
the freed amt_dev structure, which may result in kernel crashes or
memory corruption.
amt_dev_stop() cancels req_wq and discovery_wq with
cancel_delayed_work_sync(), but these works can be scheduled again
from event_wq after the cancellation. This allows delayed works to
access the freed amt_dev structure after the netdev has been released.
The following is a simple race scenario:
CPU0 CPU1
amt_dev_stop()
cancel_delayed_work_sync()
amt_event_work()
mod_delayed_work(req_wq)
free netdev
req_wq accesses freed amt_dev
Use disable_delayed_work_sync() in amt_dev_stop() to prevent req_wq and
discovery_wq from being queued again and wait for running work items
to complete.
The delayed works are disabled after initialization in
amt_newlink() and enabled only when the device is successfully opened.
This keeps the delayed work lifecycle synchronized with the lifetime
of the AMT device.
📍 영향받는 시스템
Linux kernel (AMT 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
장치 제거 시 발생하는 레이스 컨디션(Race Condition)을 이용한 메모리 접근
🛡️ 대응 방법
amt_dev_stop() 함수에서 disable_delayed_work_sync()를 사용하여 지연된 작업의 재스케줄링을 방지하고 작업 완료를 대기하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux