Chrome WebGPU Dawn 제로데이와 브라우저 렌더링 엔진 보안 대응
CVE-2026-5281 Dawn WebGPU UAF 제로데이의 원인과 Chrome 긴급 패치, Chromium 기반 브라우저의 대응 전략을 정리한다.
2026-08-14 · 최초 발행 2026-05-05
Chrome 146 긴급 업데이트에서 확인된 WebGPU 제로데이
Google은 2026년 3월 31일 Chrome 146.0.7680.177/178 긴급 보안 업데이트를 배포했다. 이 릴리스는 21개 취약점을 수정했으며, Dawn WebGPU 구현체에서 발견된 CVE-2026-5281은 야생 환경에서 악용된 제로데이로 확인됐다. 2026년 Chrome에서 패치된 네 번째 제로데이이기도 하다.
CISA는 이 취약점을 2026년 4월 1일 Known Exploited Vulnerabilities 카탈로그에 추가했고, 연방 기관의 패치 기한을 2026년 4월 15일로 지정했다.
| 항목 | 내용 |
|---|---|
| 패치 버전 | 146.0.7680.177/178 (Windows·macOS), 146.0.7680.177 (Linux) |
| 패치 일자 | 2026년 3월 31일 |
| 수정 취약점 수 | 21개 |
| 제로데이 CVE | CVE-2026-5281 (Dawn WebGPU UAF) |
| 심각도 | High |
| CISA KEV 등재 | 2026년 4월 1일 |
| 연방 패치 기한 | 2026년 4월 15일 |
| 영향 브라우저 | Chrome, Edge, Brave, Opera, Vivaldi (Chromium 기반 전체) |
앞선 긴급 패치는 CSS 처리 UAF인 CVE-2026-2441(2월), Skia 2D 그래픽 라이브러리 OOB 쓰기인 CVE-2026-3909(3월), V8 JavaScript 엔진의 부적절한 구현인 CVE-2026-3910(3월)이었다. 세 취약점 역시 실제 공격에서 악용된 제로데이였다.
Dawn이 WebGPU 호출을 GPU 명령으로 바꾸는 경로
WebGPU는 웹사이트가 기기의 GPU 하드웨어를 활용할 수 있도록 설계된 그래픽 API다. 3D 렌더링, 머신러닝 추론, 연산 집약적 시각 효과에 사용된다. Chrome은 Dawn이라는 C++ 오픈소스 라이브러리로 WebGPU API 호출을 플랫폼별 GPU 명령으로 변환한다.
Dawn은 Chromium 렌더러 프로세스 안에서 WebGPU 표준을 구현한다. 렌더러는 Chrome 샌드박스 구조에서 격리된 프로세스이므로, Dawn 계층의 취약점은 렌더러 프로세스 내 코드 실행으로 이어질 수 있다.
CommandBuffer 수명 동기화가 깨지는 지점
CVE-2026-5281의 원인은 CommandBuffer 객체의 비동기 GPU 실행 상태와 JavaScript 가비지 컬렉션 수명 사이에서 발생한 동기화 실패다.
JavaScript가 gpuDevice.queue.submit()을 빠르게 연속 호출하면 Dawn은 렌더러 프로세스에 각 CommandBuffer 객체를 할당하고 GPU 커맨드 큐에 제출한다. 일부 경로는 참조 카운팅 객체의 원시 포인터(raw pointer)를 보유하면서 다른 경로가 참조를 유지한다고 가정한다. 경쟁 조건에서 이 가정이 성립하지 않으면 CommandBuffer가 해제된 뒤에도 GPU 커맨드 큐에 댕글링 포인터가 남는다.
이 취약점은 다음 흐름에서 악용될 수 있다.
- 렌더러 프로세스 장악 (V8 또는 미디어 파서 취약점 활용)
- 조작된 WebGPU CommandBuffer를 급격히 연속 제출
- 객체 해제 타이밍을 제어해 댕글링 포인터 상태 유도
- UAF를 통해 힙 메모리 레이아웃 제어 → 임의 코드 실행
렌더러 프로세스에서 시작한 뒤 샌드박스 탈출(sandbox escape)로 이어지는 2단계 공격 체인에서는 이 취약점이 두 번째 단계로 쓰일 수 있다.
반복된 제로데이가 드러낸 공격 표면
2026년 3개월 동안 4개의 제로데이가 패치된 흐름은 공격 표면의 크기만으로 설명하기 어렵다.
WebGPU, WebAssembly, WebRTC처럼 저수준 접근을 제공하는 API가 추가될수록 C++ 계층의 메모리 안전성 취약점 가능성도 커진다. 상업적 스파이웨어 벤더가 Chrome 제로데이를 거래하거나 자체 개발하는 시장 역시 이 문제와 맞물린다. Google Threat Analysis Group(TAG)은 여러 CVE에서 스파이웨어 벤더를 배후로 지목했다.
Chromium 생태계의 공통 기반도 대응 범위를 넓힌다. Chrome 취약점은 Edge, Brave, Opera, Vivaldi 등 Chromium 엔진을 사용하는 브라우저 전반에 동일하게 영향을 미친다.
렌더링 엔진에서 자주 만나는 메모리 오류
| 유형 | 설명 | 대표 CVE | 위험도 |
|---|---|---|---|
| Use-After-Free (UAF) | 해제된 메모리 재참조 | CVE-2026-5281 (Dawn), CVE-2026-2441 (CSS) | 매우 높음 |
| Out-of-Bounds Write | 배열 경계 밖 쓰기 | CVE-2026-3909 (Skia) | 높음 |
| Out-of-Bounds Read | 배열 경계 밖 읽기 | CVE-2025-14766 (V8) | 중간~높음 |
| Type Confusion | 객체 타입 오판 | CVE-2021-30551 (V8 JIT) | 매우 높음 |
| Heap Overflow | 힙 버퍼 오버플로우 | GPU 셰이더 파서 계열 | 높음 |
| Iterator Invalidation | 반복자 무효화 | CVE-2026-2441 (CSS) | 높음 |
Dawn/WebGPU는 상대적으로 새 공격 표면이다. GPU와 CPU 메모리 공간 사이에서 대량의 비동기 데이터를 처리하므로 객체 수명 추적이 복잡하고 경쟁 조건이 발생하기 쉽다.
V8의 JIT(Just-In-Time) 컴파일러도 별도의 위험 지점이다. JIT는 JavaScript 실행 성능을 높이기 위해 런타임에 코드를 네이티브 기계어로 변환한다. 특정 JavaScript 함수의 타입 가정(type assumption)을 토대로 최적화된 코드를 만들기 때문에, 공격자가 이 가정을 의도적으로 위반해 deoptimization을 유도하면 타입 혼동(type confusion)이 발생할 수 있다.
이 상태에서는 힙 객체를 비정상적으로 읽거나 쓸 수 있다. JIT 취약점은 렌더러 프로세스에서 안정적인 임의 코드 실행 원시 연산(RCE primitive)을 제공할 수 있으며, Dawn UAF 같은 두 번째 취약점과 결합하면 샌드박스 탈출로 이어진다.
발견부터 KEV 등재까지의 대응 흐름
Project Zero는 브라우저·OS·하드웨어 취약점을 선제적으로 발굴하는 Google의 전담 연구팀이다. 90일 공개 정책(90-day disclosure policy)은 벤더에 패치 배포 시간을 주는 동시에 조기 공개를 통해 패치 동기를 부여한다.
TAG는 야생 환경의 실제 악용을 관찰한다. CVE-2026-5281이 실제 공격에 사용됐다는 확인도 TAG의 관찰에서 비롯됐다.
Google은 제로데이가 확인되면 통상 72시간 이내 Stable 채널에 패치를 배포한다. CVE-2026-5281은 악용 확인 뒤 약 48시간 만에 패치가 배포됐다. Chrome은 Stable, Beta, Dev, Canary 네 채널을 운영하며, 보안 수정은 Canary에서 먼저 검증된다. 긴급 패치는 일반 릴리스 주기를 건너뛰고 Stable에 직접 배포된다.
WebGPU 노출을 줄이기 위한 운영 선택지
WebGPU는 WebGL의 후속 API로 GPU 하드웨어에 더 풍부하게 접근할 수 있게 하지만, 보안 복잡도도 함께 높인다.
WebGPU 명세는 모든 WGSL 셰이더 코드를 컴파일 시 엄격히 검증하도록 요구한다. Tint 셰이더 컴파일러는 악성 WGSL 코드가 메모리 손상으로 이어지는 것을 막아야 한다. CVE-2026-3062에서 Tint 컴파일러 자체의 메모리 손상 취약점이 발견된 점은 이 방어선에도 한계가 있음을 보여준다.
GPU 작업을 별도 프로세스에 격리하는 방식은 이상적이지만, GPU 드라이버의 복잡성과 성능 요구사항 때문에 완전한 격리는 현실적으로 어렵다. Dawn 일부 컴포넌트를 Rust로 재작성하는 방안도 장기적 완화책으로 논의된다. C++의 원시 포인터 관리 오류인 UAF와 힙 오버플로우는 Rust 소유권 시스템에서 컴파일 타임에 방지된다.
| 방어 계층 | 전략 | 효과 |
|---|---|---|
| 즉시 패치 | Chrome 최신 버전 유지 | 알려진 취약점 제거 |
| 브라우저 격리 | 사이트 격리(Site Isolation) 활성화 | 렌더러 프로세스 간 데이터 격리 |
| WebGPU 비활성화 | 엔터프라이즈 정책으로 WebGPU 플래그 비활성 | 공격 표면 제거 (기능 제한 감수) |
| 네트워크 제어 | 악성 URL 필터링, 이메일 링크 격리 | 초기 접근 벡터 차단 |
| 탐지 모니터링 | EDR에서 브라우저 비정상 프로세스 생성 탐지 | 침해 조기 발견 |
| 레이어 방어 | 브라우저를 원격 격리 환경에서 실행 (RBI) | 샌드박스 탈출 영향 최소화 |
CVE-2026-5281은 Dawn WebGPU 구현체의 CommandBuffer 수명 동기화 오류에서 발생한 Use-After-Free 취약점이며, Chrome 146.0.7680.178 미만 전 버전에 영향을 준다. Chromium 기반 브라우저를 사용하는 조직은 최신 버전 업데이트를 우선 적용하고, 엔터프라이즈 환경에서는 WebGPU의 선제적 비활성화와 브라우저 격리 아키텍처 도입을 검토할 수 있다.
Sources
- New Chrome Zero-Day CVE-2026-5281 Under Active Exploitation — Patch Released
- Google fixes Chrome zero-day with in-the-wild exploit (CVE-2026-5281) - Help Net Security
- CVE-2026-5281: Chrome WebGPU Zero-Day Exploited In The Wild - SOCRadar
- Chrome Zero-Day CVE-2026-5281: A Use-After-Free in Dawn's WebGPU Layer - Dark Web Informer
- Google fixes fourth Chrome zero-day exploited in attacks in 2026 - BleepingComputer
- CVE-2026-5281: The Chrome Zero-Day That Targets the GPU Boundary - CyberSpit
- Chrome's fourth zero-day of 2026 reveals a bigger browser security problem - PCQuest
- Google fixes fourth actively exploited Chrome zero-day of 2026 - Security Affairs
- Google Patches Fourth Chrome Zero-Day of 2026 in Emergency Update - BeyondMachines
- In-the-Wild Series: Chrome Exploits - Google Project Zero
- Getting RCE in Chrome with incorrect side effect in the JIT compiler - GitHub Blog