🇰🇷 한글 설명
Linux 커널의 MPTCP(MultiPath TCP) 구현에서 RM_ADDR 메시지 수신 시 add_addr_accepted 카운터를 잘못 감소시키는 취약점이 발견되었습니다. 이로 인해 특정 조건에서 카운터 불일치가 발생할 수 있으며, 패치는 MP_JOIN 요청에 대해서만 카운터를 감소시키도록 수정되었습니다.
💡 쉬운 설명
인터넷 연결을 여러 경로로 나누어 쓰는 기술(MPTCP)에서 데이터 개수를 세는 방식에 오류가 있었습니다. 이 오류로 인해 연결 관리 시스템에 혼란을 줄 수 있는 문제가 있어 이를 바로잡았습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mptcp: pm: only decrement add_addr_accepted for MPJ req
Adding the following warning ...
WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)
... before decrementing the add_addr_accepted counter helped to find a
bug when running the "remove single subflow" subtest from the
mptcp_join.sh selftest.
Removing a 'subflow' endpoint will first trigger a RM_ADDR, then the
subflow closure. Before this patch, and upon the reception of the
RM_ADDR, the other peer will then try to decrement this
add_addr_accepted. That's not correct because the attached subflows have
not been created upon the reception of an ADD_ADDR.
A way to solve that is to decrement the counter only if the attached
subflow was an MP_JOIN to a remote id that was not 0, and initiated by
the host receiving the RM_ADDR.
📍 영향받는 시스템
MPTCP 기능이 활성화된 Linux 커널 버전
⚔️ 공격 벡터
네트워크를 통해 조작된 RM_ADDR 메시지를 전송하여 커널의 MPTCP 상태 카운터를 비정상적으로 조작
🛡️ 대응 방법
MPTCP 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인