[공격] 분석 — CVE-2026-31507
CVE-2026-31507 is a local double‑free/use‑after‑free in the SMC pipe handling path that can be fully mitigated by applying the upstream kernel patch or disabling the SMC subsystem.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00131 · 악용난이도 hard
🔍 공격 기법
- 트리거 조건
- 로컬 사용자가
pipe()로 파이프를 만든 뒤,tee(2)를 이용해 해당 파이프와splice‑된 SMC 파이프(net/smc) 사이에 복제 버퍼를 생성한다. smc_rx_splice()가 각pipe_buffer에smc_spd_priv객체 포인터를 저장하지만,generic_pipe_buf_get은 이 포인터를 복사하지 않아 두 버퍼가 동일 객체를 공유하게 된다.
- 로컬 사용자가
- 공격 흐름
1️⃣ 정찰 – 커널 버전(4.18.1‑6.19.11 범위) 확인 및lsmod | grep smc로 SMC 모듈 로드 여부 탐지.
2️⃣ 초기 접근 – 일반 권한으로tee(fd_src, fd_dst, size, 0)호출을 수행해 두 개의 파이프 버퍼를 만든다(필요히pipe()와dup()순서를 정확히 재현).
3️⃣ 실행·권한 획득 – 두 파이프가 해제될 때smc_rx_pipe_buf_release()가 동일priv객체에 대해 두 번kfree()를 수행, 슬랩‑UAF 발생 → 커널 힙 메모리 손상.
4️⃣ 지속·영향 – UAF를 이용해 힙 스프레이/오브젝트 재활용(예:cred구조) 후commit_creds(prepare_kernel_cred(NULL))호출 시 루트 권한 획득 가능. - 공격 표면
- 시스템 콜 인터페이스:
tee(2)(flags = 0, splice 파이프 사용) - 커널 내부 함수:
smc_rx_splice(),smc_rx_pipe_buf_release() - 노출된 파일 디스크립터: SMC 관련 소켓(
sock)와 파이프 FD
- 시스템 콜 인터페이스:
- CVSS ↔ 실제 조건 매핑
- AV:L → 로컬 실행, PR:L → 일반 사용자 권한만 필요, AC:L → 복제 파이프만 있으면 충분, UI:N → 추가 입력 불필요. 따라서 공격자는 이미 시스템에 쉘 접근이 있는 경우 바로 이용 가능하지만 원격에서 직접 수행하기는 어렵다(‘hard’ 난이도).
- 오류 정정 – 이전 분석에서 “원격 코드 실행 가능”이라고 기술했으나, 다중 소스 교차검증 및 동료 의견에 따라 실제 위험은 로컬 권한 상승(LPE)이며 원격 공격 시나리오는 존재하지 않는다.
악용 가능성: AV가 Local(L)로 제한되는 점은 공격자가 해당 호스트에 직접 접근해야 함을 의미합니다. AC는 Low이지만 이는 “tee(2)”와 “splice” 같은 파이프 연산을 정상적으로 호출할 수 있는 수준의 권한만 있으면 된다는 뜻이며, 실제로는 SMC 서브시스템이 활성화된 커널과 해당 네트워크 프로토콜을 이용하는 프로세스가 존재해야 합니다. PR도 Low으로 표시되지만, SMC 소켓 객체에 대한 핸들을 얻어야 하므로 일반 사용자 권한만으로는 충분하지 않으며, 보통은 동일 사용자 내에서 악성·비정상적인 파이프 조작을 수행할 수 있는 상황이어야 합니다. UI가 None(N)인 점은 추가적인 사용자 상호작용 없이 자동화된 호출이 가능함을 나타내지만, 앞서 언급한 SMC 파이프버퍼와 tee 복제 흐름 자체가 흔히 사용되지 않기 때문에 실제 공격 전개가 제한됩니다. EPSS 0.00131이라는 매우 낮은 실측 확률과 KEV에 등재되지 않은 점은 현재까지 보고된 악용 사례가 거의 없으며, 이는 취약점이 이론적으로는 심각해 보여도 실전에서 활용될 가능성이 현저히 낮다는 것을 뒷받침합니다. 따라서 공격 표면은 net/smc 모듈의 smc_rx_splice → tee(2) → pipe_buffer.private 경로에 한정되며, 해당 경로를 이용하려면 로컬에서 SMC 소켓을 열고 파이프를 splice·tee 하는 특수한 워크로드를 직접 구성해야 하므로 전체
💥 영향 분석
- 성공 시 커널 모드 루트 획득 → 전체 시스템 장악·데이터 탈취·서비스 중단 가능.
- UAF가 바로 커널 패닉을 일으킬 경우 DoS 효과도 발생한다(특히 컨테이너 환경에서 호스트 전체에 영향).
🔗 관련 취약점·체이닝
- CWE‑416 (Use After Free) 와 CWE‑415 (Double Free) 가 근본 원인이며, 동일 메모리 손상 패턴은 다른 파이프/스풀 구현에서도 보고된 바 있다.
- 추정: 이 결함을 힙 스프레이·오브젝트 재활용 기법과 결합하면
cred구조를 덮어써 권한 상승을 완성할 수 있다(전형적인 LPE 체인). - 추정: 다른 로컬 커널 메모리 손상 취약점(e.g., NULL 포인터 역참조)과 연계해 로그/디버그 인터페이스 조작 → 영구 백도어 설치가 가능하다.
🔎 탐지
- KASAN/KCOV 등 커널 메모리 무결성 도구에서 “slab-use-after-free in smc_rx_pipe_buf_release” 경고 발생 시 알림.
dmesg에BUG: KASAN: slab-use-after-free와 이어지는NULL-pointer dereference스택 트레이스 기록.auditctl -a exit,always -S tee로tee호출을 감시하고 동일 파이프가 두 번 해제되는 패턴(두 개의close()가 짧은 시간 내에 발생) 탐지.
🛡️ 완화 방안
1️⃣ 패치 적용 – upstream 커밋 또는 배포판 보안 업데이트로 수정된 커널 버전으로 업그레이드 (버전 범위 4.18.1‑6.19.11 포함).
2️⃣ SMC 모듈 비활성화 – 사용하지 않을 경우 modprobe -r smc 혹은 커널 컴파일 옵션 CONFIG_SMC=n 적용.
3️⃣ 정책 제한 – SELinux/AppArmor 정책에서 smc 파이프에 대한 tee 호출을 차단하거나, auditd 로 비정상적인 tee 사용을 알림.
4️⃣ 런타임 보호 – KASAN 활성화와 함께 CONFIG_DEBUG_PAGEALLOC, CONFIG_SLUB_DEBUG_ON_RELEASE 등을 켜서 이중 해제 시점에 경고를 발생시킴.
우선순위 근거: 다중 소스 교차검증에서 일관성이 확인됐으며, CVSS 7.8·non‑KEV·EPSS 0.00131·exploit hard 로 판단돼 이번 주 내에 패치 적용 또는 SMC 비활성화 조치를 scheduled 로 지정하였다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00131 · exploit=hard · in_scope=None