🇰🇷 한글 설명
Linux 커널의 MPTCP 수신 경로에서 특정 오류 조건 발생 시 mptcp_data_ready() 함수가 재귀적으로 호출되어 데이터 락을 중복 획득하려는 문제가 발견되었습니다. 이를 해결하기 위해 subflow_state_change()에서 예외 조건을 체크하여 재귀 루프를 방지하고 RX 큐를 명시적으로 비우도록 수정되었습니다.
💡 쉬운 설명
네트워크 연결을 관리하는 리눅스 시스템의 특정 기능에서 오류가 발생하면 프로그램이 무한 루프에 빠지거나 멈출 수 있는 결함이 있었습니다. 이 결함은 시스템의 안정성을 해칠 수 있으며, 패치를 통해 재귀 호출을 차단하여 해결되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mptcp: avoid unneeded actions on subflow reset
Once in a blue moon, the mptcp receive path can recursively call
mptcp_data_ready() via state change under unlucky error conditions, and
then try to hold the data lock again.
Break the recursion loop explicitly checking for the exceptional
condition.
Add a new flag instead of using an existing one like 'closing', to exit
early in subflow_state_change(), and explicitly flush the RX queue at
reset time.
This avoids unneeded processing to check for available data -- calling
get_mapping_status() and more on a dying subflow -- but also in error
reporting and worker scheduling.
Note that we must consume the currently peeked skb before invoking
mptcp_dss_corruption to avoid consuming it again after the eventual
reset has freed it.
📍 영향받는 시스템
Linux Kernel (MPTCP 기능이 활성화된 버전)
⚔️ 공격 벡터
특수한 네트워크 오류 조건을 유도하여 커널의 재귀 호출 및 데드락 유발
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인