Loading...
Skip to main content

CVE-2026-41511 — Vulnerability in OpenMcdf — CVE Details

MEDIUM

OpenMcdf has an Infinite loop DoS via crafted CFB directory cycle

Published April 22, 2026Updated May 13, 2026Source: osv

Summary

### Summary OpenMcdf does not detect cycles in the directory entry red-black tree of a Compound File Binary (CFB) document. A crafted CFB file with a cycle in the `LeftSiblingID` / `RightSiblingID` chain causes `Storage.EnumerateEntries()` and `Storage.OpenStream()` to loop indefinitely, consuming the calling thread with no possibility of recovery via `try/catch`. ### Details CFB directory entries form a red-black tree linked by `LeftSiblingID` and `RightSiblingID` fields. OpenMcdf's `DirectoryTreeEnumerator` and `DirectoryTree.TryGetDirectoryEntry` traverse this tree without tracking visited node IDs, so a crafted cycle (e.g. entry A's `RightSiblingID` points to entry B, and entry B's `LeftSiblingID` points back to entry A) causes traversal to loop indefinitely. Two distinct code paths are affected: - **`Storage.EnumerateEntries()`** - `DirectoryTreeEnumerator.MoveNext()` never returns `false`; the same entry is yielded on every iteration and the caller's `foreach` never exits. Heap grows unboundedly as entries accumulate. - **`Storage.OpenStream()`** - `DirectoryTree.TryGetDirectoryEntry` loops indefinitely inside `DirectoryEntries.TryGetSibling` during the name lookup. ### PoC A crafted CFB file with a sibling cycle (see attached) triggers the issue with the following code: ```csharp using OpenMcdf; using var ms = new MemoryStream(File.ReadAllBytes("crafted.cfb")); using var root = RootStorage.Open(ms); // Never returns - EnumerateEntries loops indefinitely foreach (var entry in root.EnumerateEntries()) { Console.WriteLine(entry.Name); if (entry.Type == EntryType.Stream) root.OpenStream(entry.Name); // also hangs depending on the cycle structure } ``` ### Impact A denial of service affecting any application that opens untrusted CFB files with OpenMcdf. A small crafted input carrying a valid CFB magic header (`D0 CF 11 E0 A1 B1 1A E1`) is sufficient to pass initial format validation and reach the vulnerable traversal code. No exception is thrown, so `try/catch` cannot protect callers. The affected thread is unrecoverable without killing the process.

Advisory Timeline

  • First published April 22, 2026 (173 days ago).
  • Last revised May 13, 2026 — 21 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

NuGet
Update OpenMcdf to 3.1.3 or later
dotnet add package OpenMcdf --version 3.1.3

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: nuget (1).

PackageEcosystemAffectedFixed In
OpenMcdf
nuget
1.5.4, 1.5.4.1, 1.5.4.22637, 2.0.5739 (+29 more)3.1.3

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 6.2 score means for each attack dimension.

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

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

Frequently Asked Questions

What is CVE-2026-41511?
OpenMcdf has an Infinite loop DoS via crafted CFB directory cycle This vulnerability has been assigned a severity rating of MEDIUM (CVSS score: 6.2/10).
How do I check if my project is affected by CVE-2026-41511?
CVE-2026-41511 affects OpenMcdf. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-41511 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
6.2

Exploitation requires specific conditions or has limited impact. Remediate within weeks.

Also Known As

GHSA-jxpf-xq2m-q525

Related CVEs

  • CVE-2026-106111
    MEDIUM

    ImageSharp: EXR ZIP decoder can expose stale allocator data after a short inflate

  • CVE-2026-45785
    MEDIUM

    OpenMcdf: Uncatchable infinite loop in DirectoryTree.TryGetDirectoryEntry on crafted CFB directory cycle

  • CVE-2026-65829
    MEDIUM

    MPXJ: Potential Path Traversal Vulnerability in Primavera P3 PRX and SureTrak STX readers

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies