🇰🇷 한글 설명
Linux 커널의 CAN(Controller Area Network) J1939 프로토콜 구현에서 네트워크 장치가 등록 해제된 후에도 세션 활성화가 성공할 수 있는 레이스 컨디션 취약점이 발견되었습니다. 이로 인해 장치 사용 카운트가 제대로 감소하지 않아 장치 해제가 완료되지 않는 문제가 발생할 수 있습니다.
💡 쉬운 설명
자동차 통신 등에 쓰이는 장치가 꺼지는 과정에서 시스템이 장치가 완전히 꺼졌다고 착각하여 발생하는 오류입니다. 이로 인해 시스템이 장치를 정리하지 못하고 멈추거나 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: j1939: make j1939_session_activate() fail if device is no longer registered
syzbot is still reporting
unregister_netdevice: waiting for vcan0 to become free. Usage count = 2
even after commit 93a27b5891b8 ("can: j1939: add missing calls in
NETDEV_UNREGISTER notification handler") was added. A debug printk() patch
found that j1939_session_activate() can succeed even after
j1939_cancel_active_session() from j1939_netdev_notify(NETDEV_UNREGISTER)
has completed.
Since j1939_cancel_active_session() is processed with the session list lock
held, checking ndev->reg_state in j1939_session_activate() with the session
list lock held can reliably close the race window.
📍 영향받는 시스템
Linux kernel (J1939 프로토콜을 사용하는 시스템)
⚔️ 공격 벡터
로컬 시스템에서 네트워크 장치의 등록 및 해제 과정을 정밀하게 조작하여 레이스 컨디션을 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인