CVE-2026-68398
ppp: 채널 해제를 RCU 유예 기간으로 연기하여 pppol2tp RX UAF 수정
- 게시됨
- 2026. 8. 10.
- 업데이트됨
- 2026. 8. 19.
- CNA 할당 중
- Linux
- 증거 관찰됨
- 2026. 8. 20.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H낮음 · 다음 30일
- 백분위수
- 9.5%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
# Linux 커널에서 다음 취약점이 해결되었습니다: pppol2tp RX UAF를 수정하기 위해 채널 해제를 RCU 유예 기간으로 지연 pppol2tp_recv()는 L2TP UDP-encap softirq RX 경로에서 실행됩니다: l2tp_udp_encap_recv() -> l2tp_recv_common() -> pppol2tp_recv() -> ppp_input(&po->chan) 이 함수는 rcu_read_lock() 하에서 l2tp_session 참조만 보유한 채 실행되며, ppp_input()이 역참조하는 내부 PPP 채널(struct channel, chan->ppp)에 대한 참조는 전혀 보유하지 않습니다. pppox 소켓은 SOCK_RCU_FREE이므로 'po'와 내장된 ppp_channel은 RCU 안전합니다. 그러나 내부 struct channel은 ppp_release_channel()이 일반 kfree()로 해제하는 별도의 할당입니다: close(data socket) -> pppol2tp_release() -> pppox_unbind_sock() -> ppp_unregister_channel() -> ppp_release_channel() -> kfree(pch) 바인딩되었지만(PPPIOCGCHAN) ppp 유닛에 연결되지 않았고(PPPIOCCONNECT 없음, pch->ppp == NULL) 브리지되지 않은 채널의 경우, 해제 과정에서 ppp_disconnect_channel()의 synchronize_net()과 ppp_unbridge_channels()의 synchronize_rcu()가 모두 건너뛰어지므로 kfree()에는 유예 기간이 없습니다. pppol2tp_recv()의 rcu_read_lock()은 일반 kfree()로부터 보호하지 않으므로, 한 CPU에서 진행 중인 ppp_input()이 다른 CPU에서 close()로 방금 해제된 채널을 역참조할 수 있습니다. 이 버그는 권한이 없는 사용자에 의해 도달 가능합니다. call_rcu()를 통해 채널 해제를 RCU 콜백으로 지연시켜 유예 기간이 진행 중인 ppp_input()을 차단하도록 합니다. 연결 해제 및 브리지 해제 경로는 이미 synchronize_net()/synchronize_rcu()로 차단됩니다. call_rcu()는 close() 경로를 지연시키지 않으면서 여기서도 동일한 역할을 수행합니다.
소스
1- CVE-2026-68398익스플로잇
CVE-2026-68398 Ubuntu PPPoL2TP use-after-free 로컬 권한 상승
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.