🇰🇷 한글 설명
Linux 커널의 MPTCP Fast Open 구현에서 데이터가 없는 SYN 패킷을 처리할 때 MPTFO 상태가 잘못 설정되는 취약점입니다. 이로 인해 stale(오래된) 상태가 남게 되어 check_fully_established() 함수에서 상태 혼란(state-confusion) 버그를 유발할 수 있습니다.
💡 쉬운 설명
데이터가 없는 연결 요청을 받았을 때 시스템이 이를 잘못된 상태로 기억하여 나중에 네트워크 연결 오류를 일으킬 수 있는 문제입니다. 공격자가 이를 이용해 네트워크 연결 상태를 꼬이게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mptcp: fastopen: only mark MPTFO subflows with SYN data
Passive TCP Fast Open accepts a valid-cookie SYN even when it carries
no data. In that case the child socket's receive queue is intentionally
left empty.
mptcp_fastopen_subflow_synack_set_params() set is_mptfo before checking
for queued SYN data. That made data-less TFO SYNs hit a WARN and, if
the warning was non-fatal, left stale MPTFO state behind. The stale
flag could later trigger a state-confusion bug in
check_fully_established().
Only mark the subflow as MPTFO after confirming that an SKB was queued.
Return quietly when the receive queue is empty.
Note that mptcp_subflow_context's is_mptfo field is now not just about
subflows where the TFO was present, but about MPTFO subflow that
consumed SYN data. Only having a valid cookie but not carrying data is
not really "doing TFO".
📍 영향받는 시스템
Linux Kernel (MPTCP Fast Open 기능이 활성화된 버전)
⚔️ 공격 벡터
데이터를 포함하지 않은 유효한 쿠키를 가진 TCP Fast Open SYN 패킷을 전송하여 상태 혼란 유도
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인