리눅스 MPTCP 원격 코드 실행 취약점 발견
최근 30일 조회수 — 좋아요 —핵심 요약
MPTCP 수신 포트의 경쟁 조건으로 커널 메모리 유출과 원격 코드 실행이 가능한 취약점이 발견됐다.

앤트로픽(Anthropic)이 멀티패스 TCP(Multipath TCP·MPTCP) 수신 포트를 연 리눅스 시스템에서 원격 코드 실행으로 이어질 수 있는 해제 후 사용(use-after-free) 취약점을 10월 27일 보고했다. LWN.net에 따르면 공격자는 커널 메모리를 노출하거나 버퍼 오버플로를 일으켜 자신이 제어하는 데이터를 쓸 수 있다.1
MPTCP는 하나의 연결에 여러 네트워크 경로를 함께 쓰는 TCP 확장 기술이다. 이번 취약점은 재전송된 SYN 패킷에 응답하는 스레드와 다른 스레드가 TCP 연결을 확립하는 순간이 겹칠 때 발생한다. 두 번째 스레드가 연결의 옵션 구조체를 해제한 뒤에도 첫 번째 스레드가 이 구조체에 접근하는 경쟁 조건이다. 이미 해제된 메모리를 첫 번째 스레드가 계속 참조하면서 커널 메모리 유출이나 공격자 제어 페이로드를 쓰는 버퍼 오버플로가 가능해진다. 네트워크로 이 조건을 유도할 수 있다는 점에서 원격 코드 실행 위험으로 이어진다.
수정안은 옵션 구조체를 즉시 해제하지 않고 RCU(Read-Copy-Update) 유예 기간이 지난 뒤 해제하도록 바꿨다. RCU 유예 기간을 두면 기존 참조를 사용하던 스레드가 작업을 마칠 시간을 확보할 수 있어, 다른 스레드가 구조체를 먼저 없애는 상황을 막는다.
영향 범위는 MPTCP를 의도적으로 설정한 서버에만 국한되지 않을 수 있다. LWN.net이 전한 10월 29일 Go 보안팀 권고에 따르면 Go로 작성한 모든 프로그램은 기본적으로 MPTCP를 사용한다. 운영자가 이를 인지하지 못한 채 취약한 수신 환경을 운용하고 있을 가능성이 있다는 뜻이다. 다만 자료에는 영향받는 리눅스 커널 버전이나 실제 공격 사례, 배포판별 패치 일정은 제시되지 않았다. TCP 스택의 다른 부분에 연관 취약점이 존재할 가능성도 배제할 수 없는 만큼, 사용자는 배포판이 수정 커널을 제공하는 즉시 업데이트할 필요가 있다.
Footnotes
-
LWN.net, 「Remote code execution on Linux systems with multipath TCP」 ↩
읽기 목록은 이 브라우저에 저장됩니다.
출처
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.