Released January 22, 2024

CVE-2024-23206

CVSS 6.5 severity medium CWE-200 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N

Overview

Impact:

Description: A maliciously crafted webpage may be able to fingerprint the user

Researchers: an anonymous researcher

Key insight. The WebContent sandbox should deny access to stable device-identifying system files by default; an omitted deny rule is a fingerprinting side channel.

Patch Details

diff --git a/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in b/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in
index 9734cf26a015..a37b59016703 100644
--- a/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in
+++ b/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in
@@ -37,6 +37,9 @@
 (allow process-info-codesignature)
 #endif
 
+(deny file-read-metadata
+    (literal "/private/var/db/MobileIdentityData/Version.plist"))
+
 ;;;
 ;;; The following rules were originally contained in 'common.sb'. We are duplicating them here so we can
 ;;; remove unneeded sandbox extensions.

Background

Advisory: Apple Security Advisory

Attribute Value
CVE CVE-2024-23206
Bugzilla 262699
Component WebKit
Bug Class Bypass
Severity medium
Commit 89314de81d9bcf4a…
Advisory Apple Advisory

Terminology

  • WebContent sandbox profile — The seatbelt (.sb) policy restricting what the sandboxed WebContent process may access.
  • file-read-metadata — A sandbox operation permitting stat-like reads of a file’s metadata (existence, size, timestamps) without reading contents.
  • Device fingerprinting — Deriving a stable per-device identifier from observable state to track a user across origins.

Root Cause Analysis

This is a sandbox-hardening fix, not a memory-safety bug. The patch adds a single rule to the iOS WebContent sandbox profile (com.apple.WebKit.WebContent.sb.in): (deny file-read-metadata (literal "/private/var/db/MobileIdentityData/Version.plist")). Before the change, the profile did not deny access to this path, so the sandboxed WebContent process — which runs untrusted web content — was able to read metadata for /private/var/db/MobileIdentityData/Version.plist. That file is a stable, device-specific system artifact, and its metadata (e.g. presence, size, timestamps) is consistent per device and largely invariant across origins and sessions. The violated invariant is sandbox least-privilege: WebContent should not be able to observe stable device-identifying state that a webpage could turn into a fingerprint. By reading metadata of this file, a malicious page could derive a persistent identifier and correlate the user across sites, which matches the advisory’s ‘may be able to fingerprint the user’ impact. The fix restores the invariant by explicitly denying file-read-metadata on that literal path, closing the side channel at the sandbox boundary. INFERENCE: the exact WebContent code path that reached the file (which API or probe a page used) is not in this diff — the patch only shows the policy rule — so the specific trigger is not established by the commit, only that the capability existed and was removed.

Attack Path

1. Load a malicious webpage

The victim visits an attacker-controlled page whose JavaScript runs in the sandboxed WebContent process.

2. Probe the device-identifying file’s metadata

The page drives a code path in WebContent that stats/reads metadata of /private/var/db/MobileIdentityData/Version.plist, which the pre-patch sandbox allowed.

3. Derive a stable identifier

Metadata of this per-device system file is consistent across origins and sessions, yielding a value usable as a device fingerprint.

4. Correlate the user across sites

The attacker (and colluding sites) use the derived identifier to track the user without cookies or storage, defeating anti-tracking protections.

Impact Assessment

Privacy/least-privilege issue, not memory safety: WebContent could read metadata of a stable device file and derive a fingerprint, enabling cross-site tracking. Confined to information exposure; no code execution or sandbox escape.

Audit Directions

Other stable device files reachable from WebContent

Diff the WebContent .sb profile against files whose metadata is per-device and stable (identity/provisioning plists); each readable one is a fingerprint source.

Metadata vs content reads

Look for paths allowed for file-read-metadata but not file-read-data; even metadata-only access can leak stable identifiers.

Changed Functions

Function File Change Note
com.apple.WebKit.WebContent.sb.in (sandbox profile) Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in modified Adds a deny file-read-metadata rule for the literal path /private/var/db/MobileIdentityData/Version.plist, removing WebContent’s ability to read metadata of this device-identifying file.

Files Changed

Source Files

  • Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in