🔍 CVE-2026-68170

9.8
CVSS Score
CRITICAL
2026-08-10
2026-08-17 05:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 MPTCP 구현에서 서브플로우 종료 시 skb->sk 참조를 정리하는 과정 중 락(lock) 미보유로 인한 레이스 컨디션이 발생합니다. 이로 인해 정리되지 않은 stale 포인터가 남아 Use-After-Free(UAF) 취약점을 유발할 수 있습니다.

💡 쉬운 설명

네트워크 연결이 끊어지는 순간 데이터 처리 과정에서 순서가 꼬여, 이미 사라진 메모리 주소를 다시 참조하게 되는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 공격에 악용될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: mptcp: fix stale skb->sk reference on subflow close The backlog list is updated by mptcp_data_ready() under mptcp_data_lock(). The cleanup of backlog references to a closing subflow, however, was performed in mptcp_close_ssk(), before __mptcp_close_ssk() acquires the ssk lock, and while holding neither the ssk lock nor mptcp_data_lock(). Because that traversal ran without mptcp_data_lock(), concurrent softirq RX processing on another CPU (subflow_data_ready() -> mptcp_data_ready() -> __mptcp_add_backlog(), under mptcp_data_lock()) could add a backlog entry referencing the ssk while the cleanup loop was in progress. Such an entry could be missed by the cleanup, or the concurrent list update could corrupt the traversal, leaving skb->sk pointing at the ssk after it is freed. A later mptcp_backlog_purge() then dereferences the stale pointer, triggering a warning in inet_sock_destruct() (ssk->sk_rmem_alloc != 0) followed by a use-after-free in mptcp_backlog_purge(). Fix this by moving the backlog cleanup into __mptcp_close_ssk(), after subflow->closing is set to 1 and while the ssk lock is still held, serialized under mptcp_data_lock(). The cleanup runs only on the push path (MPTCP_CF_PUSH), where backlog references accumulate; on other teardown paths the caller already handles cleanup. With subflow->closing set and mptcp_data_lock() held across the purge, any concurrent mptcp_data_ready() either completes its enqueue before the purge runs and is caught, or observes closing=1 and bails out. Once mptcp_data_unlock() is reached, no new skb referencing the ssk can be enqueued, so the cleanup is exhaustive. Remove the unprotected traversal from mptcp_close_ssk() entirely.

📍 영향받는 시스템

Linux Kernel (MPTCP 기능이 활성화된 버전)

⚔️ 공격 벡터

특수하게 조작된 네트워크 패킷을 전송하여 MPTCP 서브플로우의 종료와 데이터 수신을 동시에 유도하는 레이스 컨디션 공격

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 MPTCP 백로그 정리 로직을 수정해야 합니다.

🔧 검증 코드

출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel