펜리젠트 헤더

CVE-2025-68260: 리눅스 커널의 첫 번째 러스트 코드 CVE인 rust_binder, 근본 원인, 노출 검사 및 수정 전략

CVE-2025-68260은 메인라인 Linux 커널의 Rust 코드에 할당된 최초의 CVE로 널리 알려져 있습니다. 이 취약점은 Rust 기반 Android 바인더 드라이버(rust_binder)는 크래시급 버그, 즉 침입성 링크 목록 포인터를 손상시키고 커널 오옵스/패닉(서비스 거부)을 유발할 수 있는 경쟁 조건으로 설명됩니다.

이는 두 가지 이유로 보안 팀에게 중요합니다. 첫째, "크래시 전용" 커널 버그는 특히 고가용성 또는 멀티테넌트 환경에서 실제 운영에 영향을 미칩니다. 둘째, 노출은 구성에 따라 달라집니다. 많은 Linux 시스템은 Rust Binder 구현을 활성화하여 사용하지 않는 한 영향을 받지 않습니다.

보안 엔지니어를 위한 요약

  • CVE: CVE-2025-68260
  • 컴포넌트: 리눅스 커널 러스트 안드로이드 바인더 드라이버(rust_binder), 다음을 포함합니다. 노드::릴리스 그리고 사망자 목록 처리
  • 버그 클래스: 경쟁 조건 + 안전하지 않은 침입 목록 조작 → 포인터 손상
  • Impact: 커널 충돌/DoS(공개적으로 설명됨)
  • 노출은 다음에 따라 달라집니다: 러스트 바인더의 활성화/선택 여부(예, 안드로이드_바인더_IPC_RUST, binder.impl)
  • NVD 상태: 작성 시점에 "분석 대기 중"(CVSS가 보류 중일 수 있음)

CVE-2025-68260이란: 러스트 바인더 드라이버의 동시성 버그

NVD 레코드는 침입 링크 목록에 대한 특정 안전하지 않은 제거 작업을 설명합니다. 이 작업은 다른 스레드가 동시에 요소의 이전/다음 포인터가 필요합니다. 이 실패는 잠금 해제 패턴이 노드::릴리스 안전하지 않은 동시 작업과 겹치는 경우 제거를 사용하여 링크 목록 손상 및 충돌을 일으킵니다.

NVD에는 손상된 목록 포인터와 관련된 대표적인 커널 충돌 증상("커널 페이징 요청을 처리할 수 없습니다...")이 포함되어 있으며, 이는 미묘한 논리 결함보다는 충돌 수준의 취약성과 일치합니다.

문제가 되는 패턴에 대한 간단한 개념 스케치(익스플로잇이 아닌 직관용)는 다음과 같습니다:

// 개념 스케치(전체 커널 코드가 아님):
lock(death_list);
move_all_items_to_local_list();
unlock(death_list);

// 잠금 없이 반복
for item in local_list {
    // 항목 처리
}

// 동시 스레드도 가능합니다:
unsafe { death_list.remove(item) } // 이전/다음 포인터 터치
// => 데이터 경합 => 포인터 손상 => 커널 충돌

핵심은 동시성 불변성입니다. 침입성 리스트 포인터를 안전하게 터치하려면 배타적 접근 보장이 필요하며, 잠금 없는 순회 중에 리스트 요소를 병렬로 수정할 수 있으면 이러한 보장이 실패합니다.

이것이 "최초의 러스트 커널 CVE"가 된 이유

Greg Kroah-Hartman(안정 유지 관리자)은 이 문제가 "단지 충돌을 일으킬 뿐"이며 무기화 가능한 메모리 손상으로 가는 입증된 경로가 아니라는 점을 강조하면서 이 문제를 Rust 코드의 첫 커널 CVE로 공개적으로 규정했습니다.

이러한 프레임워크는 운영상 유용합니다. 보안 팀이 구성에 따라 노출되는 가용성 위험으로 버그를 분류하는 동시에 악용 가능성에 대한 과장을 피할 수 있기 때문입니다.

영향을 받는 시스템: 버전 타임라인 및 구성 현실

타임라인과 노출 모델의 핵심은 두 가지 사실입니다:

  1. Rust Android 바인더 드라이버가 Linux에 병합되었습니다. v6.18-rc1Rust for Linux 프로젝트 문서에 따르면.
  2. 안드로이드 커널 구성은 Rust 변형을 포함한 바인더 구현 선택을 명시적으로 지원합니다. Kconfig 문서 참조 binder.impl 를 커널 명령줄 노브로 사용하여 구현을 선택할 수 있으며 기본값을 관리하는 옵션이 포함되어 있습니다.

이는 노출이 "모든 Linux"가 아님을 의미합니다. 일반 서버 제품군에서는 Rust Binder가 활성화되지 않을 수 있습니다. 그러나 안드로이드 중심 커널, 안드로이드 컨테이너 스택을 실행하는 개발 머신 또는 Rust Binder 구현을 활성화하는 사용자 정의 빌드는 CVE-2025-68260을 실행 가능한 것으로 취급해야 합니다.

바인더 자체는 안드로이드의 아키텍처 자료에서 널리 문서화되어 있는 기본적인 안드로이드 IPC 메커니즘입니다.

빠른 노출 확인(감사 가능, 익스플로잇 콘텐츠 없음)

다음 명령을 사용하여 사용 중인 환경이 범위 내에 있는지 확인합니다.

커널 버전

uname -r

커널 구성: 러스트 + 바인더 + 러스트 바인더

# 배포판 스타일 /부팅 구성(많은 시스템에서 일반적)
grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST" /boot/config-$(uname -r) 2>/dev/null

# /proc/config.gz가 활성화된 경우
zcat /proc/config.gz 2>/dev/null | grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST"

바인더 구현 선택(안드로이드 커널은 종종 binder.impl을 사용함)

cat /proc/cmdline | tr ' ' '\n' | grep -E '^binder\.impl='

그리고 binder.impl 매개 변수는 구현 선택 동작의 일부로 안드로이드 커널 Kconfig에 문서화되어 있습니다.

충돌 신호 추적(증상만 해당)

dmesg -T | egrep -i "rust_binder|binder|처리할 수 없는|페이징 요청|오 죄송합니다|KASAN" | tail -n 200

수정 전략: 먼저 업그레이드하고 실제 CI로만 백포트하기

가장 안전한 방법은 수정 사항이 포함된 안정적인 커널 릴리즈로 이동하는 것입니다. 공개 범위에서는 커널 안정성 및 테스트 관행에 따라 고립된 커밋을 골라내기보다는 안정적인 커널로 업그레이드하는 것을 강조합니다.

NVD 레코드에는 수정 컨텍스트를 추적하는 kernel.org 소스에 대한 참조가 포함되어 있습니다.

사용자 지정 Android 커널을 실행 중이고 즉시 업그레이드할 수 없는 경우 엔지니어링 경로는 일반적으로 수정 사항을 유지 관리되는 패치 집합으로 백포트하고 Binder가 많은 워크로드에서 유효성을 검사하는 것입니다. 그러나 대부분의 기업에서는 실용적인 선택입니다: 공급업체 업데이트 사용 (배포/OEM/GKI 채널)에 문의하고 해결 증거를 문서화하세요.

분류 테이블

필드가치
CVECVE-2025-68260
구성 요소Rust 안드로이드 바인더 드라이버(rust_binder), 노드::릴리스 / 사망자 목록 경로
취약성 등급경쟁 조건 + 안전하지 않은 침입성 리스트 포인터 손상
최악의 경우 영향커널 충돌/DoS(공개 설명)
노출은 다음에 따라 달라집니다.러스트 바인더 활성화/선택됨(안드로이드_바인더_IPC_RUST, binder.impl)
NVD 강화"분석 대기 중"(보류 중일 수 있음)

컨텍스트: 우선순위 지정을 위한 관련 커널 CVE

CVE-2025-68260은 공개적으로 크래시급으로 설명됩니다. 우선순위를 정하기 위해 많은 조직에서는 권한에 미치는 영향이 더 명확한 커널 CVE를 벤치마킹합니다:

  • CVE-2019-2215(Android 바인더 UAF/EoP): NVD는 바인더 사용 후 무료화를 통한 권한 상승을 설명하며, 프로젝트 제로는 자세한 분석을 제공합니다.
  • CVE-2022-0847("더티 파이프"): 로컬 권한 에스컬레이션에 대한 광범위한 추적을 통해 CISA가 경보를 발령했습니다.
  • CVE-2024-1086(nf_tables UAF/LPE): NVD와 Red Hat은 netfilter/nf_tables에 무료 사용 후의 LPE 잠재력을 요약합니다.

실질적인 요점은 바인더/러스트 바인더가 활발히 사용 중이고 충돌이 비즈니스에 영향을 미치는 경우 CVE-2025-68260을 최우선 순위로 다루고, 그렇지 않은 경우 '최초의 러스트 CVE'라는 헤드라인 때문에 더 광범위한 LPE급 커널 문제를 대체하지 않도록 하라는 것입니다.

펜리전트로 대응 운영하기

구성 종속적인 커널 CVE의 경우, 병목 현상은 권고 사항을 읽는 것이 아니라 "어디에 노출되었는지", "수정 사항이 실제로 적용되었는지"에 대한 방어 가능하고 확장 가능한 답변을 생성하는 것입니다. 펜리전트는 CVE-2025-68260을 반복 가능한 증거 워크플로로 전환하여 이 주기를 간소화할 수 있습니다. 자산 전반에서 커널 버전과 구성 신호를 수집하고, Rust Binder 활성화에 따라 호스트를 그룹화하며, 다음과 같은 작업을 수행합니다. binder.impl 를 선택하고, 감사에 대비한 수정 보고서를 작성하여 참고 자료를 첨부합니다. 이 접근 방식은 악용이 아닌 검증 및 종결을 위해 설계되었습니다.

NVD: CVE-2025-68260
https://nvd.nist.gov/vuln/detail/CVE-2025-68260

그렉 크로아-하트만 공지(크래시 프레이밍, 최초의 러스트 커널 CVE)
https://social.kernel.org/notice/B1JLrtkxEBazCPQHDM

보안 온라인 적용 범위
https://securityonline.info/rusts-first-breach-cve-2025-68260-marks-the-first-rust-vulnerability-in-the-linux-kernel/

Linux용 Rust: Android 바인더 드라이버(v6.18-rc1에 병합됨)
https://rust-for-linux.com/android-binder-driver

안드로이드 커널 Kconfig(바인더 러스트 옵션, binder.impl 선택)
https://android.googlesource.com/kernel/common/+/refs/tags/android15-6.6-2024-07_r44/drivers/android/Kconfig

Android 문서: 바인더 IPC 개요
https://source.android.com/docs/core/architecture/hidl/binder-ipc

NVD: CVE-2019-2215
https://nvd.nist.gov/vuln/detail/CVE-2019-2215

프로젝트 제로 RCA: CVE-2019-2215
https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2019/CVE-2019-2215.html

NVD: CVE-2022-0847
https://nvd.nist.gov/vuln/detail/CVE-2022-0847

CISA 경고: 더티 파이프
https://www.cisa.gov/news-events/alerts/2022/03/10/dirty-pipe-privilege-escalation-vulnerability-linux

NVD: CVE-2024-1086
https://nvd.nist.gov/vuln/detail/cve-2024-1086

레드햇: CVE-2024-1086
https://access.redhat.com/security/cve/cve-2024-1086

게시물을 공유하세요:
관련 게시물
ko_KRKorean