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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/eddinos2/cve-2026-78938
Vulnerability AnalysisExploitationWeb SecurityBinary Exploitation
GitHubeddinos2/cve-2026-78938

CVE-2026-78938

CVE-2026-78938에 대한 근본 원인 분석 및 동작하는 익스플로잇으로, 압축 힙 내 임의 읽기/쓰기로 이어지는 V8 TurboFan 타입 혼동입니다. 크래시 PoC 및 런타임 주소 지정 프리미티브를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-78938 — V8 TurboFan CheckMaps 인스턴스 마이그레이션 타입 혼동

CVE-2026-78938에 대한 근본 원인 분석 및 익스플로잇입니다. 이는 Chrome 152.0.7977.64(V8 15.2.124.18)에서 수정된 V8 TurboFan 로드 제거(load elimination)의 타입 혼동 취약점입니다. 이 버그는 실제 환경에서 악용된 것으로 보고되었습니다.

이 익스플로잇은 버그를 out-of-bounds Float64Array로 변환한 다음, 이를 통해 addrof/fakeobj 및 V8 압축 힙(compressed heap)에 대한 임의 읽기/쓰기를 수행합니다. 초기 쓰기 이후의 모든 작업은 런타임에 위치가 결정됩니다. R/W 단계에는 하드코딩된 힙 오프셋이 없습니다.

  • 영향을 받는 버전: Chrome 152.0.7977.54 (V8 15.2.124.13, 커밋 8ec91943)
  • 수정된 버전: Chrome 152.0.7977.64/.65 (V8 15.2.124.18, 커밋 6aacaf62)
  • 수정 커밋: 50597b0bb48a — "[compiler] Invalidate tracked fields on CheckMaps with instance migration"

macOS arm64에서 두 버전 모두 로컬로 빌드한 d8로 테스트했습니다.

목차

파일설명
pocs/crash.js최소 트리거. 취약한 빌드에서는 SIGBUS, 패치된 빌드에서는 정상 종료.
pocs/rw_final.js전체 익스플로잇, 1단계: 트리거 + OOB 배열. 바이트 고정됨 — 아래 "재현" 참조.
pocs/logic_final.js전체 익스플로잇, 2단계: addrof/fakeobj/임의 R\W, 1단계에서 런타임에 로드됨.
WRITEUP.md전체 근본 원인 분석 및 익스플로잇 노트.

재현

두 d8 버전을 빌드한 후(정확한 커밋과 GN 인자는 WRITEUP.md 참조), 저장소 루트에서 다음을 실행합니다:

root@kitploit:~
# crash PoC: 취약 버전에서는 SIGBUS, 패치 버전에서는 정상 종료
out/vuln/d8    --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/crash.js
out/patched/d8 --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/crash.js

# 전체 R/W: 취약 버전에서 동작, 패치 버전에서는 정상적으로 중단
out/vuln/d8 --allow-natives-syntax --homomorphic-ic --max-valid-polymorphic-map-count=4 pocs/rw_final.js

취약한 빌드에서 기대되는 출력:

root@kitploit:~
[+] OOB Float64Array len=0x7f000004
[+] after write: victim2.z = 2.5
[+] fakeobj(hn|1) typeof=number
[+] ALL PRIMITIVES VERIFIED

중요한 두 가지 사항:

  1. 플래그가 필수입니다. --homomorphic-ic --max-valid-polymorphic-map-count=4는 다형성 맵 피드백을 형성하여 최적화된 코드에서 마이그레이션 경로가 실행되도록 합니다. 이 플래그가 없으면 트리거는 조용히 아무것도 하지 않습니다.
  2. pocs/rw_final.js는 바이트 단위로 고정되어 있습니다. 단일 손상 쓰기는 피해 배열이 할당된 위치에 따라 달라지는 힙 상대 오프셋에 도달하며, 이는 다시 스크립트의 정확한 바이트와 경로에 따라 달라집니다. 파일을 편집하거나 이름을 바꾸면 고정된 오프셋이 무효화됩니다. 재보정 방법은 WRITEUP.md에 문서화되어 있습니다. pocs/logic_final.js는 트리거가 발생한 후에 로드되므로 자유롭게 편집할 수 있습니다.

참고 사항

  • 시연된 프리미티브는 V8 샌드박스 내부(압축 힙)에서의 임의 읽기/쓰기입니다. 코드 실행을 얻으려면 추가로 샌드박스 탈출(예: Wasm 인스턴스의 RWX 코드 영역 손상)이 필요하며, 이는 이 문서의 범위를 벗어납니다.
  • 익스플로잇의 모든 주소는 런타임에 발견됩니다. 유일하게 고정된 값은 위에서 설명한 이유로 pocs/rw_final.js의 단일 쓰기 오프셋뿐입니다.

이 저장소는 교육 및 방어 연구 목적으로 제공됩니다. 이 버그는 현재 Chrome에서 패치되었으며, 세부 사항은 V8 소스 트리에 공개되어 있습니다.

도구 다운로드