🇰🇷 한글 설명
Linux 커널의 ptp: ocp 구성 요소에서 ptp_ocp_watchdog로 인해 발생하는 Use-After-Free 취약점이 해결되었습니다. 타이머 핸들러가 실행 중일 때 watchdog 타이머를 적절히 중단하지 않아, devlink가 해제된 후에도 핸들러가 해당 메모리에 접근하여 발생하는 레이스 컨디션 문제입니다.
💡 쉬운 설명
컴퓨터가 특정 작업을 처리하는 도중에 해당 작업에 필요한 메모리를 먼저 지워버려서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ptp: ocp: fix use-after-free bugs causing by ptp_ocp_watchdog
The ptp_ocp_detach() only shuts down the watchdog timer if it is
pending. However, if the timer handler is already running, the
timer_delete_sync() is not called. This leads to race conditions
where the devlink that contains the ptp_ocp is deallocated while
the timer handler is still accessing it, resulting in use-after-free
bugs. The following details one of the race scenarios.
(thread 1) | (thread 2)
ptp_ocp_remove() |
ptp_ocp_detach() | ptp_ocp_watchdog()
if (timer_pending(&bp->watchdog))| bp = timer_container_of()
timer_delete_sync() |
|
devlink_free(devlink) //free |
| bp-> //use
Resolve this by unconditionally calling timer_delete_sync() to ensure
the timer is reliably deactivated, preventing any access after free.
📍 영향받는 시스템
Linux Kernel (ptp: ocp 관련 모듈 사용 시스템)
⚔️ 공격 벡터
특정 타이밍에 타이머 핸들러와 장치 제거 프로세스를 동시에 유도하는 레이스 컨디션 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 timer_delete_sync()가 항상 호출되도록 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.