Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-23416-POC — CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5)용 POC - Antonius가 발견한 취약점 | Kitploit
도구/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Vulnerability AnalysisExploitationPapers & ResearchLearning & EducationBinary Exploitation
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5)용 POC - Antonius가 발견한 취약점

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
813개월 전아직 검토되지 않음

CVE-2026-23416 — PoC

mm/mseal: 병합 시 VMA end 값을 올바르게 업데이트

Antonius / Blue Dragon Security 가 발견한 취약점


개요

필드세부 정보
CVE IDCVE-2026-23416
서브시스템mm/mseal — mm/vma.c
영향 범위Linux 커널 6.17 ~ 7.0-rc5
수정 버전Linux 7.0-rc6, stable 백포트 6.18.21, 6.19.11
필요한 접근 권한권한 없는 사용자 (UID 1000, capabilities 없음)
사용된 시스템 콜memfd_create, mmap, mseal
재현성100% 결정적, 1초 미만
예약일2026-01-13
공개일2026-04-02

취약점 설명

이 버그는 mm/mseal.c의 mseal_apply()에 있습니다. mseal(2) 시스템 콜을 적용하기 위해 VMA를 반복 처리할 때, 이 함수는 curr_start와 curr_end를 사용하여 위치를 추적합니다:

root@kitploit:~
/* Simplified pre-fix logic */
curr_end = vma->vm_end;
/* ... process VMA ... */
curr_start = curr_end;  /* advance to next VMA */

문제는 다음과 같습니다: 반복 중에 호출되는 vma_modify_flags()는 VMA를 병합하여 vma->vm_end를 제자리에서 변경할 수 있습니다. 이로 인해 병합 전에 캡처된 curr_end 값이 **오래된 값(stale)**이 됩니다. 다음 반복에서 curr_start는 이제 오래된 curr_end로 설정되어 잘못된 시작 주소가 생성됩니다.

디버그 커널(CONFIG_DEBUG_VM)에서는 이 불일치된 vmg 상태가 다음을 트리거합니다:

root@kitploit:~
VM_WARN_ON_VMG(middle &&
    ((middle != prev && vmg->start != middle->vm_start) ||
     vmg->end > middle->vm_end))

mm/vma.c:830에서 커널 WARNING을 발생시킵니다.

프로덕션 커널(WARN이 no-op으로 컴파일됨)에서는 오래된 curr_start가 조용히 진행됩니다. 즉, VM_SEALED가 눈에 보이는 오류 없이 잘못된 주소 범위에 적용될 수 있으며, 이는 mseal(2)가 제공하도록 설계된 보안 보장을 훼손합니다.

호출 경로

root@kitploit:~
mseal(2)
  └─ do_mseal()              [mm/mseal.c]
       └─ mseal_apply()
            └─ vma_modify_flags()   [mm/vma.c]
                 └─ vma_modify()
                      └─ vma_merge_existing_range()
                           └─ VM_WARN_ON_VMG fires at line 830

근본 원인

root@kitploit:~
/* BEFORE fix — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // captured here
/* ... vma_modify_flags() may merge VMAs, changing vma->vm_end ... */
curr_start = curr_end;            // stale! merge is not reflected

수정 사항은 잠재적 병합 이후 각 반복에서 curr_end = vma->vm_end를 무조건 설정하고, 추가로 입력 범위와 VMA 경계에서 파생된 const 값으로 curr_start/curr_end를 제한합니다:

root@kitploit:~
/* AFTER fix */
curr_end = vma->vm_end;           // unconditional, always fresh

트리거 시 VMA 레이아웃

PoC는 두 번째 mseal() 호출 전에 다음 레이아웃을 구성합니다:

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED after step 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NOT sealed
[0x21e83000 - 0x21e84fff]  VMA-C  (leftover)

두 번째 mseal(m2, 0x70000) 호출은 [0x21da6000 – 0x21e15fff]를 대상으로 하며, 봉인된 VMA-A에서 봉인되지 않은 VMA-B까지 걸쳐 있습니다. mseal_apply() 내부에서는 VMA-B를 처리할 때 VMA-A의 오래된 curr_end가 curr_start로 사용되어 불일치된 vmg 상태가 만들어집니다.


보안 영향

  1. 권한 없는 사용자 공간에서 도달 가능 — memfd_create + mmap + mseal만 필요하며 CAP_*는 필요하지 않습니다.
  2. mseal(2)는 보안 프리미티브 — VMA 불변성을 보호합니다. 적용 과정의 논리 오류는 서로 다른 봉인 상태를 가진 VMA에 걸쳐 적용될 때 VM_SEALED가 조용히 잘못 적용될 수 있음을 의미합니다.
  3. 프로덕션에서 조용히 진행됨 — 디버그가 아닌 커널에서는 불일치 상태가 경고 없이 진행되어 VMA 트리에 잘못된 봉인 상태를 남길 수 있습니다.

개념 증명 (PoC)

파일: cve-2026-23416-poc.c

빌드

root@kitploit:~
gcc -o poc cve-2026-23416-poc.c

실행

root@kitploit:~
./poc

예상 출력 (CONFIG_DEBUG_VM 디버그 커널)

root@kitploit:~
============================================
CVE-2026-23416-POC
Discovered by : Antonius / Blue Dragon Security
  https://bluedragonsec.com
  https://github.com/bluedragonsecurity
============================================
[iter 0]
[iter 1]
...
[+] WARNING triggered N times total

dmesg에서 다음을 확인하세요:

root@kitploit:~
WARNING: CPU: X PID: Y at mm/vma.c:830 vma_merge_existing_range+0x...

요구 사항

  • Linux 커널 6.17 – 7.0-rc5
  • VM_WARN_ON_VMG를 관찰하려면 CONFIG_DEBUG_VM=y 필요 (프로덕션 커널에서는 버그가 여전히 존재하지만 조용히 진행됨)
  • root 또는 특별한 capabilities 불필요

수정 사항

7.0-rc6 및 stable 백포트에 적용된 3개의 업스트림 수정 커밋:

커밋트리
40b3f4700e55stable

수정된 커널 버전: 7.0-rc6, 6.18.21, 6.19.11


참고 자료

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • 기술 분석 글 — Medium (@w1sdom)
  • Blue Dragon Security

공개 타임라인

날짜이벤트
2026-01-13CVE ID 예약
2026-04-02CVE 공개, 수정 커밋 병합

작성자

Antonius (@w1sdom)
Blue Dragon Security — Tangerang, Indonesia
GitHub: bluedragonsecurity


이 PoC는 교육 및 연구 목적으로 공개되었습니다.

도구 다운로드
83737e34b83a
stable
2697dd8ae721stable