🇰🇷 한글 설명
Linux 커널의 media: cec 구성 요소에서 전송 중단 시 지연된 작업(delayed work)을 적절히 비활성화하지 않아 발생하는 취약점입니다. 신호에 의해 대기 상태가 중단될 경우, 작업이 취소된 후 다시 예약되어 이미 해제된 메모리 영역에 접근하려는 Use-After-Free 오류가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 특정 작업을 처리하다가 갑자기 방해를 받았을 때, 이미 끝난 줄 알고 지운 데이터를 다시 사용하려고 시도하면서 시스템 오류가 발생하는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: cec: disable delayed work before freeing an interrupted transmit
cec_transmit_msg_fh() drops adap->lock to wait for a blocking transmit in
wait_for_completion_killable(). If that wait is interrupted by a signal,
cancel_delayed_work_sync() can run before the CEC kthread arms the reply
timeout via schedule_delayed_work(&data->work) in cec_transmit_done_ts().
The work is then armed after the cancel, and the data is freed with its
delayed_work still pending:
ODEBUG: free active (active state 0) object: ... hint: cec_wait_timeout
Use disable_delayed_work_sync(): it cancels the work and disables it, so
the later schedule_delayed_work() becomes a no-op and the work cannot be
re-armed. The data is freed right after, so it need not be re-enabled.
📍 영향받는 시스템
Linux kernel (media: cec 관련 모듈을 사용하는 시스템)
⚔️ 공격 벡터
CEC(Consumer Electronics Control) 통신 과정에서 신호를 이용해 전송 프로세스를 의도적으로 중단시켜 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 disable_delayed_work_sync() 함수가 적용되도록 조치
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인