Chrome · Media
CVE-2026-14056
Logic Error in Media
Overview
Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc
Patch
From d3ad14be0cab02da57d1a030d3fa56c7f851e5af Mon Sep 17 00:00:00 2001 From: Hirokazu Honda <[email protected]> Date: Mon, 25 May 2026 22:31:17 -0700 Subject: [PATCH] media/gpu/sandbox: Allow reading GPU device info in hardware video decoding sandbox libdrm and graphics drivers query specific sysfs files inside the sandbox (e.g. during vaInitialize) to identify the GPU and select/ configure the correct driver. This CL explicitly whitelists these files in the sandbox hook: - vendor - device - revision - subsystem_vendor - subsystem_device - subsystem - uevent - drm Additionally, allow the READLINK broker command, as libdrm calls readlink on the 'subsystem' symlink to determine the bus type. Bug: 501888426 Test: video.Play.* on chromeos Change-Id: I2e5cf3088ed91ac094a31ac3f3f8e0b6af69a793 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7873665 Commit-Queue: Hirokazu Honda <[email protected]> Reviewed-by: Elly <[email protected]> Cr-Commit-Position: refs/heads/main@{#1635936} --- diff --git a/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc b/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc index 3ca9f767..58a9b95 100644 --- a/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc +++ b/media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc @@ -53,6 +53,27 @@ BrokerFilePermission::ReadOnly(char_device_path + "/uevent")); permissions.push_back( BrokerFilePermission::ReadOnly(char_device_path + "/dev")); + + // libdrm and graphics drivers query these specific sysfs files inside + // the sandbox (e.g. during vaInitialize) to identify the GPU and + // select/configure the correct driver. We whitelist them explicitly + // to avoid granting recursive read access to the whole device + // directory. Note: 'config' is omitted because 'revision' exists on + // target devices. + std::string device_path = char_device_path + "/device/"; + for (const char* file : { + "vendor", + "device", + "revision", + "subsystem_vendor", + "subsystem_device", + "subsystem", + "uevent", + "drm", + }) { + permissions.push_back( + BrokerFilePermission::ReadOnly(device_path + file)); + } } } } @@ -85,6 +106,9 @@ // TODO(b/210759684): we probably will need to do this for Linux as well. command_set.set(sandbox::syscall_broker::COMMAND_ACCESS); + // libdrm calls readlink on the 'subsystem' symlink to determine the bus type. + command_set.set(sandbox::syscall_broker::COMMAND_READLINK); + AllowAccessToRenderNodes(permissions, /*include_sys_dev_char=*/true, /*read_write=*/false); #endif // BUILDFLAG(IS_CHROMEOS)
Loading diff…
Original Bug Report
The reporter's bug is still restricted on the tracker. Chrome de-restricts security bugs ~30–90 days after the fix ships; a later run will backfill it here.
References
On This Page