🇰🇷 한글 설명
Linux 커널의 MPTCP 구현 중 SYN 쿠키를 사용하는 MP_JOIN 재구성 과정에서 local_id가 초기화되지 않는 취약점이 발견되었습니다. 이로 인해 이전에 해제된 소켓의 잔류 데이터가 잘못된 ID로 사용될 수 있으며, 공격자가 이를 악용하여 경로 관리자의 서브플로우 장부 기록을 오염시킬 수 있습니다.
💡 쉬운 설명
컴퓨터가 네트워크 연결을 다시 만들 때, 이전에 사용하던 찌꺼기 데이터를 잘못 읽어 들여 연결 정보가 꼬이는 문제입니다. 공격자가 이 찌꺼기 데이터를 조작하여 네트워크 연결 흐름을 방해하거나 혼란을 줄 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mptcp: fix uninitialized local_id in syncookie MP_JOIN reconstruction
mptcp_token_join_cookie_init_state() restores remote_nonce, local_nonce,
backup, join_id, token and msk from the saved cookie entry when rebuilding
the request socket for a MP_JOIN 4th-ACK handled under SYN cookies, but it
does not restore local_id, even though the SYN path saved it.
subflow_ulp_clone() then reads that uninitialized field and stores it as
the joined subflow's address-ID. Because the request-sock slab is
SLAB_TYPESAFE_BY_RCU and not zeroed on allocation, the value is the stale
byte of a previously freed request socket, which an off-path peer can
influence by sending concurrent MP_JOIN SYNs. This corrupts the path
manager's id-based subflow bookkeeping for the connection.
Restore subflow_req->local_id from the cookie entry, as done for the other
fields.
📍 영향받는 시스템
Linux kernel (MPTCP 기능이 활성화된 버전)
⚔️ 공격 벡터
공격자가 동시에 MP_JOIN SYN 패킷을 전송하여 메모리에 남아있는 이전 소켓의 잔류 데이터를 조작하는 방식
🛡️ 대응 방법
커널 패치를 적용하여 MP_JOIN 재구성 시 local_id가 쿠키 엔트리로부터 올바르게 복구되도록 업데이트해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.