Low CVSS 9.6 chrome Input Validation 🔧 Commit mapped

Overview

Low
Severity
9.6
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactInsufficient validation of untrusted input in Media
DescriptionInsufficient validation of untrusted input in Media
ComponentMedia
Sub-componentMedia/gpu/sandbox
Bug ClassInput Validation
Tracker501888426
Fix commitd3ad14be0cab (chromium/src) +24/-0
CWECWE-20 (Improper input validation)
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
CISA KEVNot listed
CreditedGoogle
Reported2026-04-12 (per vendor advisory)
Fix landed2026-05-26 (public git)
Disclosed2026-06-30
Patch gap35 days — fix public in source before the advisory

Files Changed

  • media/gpu/sandbox/hardware_video_decoding_sandbox_hook_linux.cc
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.