[공격] 분석 — CVE-2025-71086
CVE-2025-71086 is a local out‑of‑bounds read in the ROSE network driver that can be triggered by bringing down a ROSE interface, leading to kernel address leakage and potential privilege escalation – patch or unload the driver immediately.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.0012 · 악용난이도 hard
🔍 공격 기법
-
트리거 조건: 로컬 사용자가
ifconfig roseX down혹은ip link set dev roseX down와 같이 ROSE 프로토콜을 사용하는 네트워크 인터페이스를 비활성화할 수 있어야 함. 해당 인터페이스에 바인딩된 소켓이 존재하면rose_kill_by_device()가 호출된다. -
취약점 이용 흐름
- 정찰 –
lsmod혹은/proc/net/dev로 ROSE 모듈(rose)이 로드돼 있는지 확인하고,ip -details link show type rose로 인터페이스 존재 여부를 파악한다. - 초기 접근 – 비특권 사용자 권한으로 AF_ROSE 소켓을 생성(
socket(AF_ROSE, SOCK_DGRAM, 0))하고, 임의 데이터를 바인드해 두 개 이상의 소켓을 준비한다. - 실행·권한 획득 – 인터페이스를 강제로
down시키면 내부 루프가array[cnt]를 잘못 참조한다.cnt가 배열 크기와 동일하거나 초과할 경우 OOB read 가 발생해 커널 메모리(특히sock_hold()로 확보된 소켓 포인터) 값을 반환한다. - 정보 유출 – 반환된 포인터를 사용자 공간에 복사하도록 설계된 API(예:
getsockopt혹은recvmsg) 를 이용해 커널 주소를 획득한다. 이는 KASLR 우회와 이후 임의 쓰기/코드 실행을 위한 기반이 된다. - 지속·영향 – 얻은 커널 베이스 주소와 기존 로컬 권한 상승 기법(예:
write‑what‑where취약점) 을 결합해root쉘을 획득한다.
- 정찰 –
-
공격 표면
- 노출 엔드포인트·함수:
rose_kill_by_device()(내부 호출),netdev_close()→ 인터페이스 다운,socket(AF_ROSE, …),bind(),setsockopt()등 ROSE 소켓 관련 API. - CVSS 벡터와 실제 조건 매핑: AV:L(로컬), AC:L(복잡도 낮음 – 인터페이스 비활성화만 필요), PR:L(특권이 낮은 사용자), UI:N(사용자 입력 불필요).
- 노출 엔드포인트·함수:
악용 가능성: AV:L·AC:L·PR:L·UI:N 로 평가된 이 취약점은 로컬 환경에서만 발동되며, 공격자는 일반 사용자 권한으로도 시도할 수 있지만, 실제 악용을 위해서는 rose_kill_by_device() 가 호출되는 순간에 조작 가능한 소켓 배열이 존재해야 합니다. 이 함수는 네트워크 인터페이스가 다운될 때 내부적으로 장치에 바인딩된 소켓들을 순회하므로, 공격 표면은 ip link set <dev> down 명령이나 동일한 효과를 내는 netlink 메시지와, 해당 인터페이스에 연결된 소켓 객체(예: AF_ROSE 기반 소켓)입니다. 배열 인덱스 오류가 array[cnt] 로 잘못 사용되면서 경계 밖을 읽게 되면, 초기화되지 않은 엔트리 혹은 오프‑바이‑원스 포인터를 역참조하게 되고, 이는 커널 주소 노출 및 잠재적 권한 상승으로 이어질 수 있습니다. 그러나 이를 실현하려면 공격자는 자신이 만든 소켓을 정확히 array[i] 위치에 배치하고, 동시에 인터페이스 다운 이벤트를 트리거해야 하므로 메모리 레이아웃 예측과 타이밍 조절이 필수입니다. EPSS 0.0012라는 매우 낮은 실측값과 KEV 미등재는 현재까지 실제 공격 사례가 거의 없음을 반영하며, 이는 이론적 심각
💥 영향 분석
- 핵심 위험: 커널 주소 누출 → KASLR 무력화 → 추가 로컬 권한 상승 체인으로
root획득. - 부수 효과: 잘못된 소켓 포인터 역참조가 발생하면 시스템 패닉(DoS) 가능성도 존재한다.
🔗 관련 취약점·체이닝
- 이 결함은 정보 누출 → 권한 상승 유형에 속한다(CWE‑200, CWE‑124).
- 동일 커널 버전에서 보고된 다른 OOB/NULL‑Dereference 취약점(예:
CVE‑2024‑xxxx등)과 조합하면 커널 메모리 읽기 → 임의 쓰기 체인이 완성될 수 있다. - 추정: KASLR 우회를 위한 주소 누출 이후, 기존에 존재하는
write‑what‑where취약점(예:CVE‑2023‑xxxx)을 활용하면 완전한 원격 코드 실행 수준까지 도달할 가능성이 있다.
🔎 탐지
- Auditd 규칙 예시:
auditctl -a exit,always -F arch=b64 -S socket -F a0=AF_ROSE(ROSE 소켓 생성) 및auditctl -w /sys/class/net/*/operstate -p w -k rose_down(인터페이스 상태 변경). - 커널 로그:
dmesg혹은/var/log/kern.log에서 “rose_kill_by_device” 관련 OOB read 경고 또는 NULL 포인터 역참조 메시지가 발생하면 탐지 가능. - 프로세스 행동: 비특권 프로세스가
ifconfig/ ip link set down를 실행하고 동시에 다수 ROSE 소켓을 보유한 경우 알림 트리거.
🛡️ 완화 방안
- 패치 적용 – 해당 버전(4.19.304‑4.20, 5.4.266‑5.5, … 6.18.4) 모두에 포함된 upstream 패치를 즉시 배포하고, 최신 LTS 커널로 업그레이드한다.
- 모듈 비활성화 –
rose모듈이 필요하지 않다면modprobe.blacklist=rose로 블랙리스트하고, 이미 로드된 경우rmmod rose로 언로드한다. - 권한 제한 – ROSE 인터페이스 생성·삭제 및 상태 변경에
CAP_NET_ADMIN권한을 요구하도록 PAM/SELinux 정책 강화. - 정보 누출 방어 –
sysctl kernel.kptr_restrict=2와kernel.dmesg_restrict=1로 커널 주소 노출 최소화. - 모니터링 – 위 탐지 규칙을 auditd 및 SIEM에 연동해 실시간 알림 체계 구축한다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.0012 · exploit=hard · in_scope=None