Cloudanix VulnDB

CVE-2025-38585

High · 7.8

CVSS

7.8

EPSS

0.2%

Published

Aug 19, 2025

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A bug in Linux camera software on certain older Intel chips can let someone who already has access to the computer run malicious code by tampering with low-level system settings.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Full Compromise
Component
OS kernel
Class
Memory Corruption
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Stack buffer overflow in gmin_get_var_int() caused by gmin_get_config_var() returning stale error codes instead of EFI failure status, allowing val[len]=0 write beyond the 65-byte stack allocation when efi.get_variable() reports EFI_BUFFER_TOO_SMALL for variables larger than 64 bytes.

Why it matters to the business

Local attackers on affected Intel Bay Trail and Cherry Trail systems can achieve privilege escalation or denial of service during camera sensor initialization; low prevalence but requires urgent patching on embedded and IoT devices using the atomisp stack.

How an attack unfolds

An attacker with local access crafts oversized EFI variables that trigger the flawed error path in gmin_get_config_var during device probe; the kernel then writes past the end of the stack buffer, enabling code execution or crashes on platforms using the atomisp driver.

How to fix it

Apply the upstream fix in commit 3d672fe065aa00f4d66f42e3c9720f69a3ed43e7; update affected packages to openjdk-11-openj9 0.53.0-r0 or later where the atomisp driver is present; rebuild and reboot with patched kernel.

How to confirm the fix worked

Verify kernel contains commit 3d672fe065aa00f4d66f42e3c9720f69a3ed43e7; confirm gmin_get_config_var properly propagates EFI errors; test initialization with oversized EFI variables to ensure no overflow occurs.

Typical attack path

  1. Obtain local access or container escape on target system
  2. Manipulate EFI variables to exceed 64 bytes
  3. Trigger atomisp camera initialization
  4. Exploit stale return value to perform out-of-bounds stack write
  5. Escalate privileges or crash the kernel

How to detect it

Inspect dmesg and kernel logs for atomisp initialization failures or stack overflow warnings around gmin_get_var_int; correlate with EFI variable access events during device probe on Intel platforms.

  • gmin_get_var_int
  • gmin_get_config_var
  • EFI_BUFFER_TOO_SMALL
  • atomisp camera sensor configuration

What your security team should do

  • Patch kernels on all Bay Trail and Cherry Trail systems within 30 days
  • Disable atomisp driver via kernel config if camera functionality is unused
  • Monitor local privilege-escalation attempts targeting media subsystems
  • Audit EFI variable sizes during boot on affected hardware

The record

In the Linux kernel, the following vulnerability has been resolved: staging: media: atomisp: Fix stack buffer overflow in gmin_get_var_int() When gmin_get_config_var() calls efi.get_variable() and the EFI variable is larger than the expected buffer size, two behaviors combine to create a stack buffer overflow: 1. gmin_get_config_var() does not return the proper error code when efi.get_variable() fails. It returns the stale 'ret' value from earlier operations instead of indicating the EFI failure. 2. When efi.get_variable() returns EFI_BUFFER_TOO_SMALL, it updates *out_len to the required buffer size but writes no data to the output buffer. However, due to bug #1, gmin_get_var_int() believes the call succeeded. The caller gmin_get_var_int() then performs: - Allocates val[CFG_VAR_NAME_MAX + 1] (65 bytes) on stack - Calls gmin_get_config_var(dev, is_gmin, var, val, &len) with len=64 - If EFI variable is >64 bytes, efi.get_variable() sets len=required_size - Due to bug #1, thinks call succeeded with len=required_size - Executes val[len] = 0, writing past end of 65-byte stack buffer This creates a stack buffer overflow when EFI variables are larger than 64 bytes. Since EFI variables can be controlled by firmware or system configuration, this could potentially be exploited for code execution. Fix the bug by returning proper error codes from gmin_get_config_var() based on EFI status instead of stale 'ret' value. The gmin_get_var_int() function is called during device initialization for camera sensor configuration on Intel Bay Trail and Cherry Trail platforms using the atomisp camera stack.

Affected packages

Ecosystem Package Introduced Fixed
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.3-1
Linux Kernel 6.0.0 6.12.42
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_15 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_15 0 1-150600.13.3.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.70.1.150600.12.30.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.52.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.70.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.52.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.70.1.150600.12.30.2
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.70.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.52.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.52.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.70.1
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities