LiveActive security incident?Get immediate response
CVE Record

CVE-2025-37785: ext4: fix OOB read when checking dotdot dir

In the Linux kernel, the following vulnerability has been resolved: ext4: fix OOB read when checking dotdot dir Mounting a corrupted filesystem with directory which contains '.' dir entry with rec_len == block size results in out-of-bounds read (later on, when the corrupted directory is removed). ext4_empty_dir() assumes every ext4 directory contains at least '.' and '..' as directory entries in the first data block. It first loads the '.' dir entry, performs sanity checks by calling ext4_check_dir_entry() and then uses its rec_len member to compute the location of '..' dir entry (in ext4_next_entry). It assumes the '..' dir entry fits into the same data block. If the rec_len of '.' is precisely one block (4KB), it slips through the sanity checks (it is considered the last directory entry in the data block) and leaves "struct ext4_dir_entry_2 *de" point exactly past the memory slot allocated to the data block. The following call to ext4_check_dir_entry() on new value of de then dereferences this pointer which results in out-of-bounds mem access. Fix this by extending __ext4_check_dir_entry() to check for '.' dir entries that reach the end of data block. Make sure to ignore the phony dir entries for checksum (by checking name_len for non-zero). Note: This is reported by KASAN as use-after-free in case another structure was recently freed from the slot past the bound, but it is really an OOB read. This issue was found by syzkaller tool. Call Trace: [ 38.594108] BUG: KASAN: slab-use-after-free in __ext4_check_dir_entry+0x67e/0x710 [ 38.594649] Read of size 2 at addr ffff88802b41a004 by task syz-executor/5375 [ 38.595158] [ 38.595288] CPU: 0 UID: 0 PID: 5375 Comm: syz-executor Not tainted 6.14.0-rc7 #1 [ 38.595298] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 38.595304] Call Trace: [ 38.595308] <TASK> [ 38.595311] dump_stack_lvl+0xa7/0xd0 [ 38.595325] print_address_description.constprop.0+0x2c/0x3f0 [ 38.595339] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595349] print_report+0xaa/0x250 [ 38.595359] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595368] ? kasan_addr_to_slab+0x9/0x90 [ 38.595378] kasan_report+0xab/0xe0 [ 38.595389] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595400] __ext4_check_dir_entry+0x67e/0x710 [ 38.595410] ext4_empty_dir+0x465/0x990 [ 38.595421] ? __pfx_ext4_empty_dir+0x10/0x10 [ 38.595432] ext4_rmdir.part.0+0x29a/0xd10 [ 38.595441] ? __dquot_initialize+0x2a7/0xbf0 [ 38.595455] ? __pfx_ext4_rmdir.part.0+0x10/0x10 [ 38.595464] ? __pfx___dquot_initialize+0x10/0x10 [ 38.595478] ? down_write+0xdb/0x140 [ 38.595487] ? __pfx_down_write+0x10/0x10 [ 38.595497] ext4_rmdir+0xee/0x140 [ 38.595506] vfs_rmdir+0x209/0x670 [ 38.595517] ? lookup_one_qstr_excl+0x3b/0x190 [ 38.595529] do_rmdir+0x363/0x3c0 [ 38.595537] ? __pfx_do_rmdir+0x10/0x10 [ 38.595544] ? strncpy_from_user+0x1ff/0x2e0 [ 38.595561] __x64_sys_unlinkat+0xf0/0x130 [ 38.595570] do_syscall_64+0x5b/0x180 [ 38.595583] entry_SYSCALL_64_after_hwframe+0x76/0x7e

HighCVSS 7.8Not KEV-listedUpdated
Glexia's TakeAutomated analysishigh

Security readout for executives and security teams

Plain-English summary

A corrupted ext4 filesystem can make the Linux kernel read beyond an allocated directory block when a malformed directory is removed. Triggering requires the filesystem to be mounted and the affected directory processed, so this is primarily a local or unsafe-filesystem-ingestion risk rather than a direct network attack.

Executive priority

Handle within the normal high-severity kernel patch cycle, accelerating remediation where systems mount externally supplied or potentially corrupted filesystems. The local trigger reduces broad internet exposure, but kernel-level memory access and the supplied CVSS 7.8 assessment justify timely action.

Technical view

ext4_empty_dir() trusts the '.' entry's record length when locating '..'. A record length equal to the 4 KB block size passes existing checks, leaving the next-entry pointer immediately outside the block. Dereferencing it causes an out-of-bounds read. The fix rejects real '.' entries extending to the block boundary while excluding checksum pseudo-entries.

Likely exposure

Systems running an unfixed Linux kernel with ext4 support are potentially exposed when they mount corrupted or attacker-influenced ext4 filesystems. The supplied data covers multiple stable branches, but its flattened version list is insufficient for exact per-build conclusions. Distribution and appliance kernel builds require vendor-specific verification.

Exploitation context

The supplied record does not list this CVE in KEV and provides no evidence of active exploitation or a public exploit. Syzkaller discovered the flaw, and KASAN reproduced the invalid memory access. Absence of reported exploitation does not prove exploitation has never occurred.

Researcher notes

Syzkaller found the issue. KASAN may report it as slab use-after-free when adjacent memory was recently freed, but the kernel analysis identifies the root cause as an out-of-bounds read. Confirm backports by checking the __ext4_check_dir_entry() boundary validation, not version numbers alone.

Mitigation direction

  • Update affected Linux kernels to a vendor-supported build containing the referenced ext4 fix.
  • Until updated, avoid mounting untrusted or corrupted ext4 filesystems and disk images.
  • Consult Linux distribution or appliance vendor advisories for branch-specific fixed versions.

Validation and detection

  • Inventory systems using ext4 and record each running kernel version and vendor build.
  • Compare each build with vendor guidance and stable-branch fix commits referenced by the CVE.
  • Identify services or administrators that can mount externally supplied ext4 media or images.
  • After updating, confirm the active kernel changed and the vendor marks the build fixed.
  • Review kernel logs for ext4 errors, memory-safety reports, or crashes around directory removal.
Prepared
Confidence
medium
Sources
12

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2025-37785 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
High
CVSS
7.8 (3.1)
Known Exploited
No
Published

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

1CVSS vectors
3Timeline events
2ADP providers
13Source links

CVSS vector scores

1 official score

We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.

ScoreVersionSeverityVectorExploitImpactSource
7.8CVSS 3.1HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H1.85.9Linux

Vulnerability scoring details

Base CVSS 3.1 score

7.8High
CVSS 3.1 vector shape for CVE-2025-37785Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CVECVE Program Container
siemens-SADPADP container
Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinuxac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571, ac27a0ec112a089f1a5102bc8dffc79c8c815571unaffected
LinuxLinux2.6.19, 0, 5.4.293, 5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.2, 6.15affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.