kkinnunen-apple
WebGPU security specialist
Summary
Works primarily on the GPU-facing graphics stack: WebGPU and WebGL, ANGLE's Metal backend, and the WebCore/GPU-process image pipeline (ImageBuffer, NativeImage, PixelFormat, IOSurface pooling, DisplayList recording). The security fixes cluster almost entirely in ANGLE state validation and the RemoteGraphicsContextGL/RemoteRenderingBackend IPC boundary — unvalidated active program in ResumeTransformFeedback, element-limit staleness after a format-only VertexAttribPointer change, a dangling occlusion-query pointer on allocation failure, uninitialized FastMalloc disclosure via readPixelsInline, and cross-backend data leakage through SerializedImageBuffer — with no hardening-classified work alongside them, so the pattern is bug-driven rather than mitigation-driven. Systematic-variant candidate: EnsureLoopForwardProgress has been patched more than once for loop forms it fails to cover (nested initializers and expressions, unsigned tautology compares), and the parallel "inconsistent validation across DrawElements variations" fix suggests the Metal backend's per-entrypoint validation is worth sweeping as a family; the concurrent churn in cross-process image handoff is fresh surface in the same area that produced the SerializedImageBuffer leak.
Components
Security Fix History
- 2026-09-15 REGRESSION(320327@main) webgl/*/conformance/textures/misc/tex-image-with-format-and-type.html fail ·
- 2026-09-09 REGRESSION(320153@main) 2D context self drawImage performance regression 2026-W36
- 2026-09-02 ANGLE: Element limit not updated after format only VertexAttribPointer change ·
- 2026-09-02 SerializedImageBuffer leaks cross-RemoteRenderingBackend data through GraphicsContext ·
- 2026-08-26 ANGLE: Metal: EnsureLoopForwardProgress infinite loops with unsigned tautology compare classified as finite
- 2026-08-21 WebGL: Copy context to NativeImage in straight orientation 2026-W33
- 2026-07-07 ANGLE: Metal: Dangling mOcclusionQuery pointer if visibility buffer allocation fails
- 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 ·
Hardening Commits
Recent Commits
- 2026-09-15 REGRESSION(320327@main) webgl/*/conformance/textures/misc/tex-image-with-format-and-type.html fail ·
- 2026-09-10 CG: Avoid getting, setting text matrix many times when drawing glyphs
- 2026-09-09 REGRESSION(320153@main) 2D context self drawImage performance regression 2026-W36
- 2026-09-09 ANGLE: Simplify memory tagging implementation
- 2026-09-09 GPUP spends time setting canvas backing store IOSurfaces as non-volatile
- 2026-09-08 Add PixelFormat::RGBX to support opaque RGB pixel data
- 2026-09-08 ipc/networksindexeddb-close-connection-during-version-change.html times out
- 2026-09-08 WebGL: premultipliedAlpha=false is composited incorrectly
- 2026-09-07 IOSurfacePool does not try to take surfaces that were previously in use
- 2026-09-07 DisplayList::RecorderImpl depends on initial state
- 2026-09-07 Remove ipc/invalid-message-to-addTrackBuffer.html
- 2026-09-07 ipc/move-to-image-buffer-cross-thread-font-crash.html asserts
- 2026-09-03 Rename WebCore::DestinationColorSpace to WebCore::ColorSpace
- 2026-09-03 Use NativeImage in InspectorCanvas::getContentAsDataURL
- 2026-09-03 GraphicsContext::drawNativeImage does not support InterpolationQuality option