4.8 KiB
4.8 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-B3C1E7 | 10_Wiki/💡 Topics/Graphics & Performance | 0.90 |
|
2026-04-20 | [P-Reinforce] Continuous Worker - 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, Meltdown, Rowhammer 등의 부채널 공격(Side-channel attack)에 악용되었습니다 [2, 4, 5]. 이에 대응하여 브라우저 벤더들은 고정밀 타이머를 비활성화하거나, 시간의 정밀도를 의도적으로 낮추는 '양자화(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)과 포인터 포이즈닝(Pointer Poisoning)과 같은 분기 없는 보안 검사(Branchless security checks) 기법이 적용되었습니다 [13-16]. - WebGPU 타이밍 API 보안 모델: WebGPU는 나노초 단위의 정밀도를 제공하는
timestamp-query기능을 도입했지만, 타이밍 공격 우려로 인해 명세에서는 이를 신뢰할 수 있는 환경에만 노출할 수 있는 선택적(optional) 기능으로 정의했습니다 [2, 3]. 크롬(Chrome)을 비롯한 브라우저 엔진 및 GPU for the Web 커뮤니티 그룹은 보안과 상호 운용성을 확보하기 위해 '타임스탬프 양자화(Timestamp Quantization)'를 표준 방어 기법으로 채택했습니다 [3, 7, 17]. - 타임스탬프 양자화(Timestamp Quantization) 적용: 일반적인 웹 환경에서는 타이머 해상도를 100 마이크로초 단위로 낮추어(Coarsening) 타이밍 공격을 방지합니다 [6, 17]. 성능 프로파일링이 필수적인 개발자의 경우, 로컬 환경에서 전용 브라우저 플래그("WebGPU Developer Features" 및 "Unsafe WebGPU Support")를 명시적으로 활성화해야만 양자화가 해제된 나노초 단위의 정밀한 측정값을 얻을 수 있습니다 [6, 18].
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- 정책 변화: Graphics & Performance 분야의 자동 자산화 수행.
🔗 지식 연결 (Graph)
- Related Topics: Spectre and Meltdown, Cache Side-Channel Attack, Timestamp Quantization, Rowhammer Attack
- Projects/Contexts: Chrome / Blink WebGPU Implementation, 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