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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-5281 — CVE-2026-5281 (Chrome Dawn WebGPU UAF) 분석, 실습 검증 도구, 취약한 빌드와 패치된 빌드에 대한 재현 환경. | Kitploit
도구/GitHubGitHub/themalwareguardian/cve-2026-5281
Vulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & PracticeArchived
GitHubthemalwareguardian/cve-2026-5281

CVE-2026-5281

CVE-2026-5281 (Chrome Dawn WebGPU UAF) 분석, 실습 검증 도구, 취약한 빌드와 패치된 빌드에 대한 재현 환경.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

⚡ CVE-2026-5281 - Chrome Dawn WebGPU Use-After-Free

CWE Status Fixed In

이 취약점은 우리가 서비스를 제공하는 고객 중 하나에 영향을 미쳤습니다. 이 저장소는 원래 연구에 대한 우리의 기여입니다. 그룹을 위한 중앙 집중식 출발점으로, 이 구성 요소에 영향을 미치는 유사한 취약점이 다시 나타나면 이미 기반이 마련되어 있도록 합니다. 이 저장소는 버그 뒤에 있는 이론, 원래 연구자의 연구 결과에 대한 문서화된 요약, 그리고 실험실 환경에서 노출을 확인하는 실용적인 도구 세트를 한곳에 모아 놓습니다.

참고: 이 연구의 더 많은 내용을 공유하고 싶지만, 회사 제한으로 인해 더 이상 공개할 수 없습니다. 여기에 포함된 모든 것은 검토되었으며 제가 적용받는 어떤 계약도 위반하지 않습니다. 따라서 저장소는 현재 상태로 보관됩니다.




📑 목차

  • 맥락과 목적
  • WebGPU란 무엇인가?
  • Dawn이란 무엇인가?

  • 메모리 기초(스택, 힙, VRAM)
  • Use-After-Free란 무엇인가?
  • 취약점
  • 📂
    • 공개 출처에서 우리가 아는 것
    • JavaScript에서 하드웨어까지
    • UAF가 GPU 메모리에서 어떻게 동작하는가
    • 영향 및 익스플로잇 요구 사항

  • 타임라인
  • 원본 연구
  • 📂
    • 익스플로잇 전략
    • 관찰된 결과

  • 실험실 결과
  • 📂
    • 스크린샷
    • 서비스 거부
    • 연구 상태

  • 리소스
  • 연락처



📌 맥락과 목적

2026년 4월 1일, Google은 21개의 취약점을 해결하는 Chrome 보안 업데이트를 발표했습니다. 그중 하나인 CVE-2026-5281은 공개 시점에 이미 실제 환경에서 적극적으로 악용되고 있었습니다. 사흘 후, CISA는 이 취약점을 KEV(Known Exploited Vulnerabilities) 카탈로그에 추가하고 연방 기관에 패치를 요구하는 구속력 있는 운영 지시를 발령했습니다. 그 시점에 이미 이 취약점은 우리에게 영향을 미쳤습니다.

이 저장소는 한 가지 이유로 존재합니다. 이런 일이 다시 발생할 때 처음부터 시작하는 대신 출발점을 갖기 위해서입니다. 이 저장소는 다음을 한곳에 모아 둡니다:

  • 이론: WebGPU와 Dawn이 무엇인지, Use-After-Free가 하드웨어 수준에서 무엇을 의미하는지, 그리고 이 특정 버그가 왜 위험한지.
  • 연구: 원래 연구자의 익스플로잇 전략과 관찰된 결과에 대한 문서화된 요약.
  • 도구: 버전 탐지기, 전체 WebGPU 공격 체인을 검사하는 취약점 검사기, 로컬 스캐너, 대량 CSV 감사를 위한 플릿(fleet) 스캐너, 실험실 검증을 위한 UAF 트리거.



🌐 WebGPU란 무엇인가?

취약점이 왜 존재하는지 이해하려면, 그 시스템이 무엇을 하도록 만들어졌고 어떤 가정을 기반으로 설계되었는지에서 출발해야 합니다.

  • W3C WebGPU 명세

    WebGPU는 GPU(Graphics Processing Unit)에서 렌더링 및 계산과 같은 작업을 수행하기 위한 API를 제공합니다. WebGPU는 OpenGL이나 OpenGL ES(Embedded Systems)를 노출하려는 시도가 아닙니다. 이는 Direct3D 12, Metal, Vulkan과 같은 현대 API의 아이디어를 바탕으로 구축된 새로운 API입니다.

WebGPU는 브라우저가 수년간 사용해 온 기존 GPU API인 WebGL을 대체하는 현대적인 API입니다. 핵심 차이점은 WebGPU가 처음부터 안전성과 명시적인 리소스 관리를 염두에 두고 설계되었다는 것입니다. 모든 버퍼, 텍스처, 파이프라인의 수명 주기를 직접 선언해야 합니다. 브라우저는 JavaScript와 GPU 하드웨어 사이에서 검증 계층 역할을 합니다.

이 취약점의 중심에 있는 객체는 생성 순서대로 다음과 같습니다:``` GPUAdapter ← represents a physical GPU or software fallback └─ GPUDevice ← your logical connection to the adapter; owns everything ├─ GPUBuffer ← a chunk of GPU-accessible memory ├─ GPUShaderModule ← a compiled WGSL shader program ├─ GPUComputePipeline ← a shader wired to a pipeline layout ├─ GPUBindGroup ← binds buffers as inputs to a pipeline ├─ GPUCommandEncoder ← records a sequence of GPU commands └─ GPUQueue ← submits recorded commands to hardware

여기서 중요한 규칙: 모든 객체는 GPUDevice가 소유합니다. 해당 버퍼를 참조하는 명령이 디바이스에서 아직 실행 중인 동안 버퍼를 파괴하는 것은 스펙상 명시적으로 금지되어 있습니다. Dawn 구현은 이를 감지하고 거부해야 합니다. CVE-2026-5281은 그렇게 하지 못한 사례입니다.



---
---
---



<div id='whatisdawn'/>

## ***⚙️ Dawn이란 무엇인가?***

- **[Dawn - 오픈소스 WebGPU 구현](https://dawn.googlesource.com/dawn)**

	> Dawn은 개발 중인 WebGPU 표준의 오픈소스이자 크로스 플랫폼 구현체입니다. 일부 확장 기능과 함께 WebGPU IDL을 미러링하는 네이티브 C++ API를 제공합니다.

Dawn은 Chrome 내부의 C++ 라이브러리로, WebGPU JavaScript 호출을 플랫폼 네이티브 GPU 명령으로 변환합니다. Windows에서는 D3D12, macOS에서는 Metal, Linux에서는 Vulkan을 대상으로 합니다. Chrome의 JavaScript 엔진과 하드웨어 드라이버 사이에 위치하며, API 호출 검증, 명령 직렬화, 객체 수명 추적, JavaScript로 오류를 다시 전달하는 네 가지 역할을 담당합니다.

CVE-2026-5281은 수명 추적 부분에 존재합니다. 구체적으로는, 해당 버퍼를 참조하는 명령이 하드웨어 큐에서 아직 실행 대기 중인 동안 Dawn이 GPU 버퍼 객체를 얼마나 오래 유지하는지에 관한 것입니다.```
JavaScript (V8)
	│  WebGPU API calls
	▼
Dawn (C++) - validates, serializes, tracks lifetimes, reports errors
	│
	▼
D3D12 (Windows) - Metal (macOS) - Vulkan (Linux)
	│
	▼
GPU hardware driver
	│
	▼
Physical GPU - shader cores, VRAM



🧠 메모리 기초 (Stack, Heap, VRAM)

Use-After-Free를 직관적으로 이해하려면 먼저 메모리에서 데이터가 어디에 저장되는지에 대한 명확한 개념이 필요합니다.``` High addresses ┌────────────────────────────────────┐ │ Kernel space │ The OS and drivers live here. │ │ User-mode code cannot touch it. ├────────────────────────────────────┤ │ Stack │ Function call frames. Fast. │ (grows downward) │ Freed automatically when the │ │ function returns. ├────────────────────────────────────┤ │ Heap │ Dynamic allocations - malloc, new, │ (grows upward) │ smart pointers like Ref. │ │ Freed only when you say so. ├────────────────────────────────────┤ │ BSS / Data / Text │ Globals, constants, compiled code. └────────────────────────────────────┘ Low addresses

Dawn의 C++ 객체(예: GPUBuffer를 뒷받침하는 내부 객체)는 힙에 존재합니다. 이들은 참조 카운트 방식으로 관리됩니다. 즉, 스마트 포인터가 객체에 대한 참조를 보유한 대상의 수를 추적합니다. 그 수가 0에 도달하면 소멸자가 실행되고 메모리는 할당자에게 반환됩니다.

GPUBuffer는 동시에 두 가지 표현을 가지는데, 하나는 CPU 측이고 다른 하나는 GPU 측입니다.```
CPU side (Dawn, system RAM)
	└─ C++ object - metadata, state flags, and a hardware handle
		│
		│  handle: ID3D12Resource* (D3D12) - MTLBuffer (Metal) - VkBuffer (Vulkan)
		▼
GPU side (driver, VRAM)
	└─ Actual memory allocation on the graphics card

JavaScript가 buffer.destroy()를 호출하면 의도된 동작은 객체를 소멸된 것으로 표시하고, 참조 횟수를 줄이고, 하드웨어 핸들을 해제하고, VRAM을 해제하는 것입니다. CVE-2026-5281의 버그는 GPU 명령 큐가 여전히 해당 하드웨어 핸들에 대한 참조를 보유하고 있는 동안 VRAM이 해제되도록 하여, GPU가 더 이상 자신의 것이 아닌 메모리를 적극적으로 읽거나 쓰게 만듭니다.




💀 Use-After-Free란 무엇인가?

  • CWE-416: Use After Free (MITRE)

    해제된 메모리를 참조하면 프로그램이 충돌하거나 예기치 않은 값을 사용하거나 코드를 실행할 수 있습니다. 이전에 해제된 메모리를 사용하면 유효한 데이터의 손상부터 임의 코드 실행에 이르기까지 다양한 부정적 결과가 발생할 수 있습니다.

Use-After-Free는 고정된 3단계 패턴을 따르며, 브라우저 보안에서 가장 지속적으로 악용되는 메모리 안전 버그 클래스 중 하나입니다:```

  1. ALLOCATE - a heap object is created, and a pointer to it is stored somewhere
  2. FREE - the object is destroyed and its memory is returned to the allocator
  3. USE - the stale pointer is read or written after the memory was freed ← the bug
2단계가 끝나면 할당자는 동일한 메모리 영역을 완전히 다른 할당에 넘길 수 있습니다. 공격자가 해제된 영역에 무엇이 들어갈지 제어할 수 있다면(힙 그루밍(heap grooming)이라는 기법), 스테일 포인터가 다시 읽어 들이는 값을 제어할 수 있습니다. 이것이 메모리 안전 버그가 코드 실행으로 이어지는 방식입니다.

GPU 측 UAF는 CPU 측 UAF보다 관찰하기 어렵습니다. 그 이유는 다음과 같습니다.
도구 다운로드