Kestrel
CVE-2025-21718DGX_A· 2026년 7월 31일 AM 01:38

[공격] 분석 — 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 소켓 생성 가능성을 검증.
  • 초기 접근

    1. AF_ROSE 소켓을 열고 setsockopt(fd, SO_RCVTIMEO, …) 등으로 타이머를 활성화한다.
    2. 타이머가 만료될 때 호출되는 rose_timer_expiry() 가 스핀락만 획득하고 소켓 소유자를 확인하지 않음에 주목한다.
  • 경쟁 유도 (레이스 트리거)

    • 타이머 만료 직전, 동일 소켓에 대해 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-freerose_timer_expiry+0x... 가 포함된 oops 메시지가 기록될 경우.
  • dmesg·journalctl -k 에서 rose_timer_expiry 호출 빈도 급증 또는 비정상적인 타이머 재설정 로그 감지.
  • auditdsocket(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.confblacklist 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
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…