Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-38502-Linux-LPE — CVE-2025-38502 연구 저장소로, tail call을 통한 Linux 커널 BPF cgroup 로컬 스토리지의 out-of-bounds 접근으로 로컬 권한 상승이 가능한 취약점입니다. | Kitploit
도구/GitHubGitHub/abraxas/cve-2025-38502-linux-lpe
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationReverse EngineeringPapers & ResearchLearning & EducationBinary Exploitation
GitHubabraxas/cve-2025-38502-linux-lpe

CVE-2025-38502-Linux-LPE

CVE-2025-38502 연구 저장소로, tail call을 통한 Linux 커널 BPF cgroup 로컬 스토리지의 out-of-bounds 접근으로 로컬 권한 상승이 가능한 취약점입니다.

저장소 보기
21813일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ABRAXAS LABS — CVE-2025-38502

Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null

CVE-2025-38502

Linux 커널 BPF cgroup 로컬 스토리지의 tail call을 통한 범위 초과 접근

CVECVE-2025-38502
CWECWE-125 — 범위 초과 읽기
VendorLinux kernel
Componentkernel/bpf/core.c, include/linux/bpf.h (cgroup 로컬 스토리지 + tail call)
Impact로컬 커널 메모리 손상; 패치되지 않은 커널에서는 권한 상승이 범위에 포함됨
Attack vector로컬 (AV:L)
Privileges낮음 (PR:L) — CGROUP_SKB 유형의 BPF 프로그램(또는 이에 준하는 cgroup 연결 프로그램)을 로드할 수 있는 프로세스
User interaction없음
CVSS 3.1 (kernel.org CNA)7.8 HIGH — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 3.1 (NVD)7.1 HIGH — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
Public2025년 8월 16일
Upstream fix6.17-rc1의 abad3d0; 6.16.1, 6.12.46, 6.6.105, 6.1.151, 5.15.192로 백포트됨

연구 / 교육 목적으로만 사용하십시오. 이 저장소를 호스팅하는 주체와 대상 시스템의 소유자 모두로부터 명시적인 서면 허가를 받지 않은 한, 이 저장소의 자료를 어떤 호스트에 대해서도 실행, 배포 또는 사용하지 마십시오. 실제 환경에서 발견되었습니다.

소스 파일 이름 CVE-2025-3850-Linux-LPE-Abaraxas-Labs.c는 식별자를 잘라서 표기합니다. 공개된 레코드는 CVE-2025-38502입니다. Linux CVE CVE-2025-3850은 존재하지 않습니다.


목차

  • 요약
  • 영향
  • 근본 원인
  • 영향받는 커널 버전
  • 배포판 상태
  • 전제 조건
  • 수정 사항
  • 실행 중인 시스템 확인
  • 완화 조치
  • 저장소 구조
  • 참고 자료
  • 연락처
  • 면책 조항

요약

Lonial은 cgroup BPF 로컬 스토리지가 tail call을 넘어 범위를 벗어나 접근될 수 있음을 보고했습니다.

eBPF 검증기는 각 프로그램을 개별적으로 타입 검사합니다. 런타임에서 bpf_get_local_storage()는 현재 실행 중인 프로그램의 맵을 조회하지 않습니다. 대신 current->bpf_ctx → bpf_cg_run_ctx → prog_item->cgroup_storage[]에서 cgroup 스토리지 포인터를 읽습니다. 이 슬롯은 tail call로 진입한 프로그램이 아니라 원래 연결된 프로그램에 의해 채워집니다.

프로그램 A(작은 BPF_MAP_TYPE_CGROUP_STORAGE 값 크기)가 프로그램 B(큰 값 크기)를 tail call하면, B의 bpf_get_local_storage()는 여전히 A의 더 작은 버퍼를 반환합니다. 검증기가 B의 맵에 대해 허용한 접근은 A의 할당 끝을 넘어서게 됩니다.

이 결함은 Linux 5.9에서 7d9c342 (bpf: Make cgroup storages shared between programs on the same cgroup)에 의해 도입되었습니다. 이는 bpf_map_owner에 storage_cookie[]를 추가하여 수정되었으며, 이로써 tail call 조합은 피호출자가 호출자와 동일한 cgroup 스토리지 맵을 사용하거나 아무것도 사용하지 않을 때만 허용됩니다.


영향

이것은 로컬 커널 힙 범위 초과 접근입니다. 심각도 점수는 이 프리미티브가 "읽기 전용 DoS"인지 완전한 메모리 손상인지에 대한 의견 차이로 인해 벤더마다 다릅니다:

출처점수무결성비고
kernel.org CNA / cve.org7.8 HIGH높음C:H/I:H/A:H — 버그를 완전한 로컬 영향으로 취급
NVD7.1 HIGH없음C:H/I:N/A:H — 기밀성 + 가용성
UbuntuMedium (7.1)—USN-7909
Red Hat4.0 LOW없음C:N/I:N/A:L — 제한적 가용성으로 평가
Amazon Linux4.0 Medium없음Red Hat과 동일한 벡터
SUSE6.1 Moderate없음일부 SLE 15 스트림은 WONTFIX로 표시됨

실제로 이것이 의미하는 바:

  • 기밀성. 인접한 kmalloc 객체에 대한 OOB 읽기는 커널 포인터(KASLR 슬라이드), 힙 쿠키, 인접 구조체 내용을 유출할 수 있습니다.
  • 무결성. 동일한 불일치는 피호출자의 맵을 기준으로 한 크기 지정 쓰기이며, 호출자의 더 작은 버퍼에 대해 수행됩니다. 인접한 힙 객체(예: 동일한 slab/order에 스프레이된 struct bpf_array)가 손상될 수 있습니다.
  • 가용성. 잘못된 대상에 대한 쓰기는 곧바로 커널 oops / panic을 유발합니다.
  • 권한. BPF cgroup 프로그램을 로드할 수 있는 패치되지 않은 커널에서, 이 부류의 힙 OOB는 로컬 권한 상승 프리미티브로 사용되어 왔습니다(map->ops 덮어쓰기, 헬퍼 하이재킹, commit_creds / 네임스페이스 전환). 이것이 이 트리가 해당 이슈를 LPE로 표기하는 이유입니다. Red Hat의 낮은 점수는 버그의 부재가 아니라 제품별 평가를 반영합니다.

이 버그는 네트워크에 노출된 서비스를 필요로 하지 않습니다. 로컬입니다. TTY, setuid 헬퍼, 사용자 상호작용을 필요로 하지 않습니다.


근본 원인

검증기 vs 런타임

각자 고유한 BPF_MAP_TYPE_CGROUP_STORAGE(공유 플레이버, BPF_CGROUP_STORAGE_SHARED)를 가진 두 개의 cgroup BPF 프로그램:

프로그램역할스토리지 값 크기
A연결됨 / tail call 호출자작음 (예: 주어진 kmalloc order에 맞음)
Btail call 대상큼 (검증기가 이 크기까지 접근을 허용)

검증기는 A를 A의 맵에 대해, B를 B의 맵에 대해 검사합니다. 둘 다 통과합니다.

런타임에서 헬퍼는 다음을 수행합니다:

ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx);
storage = ctx->prog_item->cgroup_storage[stype];
if (stype == BPF_CGROUP_STORAGE_SHARED)
    ptr = &READ_ONCE(storage->buf)->data[0];
else
    ptr = this_cpu_ptr(storage->percpu_buf);

prog_item은 bpf_tail_call 이후 현재 실행 중인 프로그램이 아니라 cgroup 실행을 시작한 프로그램의 배열 항목입니다. 따라서 B는 A의 스토리지 객체에서 동작합니다.

크기가 중요한 이유

bpf_cgroup_storage_alloc()은 맵의 value_size로 백킹 버퍼의 크기를 결정합니다. A의 버퍼는 B의 검증된 접근에 비해 너무 작습니다. 그 결과는 전형적인 제어 전환을 넘어선 맵 정체성의 타입 혼동입니다 — 다른 BPF "헬퍼가 검증기가 본 것과 다른 맵을 보는" 문제들과 같은 계열입니다.

cgroup의 공유 스토리지

커밋 7d9c342는 cgroup 스토리지를 동일한 cgroup에 연결된 프로그램 간에 공유되도록 만들었습니다. 이 공유가 바로 런 컨텍스트 슬롯을 프로그램별 조회가 아닌 단일 포인터로 만드는 원인이며, 5.9 이전 커널이 영향을 받지 않는 이유입니다.

인접 객체

BPF_PROG_TYPE_CGROUP_SKB 프로그램에 대한 BPF_PROG_TEST_RUN은 테스트 기간 동안 cgroup 스토리지를 할당합니다. 이 할당은 동일한 크기 클래스에서 최근에 해제된 다른 것들 옆의 커널 힙에 위치합니다 — 여기에는 value_size가 동일한 kmalloc order에 맞도록 선택된 struct bpf_array 맵도 포함됩니다. 따라서 스토리지 버퍼로부터의 OOB는 인접한 배열 맵의 bpf_map 필드(ops, RCU 리스트, value[])에 도달할 수 있습니다.

이 힙 레이아웃 세부 사항이 바로 "단순한 OOB 읽기" 권고와 LPE 분석이 동일한 CVE를 설명할 수 있는 이유입니다.


영향받는 커널 버전

도입: Linux 5.9 (7d9c3427894fe70d1347b4820476bf37736d2ff0)
영향 없음: 5.9 이전의 모든 커널

시리즈영향받음최초 수정
5.9 – 5.155.9부터 5.15.191까지5.15.192 (c1c74584…)
5.16 – 6.15.16부터 6.1.150까지6.1.151 (66da7cee…)
6.2 – 6.66.2부터 6.6.104까지6.6.105 (7acfa07c…)
6.7 – 6.126.7부터 6.12.45까지6.12.46 (41688d1f…)
6.13 – 6.166.13부터 6.16.0까지6.16.1 (19341d5c…)
mainline수정이 반영될 때까지6.17-rc1 (abad3d0b…)

한 줄 요약:

/* CVE-2025-38502: affected 5.9–5.15.191, 5.16–6.1.150, 6.2–6.6.104, 6.7–6.12.45, 6.13–6.16.0; fixed in 5.15.192, 6.1.151, 6.6.105, 6.12.46, 6.16.1, 6.17-rc1 */

일부 stable에서 여전히 미해결: Debian의 커널 트래커는 5.10 업스트림-stable / bullseye 5.10을 needed로 표시했습니다. 모든 5.10.y가 패치되었다고 가정하지 마십시오.

배포판 ABI 번호는 거짓말을 합니다. Ubuntu 5.15.0-163은 5.15.0이 업스트림 5.15.192보다 오래되어 보이지만 패치된 5.15입니다. 위 표와 uname -r을 비교하지 말고 패키지 체인지로그 / USN / DSA / ALAS / RHSA를 비교하십시오.


배포판 상태

위 범위의 커널을 출시한 모든 배포판은 abad3d0(또는 이에 대응하는 stable 커밋)을 백포트할 때까지 범위에 있었습니다. 이것은 배포판별 패치가 아닌 일반적인 BPF 코드입니다.

패치 전까지 일반적으로 영향받음

배포판범위에 있었던 릴리스 / 커널
Ubuntu22.04 LTS (5.15), 24.04 LTS (6.8), 25.04 (EOL이지만 여전히 needed). 20.04 HWE 5.15.
Debian11 bullseye (5.10), 12 bookworm (6.1), 13 trixie (6.12)
RHEL 9 / 10, Rocky, Alma, FedoraRHEL 9 ≈ 5.14; RHEL 10 ≈ 6.12; Fedora 롤링 5.9–6.16
SUSE / openSUSESLE Micro 5.3/5.4; 일부 SLE 15 스트림 WONTFIX
Amazon Linux 2023기본 커널 및 kernel6.12
Amazon Linux 2 extras5.10 extra (수정 계획 없음) 및 5.15 extra
Arch, Gentoo, Tumbleweed5.9와 6.16.1 / 6.17-rc1 수정 사이의 롤링 커널

영향 없음 (5.9보다 오래된 GA 커널)

  • Ubuntu 20.04 GA (5.4), 18.04, 16.04
  • RHEL 8 기본 (4.18)
  • Amazon Linux 1; Amazon Linux 2 core / 5.4 extra

알려진 패치된 패키지 버전 (예시)

배포판수정된 패키지 (참고용)권고
Ubuntu 22.04linux 5.15.0-163.173USN-7909
Ubuntu 24.04linux 6.8.0-106.106동일
Debian 12linux 6.1.153-1DSA-6009-1
Debian 13linux 6.12.48-1DSA-6008-1
Debian 11 (6.1 백포트)linux-6.1 6.1.153-1~deb11u1DLA-4328-1
Amazon Linux 2023kernel / kernel6.12, 2025-09-29ALAS2023-2025-1210 / 1208
Amazon Linux 2 5.15 extra2025-09-29ALAS2KERNEL-5.15-2025-091

Ubuntu 26.04 / 25.10은 영향 없음으로 표시됩니다(수정 이후 분기됨). Ubuntu 25.04는 EOL에 도달했지만 여전히 needed입니다.


전제 조건

호스트가 영향받는 버전과 일치하더라도 여전히 도달 가능하지 않을 수 있습니다. 유용한 확인 사항:

도구 다운로드