🇰🇷 한글 설명
Linux 커널의 rxrpc 모듈에서 소켓 설정과 I/O 스레드 생성 사이에 레이스 컨디션(경쟁 상태)이 발생합니다. 소켓은 생성되었으나 I/O 스레드가 아직 준비되지 않은 시점에 UDP 패킷이 수신될 경우, 존재하지 않는 스레드를 깨우려 시도하면서 커널 오류(Oops)가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 통신을 준비하는 과정에서 순서가 어긋나 시스템이 혼란을 겪는 문제입니다. 데이터가 들어왔을 때 이를 처리할 일꾼(스레드)이 아직 만들어지지 않아 시스템이 갑자기 멈추거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rxrpc: Fix a race between socket set up and I/O thread creation
In rxrpc_open_socket(), it sets up the socket and then sets up the I/O
thread that will handle it. This is a problem, however, as there's a gap
between the two phases in which a packet may come into rxrpc_encap_rcv()
from the UDP packet but we oops when trying to wake the not-yet created I/O
thread.
As a quick fix, just make rxrpc_encap_rcv() discard the packet if there's
no I/O thread yet.
A better, but more intrusive fix would perhaps be to rearrange things such
that the socket creation is done by the I/O thread.
📍 영향받는 시스템
rxrpc 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특정 타이밍에 UDP 패킷을 전송하여 커널의 레이스 컨디션을 유발하고 시스템 오류를 일으킴
🛡️ 대응 방법
rxrpc 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인