Cloudanix VulnDB

CVE-2025-38710

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

Sep 4, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in the Linux kernel's file system handling could let a local user crash the system by feeding it specially crafted directory data.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Invalid i_depth value of 0 in exhash GFS2 directories triggers an undefined 32-bit shift in dir_e_read() during hash calculation.

Why it matters to the business

Local users on GFS2 filesystems can trigger kernel crashes leading to denial of service; high prevalence in Linux environments increases exposure risk.

How an attack unfolds

An attacker with local access supplies a corrupted GFS2 filesystem image containing an exhash directory with i_depth set to 0; when the kernel processes the directory in dir_e_read(), the invalid shift occurs and causes undefined behavior.

How to fix it

Upgrade the Linux kernel to the fixed commit 53a0249d68a210c16e961b83adfa82f94ee0a53d or later; rebuild and deploy updated kernels across all affected systems.

How to confirm the fix worked

Verify the presence of commit 53a0249d68a210c16e961b83adfa82f94ee0a53d in the kernel source tree and confirm the minimum depth check now exists in gfs2_dinode_in().

Typical attack path

  1. Obtain local access to a system using GFS2
  2. Mount a maliciously crafted GFS2 image or trigger directory operations on corrupted metadata
  3. Invoke dir_e_read() to execute the invalid shift and crash the kernel

How to detect it

Review kernel logs for GFS2-related oops or panic messages involving dir_e_read() or undefined shifts; correlate with recent mounts of external GFS2 volumes.

What your security team should do

  • Apply the referenced kernel commit immediately on all GFS2 deployments
  • Prioritize patching systems with high GFS2 usage or container workloads
  • Test the update with xfstests and syzkaller reproducers before broad rollout

The record

In the Linux kernel, the following vulnerability has been resolved: gfs2: Validate i_depth for exhash directories A fuzzer test introduced corruption that ends up with a depth of 0 in dir_e_read(), causing an undefined shift by 32 at: index = hash >> (32 - dip->i_depth); As calculated in an open-coded way in dir_make_exhash(), the minimum depth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is invalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time. So we can avoid the undefined behaviour by checking for depth values lower than the minimum in gfs2_dinode_in(). Values greater than the maximum are already being checked for there. Also switch the calculation in dir_make_exhash() to use ilog2() to clarify how the depth is calculated. Tested with the syzkaller repro.c and xfstests '-g quick'.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:12 linux 0 No fix
Debian:13 linux 0 6.12.43-1
Debian:14 linux 0 6.16.3-1
Linux Kernel 0 6.12.43
Linux Kernel 2.6.26 6.12.43
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-livepatch-SLE15-SP7-RT_Update_5 0 1-150700.1.3.1
SUSE:Real Time Module 15 SP7 kernel-rt 0 6.4.0-150700.7.19.1
SUSE:Real Time Module 15 SP7 kernel-source-rt 0 6.4.0-150700.7.19.1
SUSE:Real Time Module 15 SP7 kernel-syms-rt 0 6.4.0-150700.7.19.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