Profiling the GPU
WebGL is a JavaScript API for rendering high-performance interactive 3D and 2D graphics. While great for web games, it's a goldmine for fingerprinting because it directly interfaces with the user's graphics hardware.
The Data Leaked
A WebGL fingerprint script queries two main things:
- WebGL Parameters: Querying constants like maximum texture size, maximum viewport dimensions, and supported extensions.
- Renderer String: Asking the browser to reveal the specific GPU model (e.g.,
ANGLE (Apple, Apple M1 Max, OpenGL 4.1)).
Example Leaked String
GL_VENDOR: WebKitGL_RENDERER: WebKit WebGLUNMASKED_VENDOR_WEBGL: AppleUNMASKED_RENDERER_WEBGL: Apple M1 Max
Why it Matters
Combined with Canvas fingerprinting, WebGL data drastically narrows down the pool of users. While thousands of people might have an M1 Mac, the specific combination of an M1 Max, a specific monitor resolution, and a specific set of installed fonts is highly unique.