🇰🇷 한글 설명
리눅스 커널의 MPTCP 구현에서 오래된 서브플로우의 데이터를 재주입하는 과정 중 오류가 발생합니다. TCP 전용 헬퍼 함수를 MPTCP 소켓에 잘못 사용하여 미전송 데이터를 확인하는 최적화 로직이 실패하며, 이로 인해 데이터 재주입이 누락될 수 있습니다.
💡 쉬운 설명
인터넷 연결을 여러 개 사용하는 기술(MPTCP)에서 데이터 전송 중 연결이 끊겼을 때, 보내지 못한 데이터를 다시 보내는 과정에 버그가 있습니다. 이 버그로 인해 일부 데이터가 제대로 다시 전달되지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mptcp: fix data re-injection from stale subflow
When the MPTCP PM detects that a subflow is stale, all the packet
scheduler must re-inject all the mptcp-level unacked data. To avoid
acquiring unneeded locks, it first try to check if any unacked data
is present at all in the RTX queue, but such check is currently
broken, as it uses TCP-specific helper on an MPTCP socket.
Funnily enough fuzzers and static checkers are happy, as the accessed
memory still belongs to the mptcp_sock struct, and even from a
functional perspective the recovery completed successfully, as
the short-cut test always failed.
A recent unrelated TCP change - commit d5fed5addb2b ("tcp: reorganize
tcp_sock fast path variables") - exposed the issue, as the tcp field
reorganization makes the mptcp code always skip the re-inection.
Fix the issue dropping the bogus call: we are on a slow path, the early
optimization proved once again to be evil.
📍 영향받는 시스템
Linux Kernel (MPTCP 기능이 활성화된 버전)
⚔️ 공격 벡터
네트워크 연결 상태를 조작하여 특정 서브플로우를 만료(stale) 상태로 유도함으로써 데이터 재전송 실패를 유발할 수 있음
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.