🇰🇷 한글 설명
Linux 커널의 CAN(Controller Area Network) raw 소켓 구현에서 raw_rcv() 함수 실행 중 Use-After-Free 취약점이 발견되었습니다. raw_release()가 RCU 콜백이 완료되기 전에 percpu uniq 저장소를 해제하여 메모리 오류를 유발할 수 있는 문제입니다.
💡 쉬운 설명
컴퓨터가 데이터를 처리하는 도중에 사용 중인 메모리 공간을 미리 지워버려서 발생하는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: raw: fix ro->uniq use-after-free in raw_rcv()
raw_release() unregisters raw CAN receive filters via can_rx_unregister(),
but receiver deletion is deferred with call_rcu(). This leaves a window
where raw_rcv() may still be running in an RCU read-side critical section
after raw_release() frees ro->uniq, leading to a use-after-free of the
percpu uniq storage.
Move free_percpu(ro->uniq) out of raw_release() and into a raw-specific
socket destructor. can_rx_unregister() takes an extra reference to the
socket and only drops it from the RCU callback, so freeing uniq from
sk_destruct ensures the percpu area is not released until the relevant
callbacks have drained.
[mkl: applied manually]
📍 영향받는 시스템
Linux kernel (CAN raw socket 관련 모듈 사용 시스템)
⚔️ 공격 벡터
특정 조건에서 CAN raw 소켓을 해제하는 과정에서 메모리 관리 타이밍을 이용한 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.