Voltar ao blog
Anti-deteccao

WebGPU Fingerprinting: The Next Generation of GPU Tracking

WebGPU exposes detailed GPU adapter information and capability limits. Learn how this next-gen API creates new fingerprinting vectors.

Introduction

WebGPU is the successor to WebGL, providing modern, low-level GPU access in the browser. While it enables more powerful graphics and compute capabilities, it also exposes detailed GPU information through its adapter and device APIs. This creates new fingerprinting vectors that complement existing WebGL signals.

What WebGPU Reveals

Adapter Information

const adapter = await navigator.gpu.requestAdapter();
const info = await adapter.requestAdapterInfo();

console.log({
  vendor: info.vendor,         // "nvidia"
  architecture: info.architecture, // "ampere"
  device: info.device,         // GPU model identifier
  description: info.description, // Human-readable description
});

Capability Limits

WebGPU devices have specific limits that vary by GPU:

const device = await adapter.requestDevice();
const limits = device.limits;

console.log({
  maxTextureDimension2D: limits.maxTextureDimension2D,     // 16384
  maxBufferSize: limits.maxBufferSize,                      // 268435456
  maxStorageBufferBindingSize: limits.maxStorageBufferBindingSize, // 134217728
  maxComputeWorkgroupSizeX: limits.maxComputeWorkgroupSizeX,     // 256
  maxComputeInvocationsPerWorkgroup: limits.maxComputeInvocationsPerWorkgroup, // 256
});

Feature Sets

const features = adapter.features;
// Set of supported features like:
// "texture-compression-bc", "float32-filterable",
// "shader-f16", "bgra8unorm-storage"

Different GPUs support different feature sets, creating additional fingerprinting entropy.

WebGPU vs WebGL Consistency

A critical detection vector is the consistency between WebGPU and WebGL signals:

WebGL SignalWebGPU EquivalentMust Match
UNMASKED_RENDERERadapter.requestAdapterInfo().deviceSame GPU
UNMASKED_VENDORadapter.requestAdapterInfo().vendorSame vendor
MAX_TEXTURE_SIZElimits.maxTextureDimension2DConsistent
ExtensionsFeaturesRelated capabilities

If WebGL reports an NVIDIA GPU but WebGPU reports an AMD adapter, the inconsistency is trivially detectable.

Browser Support

WebGPU is available in:

  • Chrome 113+ (stable)
  • Edge 113+ (same engine)
  • Firefox (behind flag, in development)
  • Safari (partial, WebGPU-based Metal backend)

For browsers that do not support WebGPU, navigator.gpu is undefined. This is not a detection signal since many users have browsers or configurations without WebGPU support.

Fingerprinting Entropy

SignalTypical Entropy
Vendor + architecture~4 bits
Capability limits~6 bits
Feature set~8 bits
Combined~15-18 bits

WebGPU provides significantly more entropy than WebGL due to the detailed capability limits and feature set enumeration.

How BotCloud Handles WebGPU Fingerprinting

BotCloud profiles include WebGPU configuration that:

  • Returns adapter info consistent with the profile's GPU identity
  • Reports capability limits matching the claimed GPU model
  • Exposes features appropriate for the GPU and driver version
  • Maintains consistency with WebGL signals on the same profile

When WebGPU is not expected for a profile's browser version, it is correctly absent rather than artificially blocked.

Best Practices

  1. Ensure WebGPU and WebGL report the same GPU - Cross-API inconsistency is the easiest detection
  2. Match capability limits to GPU model - Each GPU has specific limits
  3. Include appropriate features - Feature sets vary by GPU generation
  4. Consider browser version - WebGPU is only available in Chrome 113+
#webgpu#gpu#fingerprinting#privacy