---
id: [[P-Reinforce|P-Reinforce]]-AUTO-B3C1E7
category: Unified
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - [[WebGPU|WebGPU]] _ [[WebGL|WebGL]] Timing API Security"
---

# [[WebGPU _ WebGL Timing API Security|WebGPU _ WebGL Timing API Security]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> WebGPU와 WebGL의 타이밍 API는 GPU 명령어의 실행 시간을 측정하는 도구이지만, 높은 정밀도의 타이밍 데이터가 보안 취약점으로 악용될 수 있어 엄격한 보안 모델이 적용됩니다 [1-3]. 과거 WebGL의 `EXT_disjoint_timer_query`와 같은 확장 기능은 캐시 적중률 및 메모리 접근 패턴을 노출시켜 [[Spectre|Spectre]], Meltdown, Rowhammer 등의 부채널 공격(Side-channel Attack)에 악용되었습니다 [2, 4, 5]. 이에 대응하여 브라우저 벤더들은 고정밀 타이머를 비활성화하거나, 시간의 정밀도를 의도적으로 낮추는 '양자화([[Quantization|Quantization]])' 기법을 도입하여 보안과 성능 분석 간의 균형을 맞추고 있습니다 [2, 6, 7].

## 📖 구조화된 지식 (Synthesized Content)
* **보안 위협의 배경:** WebGL에서 제공하던 `EXT_disjoint_timer_query` 등의 고정밀 타이머는 밀리초 미만의 정밀도로 GPU 실행 시간을 측정할 수 있었습니다 [1]. 하지만 보안 연구자들은 이러한 높은 해상도의 타이밍 데이터가 L1 캐시와 메인 메모리 간의 지연 시간 차이를 관찰하게 해준다는 사실을 발견했습니다 [8]. 이를 통해 캐시 부채널 공격을 수행하거나 물리적 메모리 구조를 파악하여 Rowhammer 공격 및 기기 지문 수집(Device Fingerprinting)에 악용될 수 있음이 밝혀졌습니다 [2, 4, 5].
* **브라우저의 완화 조치 (Mitigations):** Spectre 및 Meltdown과 같은 보안 위협을 완화하기 위해 브라우저 엔진은 `performance.now()`의 타이머 정밀도를 1ms 또는 100 마이크로초 단위로 낮추고 측정값에 무작위 변동성(Jitter)을 도입했습니다 [9, 10]. 또한, 공격에 악용될 여지가 있는 `EXT_disjoint_timer_query` 확장을 브라우저 전반에서 비활성화하거나 사이트 격리(Site Isolation)가 적용된 특정 환경에서만 제한적으로 노출했습니다 [4, 11, 12]. 부가적으로 분기 처리를 통한 정보 유출을 막기 위해 인덱스 마스킹([[Index Masking|Index Masking]])과 포인터 포이즈닝(Pointer Poisoning)과 같은 분기 없는 보안 검사([[Branchless Security Checks|Branchless Security Checks]]) 기법이 적용되었습니다 [13-16].
* **WebGPU 타이밍 API 보안 모델:** WebGPU는 나노초 단위의 정밀도를 제공하는 `timestamp-query` 기능을 도입했지만, 타이밍 공격 우려로 인해 명세에서는 이를 신뢰할 수 있는 환경에만 노출할 수 있는 선택적(optional) 기능으로 정의했습니다 [2, 3]. 크롬([[Chrome|Chrome]])을 비롯한 브라우저 엔진 및 GPU for the Web 커뮤니티 그룹은 보안과 상호 운용성을 확보하기 위해 '타임스탬프 양자화([[Timestamp Quantization|Timestamp Quantization]])'를 표준 방어 기법으로 채택했습니다 [3, 7, 17].
* **타임스탬프 양자화(Timestamp Quantization) 적용:** 일반적인 웹 환경에서는 타이머 해상도를 100 마이크로초 단위로 낮추어(Coarsening) 타이밍 공격을 방지합니다 [6, 17]. 성능 프로파일링이 필수적인 개발자의 경우, 로컬 환경에서 전용 브라우저 플래그("WebGPU Developer Features" 및 "Unsafe WebGPU [[Support|Support]]")를 명시적으로 활성화해야만 양자화가 해제된 나노초 단위의 정밀한 측정값을 얻을 수 있습니다 [6, 18].

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Graphics & Performance 분야의 자동 자산화 수행.

## 🔗 지식 연결 (Graph)
- **Related Topics:** [[Spectre and Meltdown|Spectre and Meltdown]], Cache Side-Channel Attack, Timestamp Quantization, [[Rowhammer attack|Rowhammer Attack]]
- **Projects/Contexts:** Chrome / [[Blink|Blink]] WebGPU Implementation, [[WebKit Security Mitigations|WebKit Security Mitigations]]
- **Contradictions/Notes:** 초기 WebGPU 보안 모델의 제안에서는 사이트 격리(Site Isolation) 여부에 따라 타임스탬프 노출 및 정밀도를 다르게 적용할 계획이었습니다(격리 컨텍스트에서는 100µs 해상도를 제공하고, 비격리 컨텍스트에서는 노출하지 않음) [3]. 그러나 브라우저 간 상호 운용성(Interop) 문제를 해결하기 위해, GPU for the Web 커뮤니티 그룹은 사이트 격리 여부와 무관하게 모든 상황에서 100 마이크로초(100µs) 해상도로 통일하여 허용하는 것으로 최종 합의를 변경했습니다 [17].

---
*Last updated: 2026-04-19*

---
