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 명령으로 변환한다.

동기화 실패정상JavaScript WebGPU API 호출Dawn C++ 라이브러리플랫폼 판별Metal (macOS/iOS)Vulkan (Android/Linux)D3D12 (Windows)GPU 하드웨어CommandBuffer 객체 생성GPU 커맨드 제출객체 수명 동기화댕글링 포인터 잔존 (UAF 발생)GPU 실행 완료 해제임의 코드 실행 가능

Dawn은 Chromium 렌더러 프로세스 안에서 WebGPU 표준을 구현한다. 렌더러는 Chrome 샌드박스 구조에서 격리된 프로세스이므로, Dawn 계층의 취약점은 렌더러 프로세스 내 코드 실행으로 이어질 수 있다.

CommandBuffer 수명 동기화가 깨지는 지점

CVE-2026-5281의 원인은 CommandBuffer 객체의 비동기 GPU 실행 상태와 JavaScript 가비지 컬렉션 수명 사이에서 발생한 동기화 실패다.

JavaScript가 gpuDevice.queue.submit()을 빠르게 연속 호출하면 Dawn은 렌더러 프로세스에 각 CommandBuffer 객체를 할당하고 GPU 커맨드 큐에 제출한다. 일부 경로는 참조 카운팅 객체의 원시 포인터(raw pointer)를 보유하면서 다른 경로가 참조를 유지한다고 가정한다. 경쟁 조건에서 이 가정이 성립하지 않으면 CommandBuffer가 해제된 뒤에도 GPU 커맨드 큐에 댕글링 포인터가 남는다.

이 취약점은 다음 흐름에서 악용될 수 있다.

  1. 렌더러 프로세스 장악 (V8 또는 미디어 파서 취약점 활용)
  2. 조작된 WebGPU CommandBuffer를 급격히 연속 제출
  3. 객체 해제 타이밍을 제어해 댕글링 포인터 상태 유도
  4. UAF를 통해 힙 메모리 레이아웃 제어 → 임의 코드 실행

렌더러 프로세스에서 시작한 뒤 샌드박스 탈출(sandbox escape)로 이어지는 2단계 공격 체인에서는 이 취약점이 두 번째 단계로 쓰일 수 있다.

반복된 제로데이가 드러낸 공격 표면

2월CVE-2026-2441CSSFontFeatureValuesMapiterator invalidationUAF3월 전반CVE-2026-3909Skia 2D 그래픽라이브러리Out-of-Bounds WriteCVE-2026-3910V8 JavaScript 엔진부적절한 구현3월 후반CVE-2026-5281Dawn WebGPUUse-After-Free (네번째 제로데이)2026년 Chrome 제로데이 패치 타임라인

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 등재까지의 대응 흐름

악용 확인이론적 위험취약점 발견발견 주체외부 연구자버그 바운티Google Project Zero내부 연구TAG공격 관찰Chrome Security보고 수령내부 분석·재현패치 개발Chrome Stable 채널 배포공개 CVE 발행CISA KEV 평가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

Chrome 보안WebGPU제로데이브라우저 보안CVE-2026-5281