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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CHARON — CHARON — pre-built PoC for CVE-2026-46333 (Linux ptrace mm==NULL fd theft) | Kitploit
도구/GitHubGitHub/karazajac/charon
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingLearning & EducationBinary Exploitation
GitHubkarazajac/charon

CHARON

CHARON — pre-built PoC for CVE-2026-46333 (Linux ptrace mm==NULL fd theft)

저장소 보기
723개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
root@kitploit:~
  ____  _   _    _    ____   ___  _   _
 / ___|| | | |  / \  |  _ \ / _ \| \ | |
| |    | |_| | / _ \ | |_) | | | |  \| |
| |___ |  _  |/ ___ \|  _ <| |_| | |\  |
 \____||_| |_/_/   \_\_| \_\\___/|_| \_|

  페리를 타고 exit-mm()의 스틱스 강을 건너다
  CVE-2026-46333  /  Linux <= 6.12.89

"살아 계신 하나님의 손에 빠지는 것은 두려운 일입니다." — 히브리서 10:31

이것이 무엇인가

CVE-2026-46333에 대한 작고 의존성 없는 PoC입니다.
__ptrace_may_access의 mm==NULL 우회는 2026년 5월 15일에 Qualys가 공개했습니다. Charon은 죽어가는 SUID-root 프로세스에 대해 pidfd_getfd(2)를 경쟁 조건으로 사용하여, do_exit()의 짧은 mm-NULL 윈도우를 통해 열린 /etc/shadow 파일 디스크립터를 획득합니다. 영향을 받는 시스템에서 권한 없는 사용자로 실행하면 /etc/shadow를 stdout으로 출력합니다.

root@kitploit:~
$ ./charon
[banner on stderr]
[*] lure /usr/bin/chage   target /etc/shadow
root:$y$j9T$ztS5H...$hz9W87TlqxEW...:...
daemon:*:20582:0:99999:7:::
bin:*:20582:0:99999:7:::
...

일반적인 성공률: 4코어 VM에서 1초 미만, 스모크 테스트에서 약 137회 시도.

30초 요약 버그

__ptrace_may_access()는 task->mm == NULL일 때 덤프 가능성 검사를 생략합니다. 이 빠른 경로는 커널 스레드(swapper 등)를 위해 작성되었으며, 이들은 합법적으로 mm이 없어야 하고 ptrace되어서는 안 됩니다. 그러나 do_exit()은 exit_files() 전에 exit_mm()을 실행하므로, 사용자 공간의 SUID 프로세스가 잠시 다음과 같은 상태가 됩니다:

  • task->mm == NULL (mm이 회수됨) → 덤프 가능 검사 건너뜀
  • 파일 테이블이 여전히 존재 → fd를 계속 얻을 수 있음
  • creds는 setreuid() 이후의 드롭을 반영 → 접근 검사 통과

pidfd_getfd(2)는 그 접근 검사를 신뢰하고 공격자에게 SUID 프로세스의 열린 파일 디스크립터를 넘겨줍니다.

root@kitploit:~
do_exit()
  ├── exit_mm()      ← task->mm = NULL
  ├── ...            ← __ptrace_may_access()는 이제 거짓말
  └── exit_files()   ← fd 테이블 회수

Jann Horn은 2020년 10월 lore.kernel.org에서 FD 도난 형태를 지적했습니다. 수정 사항은 약 6년 동안 메인테이너 검토에 머물렀으며, Qualys가 다시 대기열 앞으로 가져왔습니다.

업스트림 수정: 31e62c2ebbfd (Linus 2026-05-14). 2026-05-15 기준으로 백포트는 linux-6.12.y 또는 linux-6.6.y 안정 브랜치에 도착하지 않았습니다.

영향을 받는 커널

안정 트리상태
linux-6.12.y (≤ 6.12.89)❌ 취약
linux-6.6.y (수정 전 백포트)❌ 취약
mainline ≥ 6.15-rc1✅ 패치됨 (31e62c2ebbfd)

백포트가 도착하면 PR/롤링 상태 테이블이 업데이트됩니다.

빌드

root@kitploit:~
# 작은 38 KB 정적 바이너리 (권장)
sudo apt-get install musl-tools
make static

# 또는 일반 glibc 빌드
make

출력: 단일 ELF 파일 ./charon.

실행

root@kitploit:~
./charon                     # /etc/shadow 덤프 (기본)
./charon -q                  # 배너/진행 없이 shadow만 stdout 출력
./charon -v                  # 시도별 + 최종 통계 출력
./charon -r 5000             # 느린 시스템을 위한 더 많은 인내심
./charon -t /etc/ssh/ssh_host_ecdsa_key   # 다른 대상 (ssh-keysign 미끼 사용)
./charon -a                  # 내장 미끼가 실패할 경우 SUID/SGID 미끼 자동 탐색
./charon -L                  # 시도 없이 후보 미끼 목록만 표시
./charon --help

자동 탐색

--auto는 /usr/bin, /usr/sbin, /usr/local/{bin,sbin}, /usr/lib/openssh, /usr/libexec, /bin, /sbin을 탐색하며, 모든 SUID/SGID 일반 파일(su, sudo, newgrp, pkexec와 같은 대화형 미끼 제외)을 찾아 요청된 대상에 대해 각각을 미끼로 시도합니다. 미끼당 예산은 빡빡합니다(5 라운드 × 2000 내부) 따라서 일치하는 미끼가 없더라도 전체 스캔은 약 10초 안에 완료됩니다.

--list-baits는 읽기 전용 버전으로, 익스플로잇을 실행하지 않고 동일한 후보를 열거합니다. 어떤 배포판이 어떤 미끼를 제공하는지 조사하는 데 유용합니다.

종료 코드

코드의미
0성공 — 파일 내용이 stdout으로 출력됨

미끼

Charon은 네 가지 알려진 SUID 미끼를 함께 제공합니다:

미끼를 추가하는 것은 charon.c의 lures[] 배열에 3줄을 수정하는 것만으로 가능합니다.

배포판이 백포트를 제공할 때까지의 완화 조치

  • 31e62c2ebbfd를 직접 적용하십시오.
  • 프로덕션 호스트에서 seccomp를 통해 pidfd_getfd(2)를 비활성화하십시오.
  • 비특권 사용자가 암호 에이징을 조회할 필요가 없는 경우 chage와 passwd의 setuid 비트를 제거하십시오.
  • 컨테이너화된 워크로드의 경우, 호스트에서 no_new_privs를 활성화하면 기본 요소가 완전히 차단됩니다. 컨테이너 내부의 모든 "SUID"가 무효화되어 Charon이 먹잇감을 찾지 못합니다.

kernelctf VRP 후보가 아님

Google kernelctf VRP 챌린지 VM은 플레이어의 bash를 clone_newuser:true (uid 0 매핑 해제), chroot:/chroot, no_new_privs:1이 있는 nsjail 샌드박스 내에서 실행합니다. no_new_privs 아래에서는 setuid 비트가 무효화되므로 샌드박스 내에 실제 SUID 먹잇감이 없으며, /flag는 chroot 외부의 호스트에 있습니다. 따라서 Charon은 kCTF VRP에서 이길 수 없습니다. 이는 베어메탈 Debian / Ubuntu / RHEL 계열 설치에서 합법적인 Linux LPE로 남아 있습니다.

유래

  • 버그는 Qualys에 의해 발견 및 공개 → oss-security 2026-05-15.
  • 참조 PoC: @0xdeadbeefnetwork.
  • Charon은 미끼와 경쟁 루프를 단일 경화된 바이너리로 재작성하고, CLI 편의성, 패치된 커널 자동 탐지, 배포판별 미끼 폴백을 추가합니다.

라이선스

교육 및 승인된 방어 목적으로만 사용하십시오.

root@kitploit:~
                        ⛵ STYX ⛵
              ╔══════════════════════════════╗
              ║  do_exit():                  ║
              ║   ├── exit_mm()   ← task->mm ║
              ║   │                = NULL    ║
              ║   ├── ...      ←  ferry      ║
              ║   └── exit_files()           ║
              ╚══════════════════════════════╝
도구 다운로드
배포판
커널
상태 (2026-05-15)
Debian trixie6.12.86+deb13❌
AlmaLinux 10.16.12.0-124.55.3❌
Ubuntu 26.047.0.0-15⚠️ 확인 필요
Fedora 447.0.4-200⚠️ 확인 필요
1이 시스템에서 요청된 파일을 여는 SUID 미끼가 없음
2커널이 패치된 것으로 보임 (CVE-2026-46333이 닫힘)
3시도 횟수 소진 (드물게 발생; -r 5000 시도)
4CLI / IO 오류
바이너리여는 파일배포판 범위
/usr/bin/chage (chage -l <user>)/etc/shadow대부분 Debian, Ubuntu, Fedora
/usr/sbin/chage/etc/shadowRHEL / Rocky / Alma 계열
/usr/bin/passwd (passwd -S <user>)/etc/shadow대부분 배포판
/usr/lib/openssh/ssh-keysign/etc/ssh/ssh_host_*_keyHostbasedAuthentication이 활성화된 배포판