kkinnunen-apple
WebGPU security specialist
Summary
Works almost exclusively on the graphics stack — WebGL, ANGLE (including the Metal backend), and the surrounding GPU-process plumbing — mixed with routine ANGLE rolls and WebGL/dEQP conformance test updates. The security fixes are not scattered: they concentrate in ANGLE's validation layer and WebGL state tracking, covering index-range integer overflow bypassing vertex index validation, `drawElements` mishandling of large `UNSIGNED_INT` indexes, `ResumeTransformFeedback` failing to check the active program, a dangling `mOcclusionQuery` pointer on allocation failure, and an uninitialized FastMalloc heap disclosure in `RemoteGraphicsContextGL::readPixelsInline`. Systematic-variant candidate: the recurring theme is GL state that can be desynchronized or under-validated across the IPC boundary — `PACK_*` state mutable via `pixelStorei`, framebuffer deletion altering the read binding, mismatched `DrawElements` variants, PBO reads with an offset. Neighboring entry points that take client-supplied indices, offsets, or pixel-store state and are re-validated in the GPU process are the natural sweep.
Components
Security Fix History
- 2026-07-07 ANGLE: Metal: Dangling mOcclusionQuery pointer if visibility buffer allocation fails 2026-W27
- 2026-07-01 ANGLE: ResumeTransformFeedback does not validate the active program ·
- 2026-07-01 ANGLE: EnsureLoopForwardProgress misses nested loop inititializers, expressions ·
- 2026-06-30 WebGL: GraphicsContextGLANGLE PACK_* state is modifiable through pixelStorei ·
- 2026-06-30 ANGLE: Metal: Inconsistent implementation of various DrawElements variations ·
- 2026-06-30 WebGL: Uninitialized FastMalloc heap disclosure in RemoteGraphicsContextGL::readPixelsInline ·
- 2026-06-16 ANGLE: IndexRange integer overflow bypasses vertex index validation 2026-W24
- 2026-06-16 WebGL: Crash when reading pixels to PBO with an offset ·
- 2026-06-15 WebGL: GenerateMipmap after out of base level -max level texupload uses the wrong type ·
- 2026-06-11 WebGL: UNSIGNED_INT drawElements() does not validate large indexes correctly ·
Hardening Commits
- No hardening commits recorded
Recent Commits
- 2026-08-03 Update WebGL conformance tests 2026-07-18 (f15a73f727d8ee66a3ec6d0bed9f02f08cacc2c1)
- 2026-07-07 ANGLE: Metal: Dangling mOcclusionQuery pointer if visibility buffer allocation fails 2026-W27
- 2026-07-06 Update ANGLE to 2026-06-29 (a32d31d2f1230711f398ff4cbfc272bdcca72a5e)
- 2026-07-02 WebGL: Remove code related to externalImageTextureBindingPoint()
- 2026-07-02 ANGLE: Support ANGLE dEQP tests
- 2026-07-01 ANGLE: ResumeTransformFeedback does not validate the active program ·
- 2026-07-01 ANGLE: EnsureLoopForwardProgress misses nested loop inititializers, expressions ·
- 2026-07-01 GeneratedSerializers should include soft link headers last
- 2026-07-01 CMake: Media tests fail due to missing media control images
- 2026-06-30 WebGL: GraphicsContextGLANGLE PACK_* state is modifiable through pixelStorei ·
- 2026-06-30 ANGLE: Metal: Inconsistent implementation of various DrawElements variations ·
- 2026-06-30 WebGL: Uninitialized FastMalloc heap disclosure in RemoteGraphicsContextGL::readPixelsInline ·
- 2026-06-26 WebGL: GL limits are queried synchronously during context initialization
- 2026-06-26 WebGL: Use default frame buffer properties from WebGLDefaultFramebuffer
- 2026-06-24 Update ANGLE to 2026-06-23 (c0df1484701f94ca4d2993b05db287233b5900c6)