CVE-2026-105747: Docling Remote Code Execution Vulnerability
MODERATECVE-2026-105747 is a MODERATE (CVSS 4.3) remote code execution vulnerability (CWE-409: Improper Handling of Highly Compressed Data (Data Amplification)) affecting Docling libraries in the PyPI ecosystem. The issue involves mets-gbs archive member limit enforced after full member enumeration (memory exhaustion during format detection). Remediation is available by upgrading affected packages to version 2.131.0.
CVE-2026-105747 at a Glance
Security Impact
CVSS: 4.3
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L).
How to Fix CVE-2026-105747
To remediate this vulnerability, upgrade all affected Docling dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install docling>=2.131.0
pip install docling-slim>=2.131.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show docling
How to Check if You Are Affected
To determine whether your Python environment is affected by CVE-2026-105747, inspect your installed packages using pip:
pip show docling
Analyze the terminal output to locate any version of Docling in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.131.0), your application is affected.
Note: The pip show docling command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-409: Improper Handling of Highly Compressed Data (Data Amplification), where the product does not handle or incorrectly handles a compressed input with a very high compression ratio that produces a large output. In Docling, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-105747 Affected Docling Versions
2 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
docling
|
PyPI |
≥ 2.45.0
< 2.131.0
|
2.131.0
|
|
docling-slim
|
PyPI |
≥ 2.92.0
< 2.131.0
|
2.131.0
|
References
Frequently Asked Questions
What is CVE-2026-105747?
Which Docling versions are affected?
What version fixes CVE-2026-105747?
Is docling affected?
Is docling-slim affected?
What is the CVSS score of CVE-2026-105747?
What CWE is associated with CVE-2026-105747?
How can I check PyPI dependencies for CVE-2026-105747?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-3cr3-8m4c-fpxw",
"modified" : "2026-10-06T13:43:19Z",
"published" : "2026-10-06T13:41:16Z",
"aliases" : [ "CVE-2026-105747" ],
"summary" : "Docling: METS-GBS archive member limit enforced after full member enumeration (memory exhaustion during format detection)",
"details" : "### Summary\n\nWhen docling detects the input format of a gzip-compressed tar archive (METS-GBS), and later when the METS-GBS backend opens it, it calls `tarfile.TarFile.getmembers()`. That builds the full member list in memory before the `max_member_count` limit is checked. A small archive with a very large number of empty members therefore makes docling allocate memory in proportion to the member count, and the limit has no effect.\n\n### Details\n\n`docling/datamodel/document.py` (format detection) and `docling/backend/mets_gbs_backend.py` both iterate `tar.getmembers()` and count members inside the loop. `getmembers()` reads every header up front.\n\nMeasured on Python 3.12: an archive of 1,000,000 empty members compresses to about 6.2 MB and makes `getmembers()` hold about 408 MB (about 66 times the input size). Format detection runs for any `application/gzip` input before `allowed_formats` is applied, so the allocation happens even when METS-GBS is not an allowed format.\n\nThis check was introduced by the fix for CVE-2026-44018 (GHSA-r3xg-rg9j-67fv) in 2.91.0. The eager enumeration it relies on has been there since METS-GBS detection was added in 2.45.0.\n\n### Impact\n\nMemory exhaustion of the converting process, proportional to the size of the input archive. Confidentiality and integrity are not affected.\n\n### Patches\n\nFixed in docling 2.131.0 by [#4412](https://github.com/docling-project/docling/pull/4412). Format detection and the METS-GBS backend now read archive members one at a time and stop as soon as `max_member_count` is exceeded, including when looking up page files.\n\n### Workarounds\n\nUpgrade to 2.131.0. For older versions:\n\nReject gzip or tar inputs before they reach docling when METS-GBS support is not needed, and run conversions of untrusted input with memory limits.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "docling"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "2.45.0"
}, {
"fixed" : "2.131.0"
} ]
} ]
}, {
"package" : {
"ecosystem" : "PyPI",
"name" : "docling-slim"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "2.92.0"
}, {
"fixed" : "2.131.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/docling-project/docling/security/advisories/GHSA-3cr3-8m4c-fpxw"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-105747"
}, {
"type" : "WEB",
"url" : "https://github.com/docling-project/docling/pull/4412"
}, {
"type" : "WEB",
"url" : "https://github.com/docling-project/docling/commit/ebae65cd71c37c88b36185b406a449b92d8f7ffa"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/docling-project/docling"
}, {
"type" : "WEB",
"url" : "https://github.com/docling-project/docling/releases/tag/v2.131.0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-409", "CWE-770" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-10-06T13:41:16Z",
"nvd_published_at" : null
}
}