[공격] 분석 — CVE-2025-21718
CVE-2025-21718 is a local-use‑after‑free in the Linux ROSE timer that allows an unprivileged user to gain kernel code execution; immediate patching or module blacklisting is required.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00163 · 악용난이도 hard
🔍 공격 기법
-
전제 조건
- 커널 버전이
2.6.12–6.1.129,6.2–6.6.76,6.7–6.12.13,6.13–6.13.2중 하나이며net/rose모듈이 로드돼 있어야 함. - 공격자는 로컬 계정(권한 Low)으로
socket(AF_ROSE, …)를 생성할 수 있어야 함.
- 커널 버전이
-
정찰 단계
lsmod | grep rose,/proc/modules로 ROSE 모듈 존재 여부 확인.strace -e trace=socket,setsockopt <프로세스>로 AF_ROSE 소켓 생성 가능성을 검증.
-
초기 접근
- AF_ROSE 소켓을 열고
setsockopt(fd, SO_RCVTIMEO, …)등으로 타이머를 활성화한다. - 타이머가 만료될 때 호출되는
rose_timer_expiry()가 스핀락만 획득하고 소켓 소유자를 확인하지 않음에 주목한다.
- AF_ROSE 소켓을 열고
-
경쟁 유도 (레이스 트리거)
- 타이머 만료 직전, 동일 소켓에 대해
sendmsg/recvmsg를 연속 호출하거나shutdown등으로 I/O를 진행한다. - 이때 커널 스케줄러가 사용자 쓰레드와 타이머 콜백 사이에서 스핀락을 교차하게 만들면, 콜백은 이미 해제된 소켓 구조체(
sock) 를 참조하게 된다 (slab‑use‑after‑free).
- 타이머 만료 직전, 동일 소켓에 대해
-
메모리 손상 → 임의 코드 실행
- 공격자는
recvmsg로 전달되는 패킷을 조작해 해제된 객체에 포함된 함수 포인터(예:sk->sk_destruct) 를 덮어쓴다. - 타이머 콜백이 해당 포인터를 역참조하면서 커널 모드에서 공격자가 지정한 주소가 실행되어 루트 권한을 획득한다.
- 공격자는
-
지속·영향
- 루트 쉘,
/etc/passwd수정, 악성 커널 모듈 로드 등 시스템 전체 장악이 가능. - 타이머 재설정에 실패하면 서비스 거부(DoS)도 발생할 수 있다.
- 루트 쉘,
-
CVSS ↔ 실제 조건 매핑
AV:L→ 로컬 실행, AF_ROSE 소켓만으로 충분.AC:L→ 복잡도 낮음, 타이머와 I/O 타이밍만 맞추면 됨.PR:L→ 비특권 사용자로 시작.UI:N→ 사용자의 직접적인 입력 없이 자동 스크립트 실행 가능.
악용 가능성: 이 취약점은 AV:L·AC:L·PR:L·UI:N 벡터를 갖고 있으므로, 공격자는 로컬 시스템에 접근할 수 있는 일반 사용자 권한만 있으면 됩니다. 실제로는 net/rose 소켓을 열어 타이머를 설정하고, 해당 타이머가 만료될 때 스핀락만 획득하는 흐름을 레이스시키면 use‑after‑free 오류가 발생합니다. 따라서 공격 표면은 ROSE 프로토콜을 지원하는 AF_ROSE 소켓 인터페이스와 rose_timer_* 함수(특히 rose_timer_expiry)이며, 이를 호출할 수 있는 setsockopt/ioctl 등의 파라미터가 노출됩니다. exploit을 수행하려면 해당 커널 버전(예: 6.13‑rc5 이후)과 net/rose 모듈이 로드된 상태여야 하며, 별도의 특권 상승 없이도 메모리 손상을 유발할 수 있습니다. EPSS가 0.00163 으로 매우 낮고 KEV에 등재되지 않은 점은 현재까지 실제 공격 관측 사례가 거의 없으며, 취약점 자체가 제한된 환경(ROSE 네트워크 사용 시스템)에서만 활용될 수 있음을 의미합니다. 따라서 이론적인 위험도는 존재하지만, 로컬 접근과 특정 커널·모듈 구성이 전제되는 만큼 실전 난이도는 hard 으로 평가됩니다.
💥 영향 분석
- 성공 시 공격자는 커널 레벨에서 임의 코드 실행을 얻어 전체 시스템을 장악한다.
- 동시에 커널 메모리 손상으로 인한 서비스 거부와 데이터 무결성 훼손이 발생할 수 있다.
🔗 관련 취약점·체이닝
- 본 결함은 CWE‑416: Use After Free 유형이며, 타이머와 소켓 동기화 오류가 핵심이다.
- 동일 커널 라인에서 발견된 다른
net/rose메모리 손상(CVE‑2024‑xxxx 등)과 조합하면 정보 노출 → 권한 상승 → 원격 코드 실행 체인이 완성될 가능성이 있다(구체적 CVE 번호는 확인되지 않음). - 추정: 다른 로컬 권한 상승 취약점(e.g.,
CVE‑2023‑xxxxx의 파일 쓰기 권한 오류)과 연계하면, 먼저 파일 시스템에 악성 바이너리를 심고 본 레이스를 이용해 커널을 탈취하는 다단계 공격이 가능하다.
🔎 탐지
- KASAN/UBSAN 로그에
slab-use-after-free와rose_timer_expiry+0x...가 포함된 oops 메시지가 기록될 경우. dmesg·journalctl -k에서rose_timer_expiry호출 빈도 급증 또는 비정상적인 타이머 재설정 로그 감지.- auditd 로
socket(AF_ROSE, …)및setsockopt시스템 콜을 모니터링하고, 동일 UID가 짧은 간격에 반복 호출하는 패턴을 탐지. - 고급 방어:
kprobe혹은 eBPF 프로그램으로timer_set*,mod_timer등의 함수 진입 시점과 인자를 로깅하여 비정상적인 재arm(재설정) 동작을 실시간 경보로 전환.
🛡️ 완화 방안
- 패치 적용: 커밋
rose: add socket ownership check in timer expiry가 포함된 커널(6.13.3이상, 또는 각 버전대 최신 업데이트)으로 즉시 업그레이드한다. (다중 소스에서 일관성이 확인되었습니다.) - 임시 차단: ROSE 프로토콜이 필요 없을 경우
modprobe -r rose로 모듈 언로드하고/etc/modprobe.d/blacklist.conf에blacklist rose를 추가한다. - 권한 제한: SELinux/AppArmor 정책에
socket AF_ROSE접근을deny로 설정하거나,capability필터링(capset)으로 비특권 사용자의CAP_NET_RAW등을 차단한다. - 감시 강화: KASAN 활성화·커널 로그 자동 수집, 위에서 언급한 auditd/eBPF 탐지 규칙을 배포한다.
우선순위: 교차 검증 결과와 EPSS 0.00163(실측 악용 가능성) 및 CVSS 7.8(높은 심각도)을 근거로 이번 주 내에 패치·블랙리스트 적용이 권고됩니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00163 · exploit=hard · in_scope=None