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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-98180 — CVE-2026-98180에 대한 개념 증명(PoC) 및 KASAN으로 확인된 KUnit 재현기입니다. 이 취약점은 권한 없는 SYNC_IOC_FILE_INFO를 통해 도달 가능한, 스케줄러를 포함하는 ring 및 VM 객체의 drm/msm use-after-free입니다. | Kitploit
도구/GitHubGitHub/malhyuk/cve-2026-98180
Memory ForensicsVulnerability AnalysisExploitationFuzzingPapers & ResearchLearning & Education
GitHubmalhyuk/cve-2026-98180

CVE-2026-98180

CVE-2026-98180에 대한 개념 증명(PoC) 및 KASAN으로 확인된 KUnit 재현기입니다. 이 취약점은 권한 없는 SYNC_IOC_FILE_INFO를 통해 도달 가능한, 스케줄러를 포함하는 ring 및 VM 객체의 drm/msm use-after-free입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-98180 — drm/msm: 스케줄러를 포함하는 ring/VM 객체의 use-after-free

사용자 공간으로 내보내진 drm_sched_fence는 자신을 생성한 drm_gpu_scheduler에 대한 원시 포인터를 유지한다. drm/msm에서 해당 스케줄러는 struct msm_ringbuffer와 struct msm_gem_vm에 내장되어 있으며, 두 구조체 모두 단순한 kfree()로 해제되었다. 따라서 사용자 공간이 보유한 완료된 fence는 자신의 스케줄러보다 오래 살아남고, 이후 비특권 ioctl인 SYNC_IOC_FILE_INFO가 drm_sched_fence_get_timeline_name()을 통해 해제된 slab 메모리를 역참조하게 만든다.

BUG: KASAN: slab-use-after-free in drm_sched_fence_get_timeline_name
Read of size 8

근본 원인

drm_sched_fence_get_timeline_name()은 return fence->sched->name;이다.

스케줄러 fence ops는 .release 콜백을 유지하므로, fence가 시그널될 때 ops가 분리(detach)되지 않는다. sync_file 또는 drm_syncobj를 통해 내보내진 시그널된 fence는 ring 또는 VM이 해제된 후에도 내장된 스케줄러를 계속 가리킨다. dma-fence 수명 계약에 따르면, 내보내는 쪽은 시그널된 fence를 뒷받침하는 데이터를 RCU 유예 기간 동안 살아 있게 유지해야 하지만, drm/msm은 그렇게 하지 않았다.

수정01c8d1f385f7 — drm/msm: RCU-free the scheduler-containing ring and VM objects
도입 커밋1d8a5ca436ee (drm/msm: Conversion to drm scheduler), 92395af63a99 (drm/msm: Add VM_BIND submitqueue)
백포트6.18-stable, 7.2-stable (Greg Kroah-Hartman, 2026-09-22)
도달 가능성비특권 — fence fd에 대한 SYNC_IOC_FILE_INFO
영향해제된 slab의 UAF 읽기 (정보 유출 / 해제된 객체의 name 포인터 임의 읽기)

수정은 두 포함 객체 모두에 대해 kfree()를 kfree_rcu()로 교체한다:

-	kfree(vm);
+	kfree_rcu(vm, rcu);
...
-	kfree(ring);
+	kfree_rcu(ring, rcu);

재현

이 버그는 일반적인 drm/sched 수명 처리에 있으므로, KUnit 목(mock) 스케줄러를 사용하여 Adreno 하드웨어 없이 재현된다. 이것이 evidence/kasan-report.txt에 있는 증거이다.

cd poc && ./run-repro.sh            # applies 0001-…patch, builds KUnit + KASAN, runs
  • poc/0001-drm-sched-kunit-uaf-repro.patch — 하드웨어 독립적인 KUnit 재현기 (KASAN으로 확인됨)
  • poc/poc_userspace_drm_sched_uaf.c — 영향을 받는 드라이버에서의 비특권 사용자 공간 ioctl 시퀀스
  • poc/kunitconfig, poc/run-repro.sh — 빌드/실행 하네스
  • evidence/kasan-report.txt — KASAN slab-use-after-free 보고서

poc_userspace_drm_sched_uaf.c는 해당 장치를 사용할 수 있었기 때문에 AMD XDNA를 구체적인 예로 삼아 작성되었다. 동일한 형태가 msm(MSM_SUBMITQUEUE / VM_BIND가 sync_file_create() + fd_install()을 통해 완료된 fence를 내보냄)과 nouveau에도 적용된다.

관련 사항

동일한 dma-fence 수명 부류는 코어에서도 수정되었다: 3ed11c671ff7 — dma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3 (Christian König 작성, 이 저장소 작성자가 보고 및 테스트).

크레딧

JongHyuk Kim(MalHyuk) — [email protected]이 발견하고 수정했다. 패치는 Rob Clark과 Greg Kroah-Hartman이 서명했다. Patchwork: https://patchwork.freedesktop.org/patch/750234/

라이선스

재현기 코드는 파생된 커널 소스와 동일하게 GPL-2.0이다.

도구 다운로드