CVE-2026-105750
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.9
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
- Record
CVE-2026-105750- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-552, CWE-863
- Updated
- 2026-11-02
EUVDEUVD-2026-92814
5.9
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
- Record
EUVD-2026-92814- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-q43m-vhcp-mhvm
5.9
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Summary
When the HTML backend renders pages in a headless browser (HTMLBackendOptions(render_page=True)), the enable_local_fetch option is not enforced. A crafted HTML file can embed an arbitrary local file (for example with <iframe src="file:///...">), and that file's contents appear in the page image attached to the returned DoclingDocument.
Details
In render mode, Playwright requests are filtered by HTMLDocumentBackend._get_browser_request_block_reason. In affected versions, this check allowed file: URLs unconditionally, before reading any option. As a result:
enable_local_fetch=Falsedid not block local file access, and- even with
enable_local_fetch=True, file access was not limited to the source document's directory, unlike the non-render path (ImageResourceLoader), which rejects absolute paths and path traversal.
Versions 2.82.0–2.90.x did no request filtering in render mode at all.
The browser runs with JavaScript disabled (from 2.91.0), so disclosure is passive: only what Chromium renders visibly inside the page viewport ends up in the page image.
Only Path inputs are affected. They are loaded through a file:// URL. Stream inputs are loaded with page.set_content() into an opaque origin, from which Chromium does not load file:// subresources.
Impact
An attacker who can submit HTML for conversion can read any text file the conversion process can read (for example .env files, credential files, or other users' documents on a shared host) by having it rendered into the page image.
Only applications that meet all of these conditions are affected:
- they set
HTMLBackendOptions(render_page=True)in Python, - they have the optional
playwrightdependency installed, and - they pass untrusted HTML as a filesystem
Path.
The following are not affected: the default configuration (render_page=False), the docling CLI, docling-serve, and the EPUB, Markdown, XBRL and email backends.
Patches
Fixed in 2.118.1 (#3948). In render mode, file: requests are now blocked unless enable_local_fetch=True, and allowed requests are limited to the source document's directory.
Workarounds
If you can't upgrade, don't use render_page=True on untrusted HTML, or pass the input as a stream instead of a Path.
Credits
Reported by @priyankn.
- Record
GHSA-q43m-vhcp-mhvm- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-552, CWE-863
- Updated
- 2026-11-02
NVD
5.9
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
- Record
CVE-2026-105750- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-552, CWE-863
- Updated
- 2026-11-02
OSV
5.9
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
- Record
CVE-2026-105750- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-552, CWE-863
- Updated
- 2026-11-02
OSVGHSA-q43m-vhcp-mhvm
5.9
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Summary
When the HTML backend renders pages in a headless browser (HTMLBackendOptions(render_page=True)), the enable_local_fetch option is not enforced. A crafted HTML file can embed an arbitrary local file (for example with <iframe src="file:///...">), and that file's contents appear in the page image attached to the returned DoclingDocument.
Details
In render mode, Playwright requests are filtered by HTMLDocumentBackend._get_browser_request_block_reason. In affected versions, this check allowed file: URLs unconditionally, before reading any option. As a result:
enable_local_fetch=Falsedid not block local file access, and- even with
enable_local_fetch=True, file access was not limited to the source document's directory, unlike the non-render path (ImageResourceLoader), which rejects absolute paths and path traversal.
Versions 2.82.0–2.90.x did no request filtering in render mode at all.
The browser runs with JavaScript disabled (from 2.91.0), so disclosure is passive: only what Chromium renders visibly inside the page viewport ends up in the page image.
Only Path inputs are affected. They are loaded through a file:// URL. Stream inputs are loaded with page.set_content() into an opaque origin, from which Chromium does not load file:// subresources.
Impact
An attacker who can submit HTML for conversion can read any text file the conversion process can read (for example .env files, credential files, or other users' documents on a shared host) by having it rendered into the page image.
Only applications that meet all of these conditions are affected:
- they set
HTMLBackendOptions(render_page=True)in Python, - they have the optional
playwrightdependency installed, and - they pass untrusted HTML as a filesystem
Path.
The following are not affected: the default configuration (render_page=False), the docling CLI, docling-serve, and the EPUB, Markdown, XBRL and email backends.
Patches
Fixed in 2.118.1 (#3948). In render mode, file: requests are now blocked unless enable_local_fetch=True, and allowed requests are limited to the source document's directory.
Workarounds
If you can't upgrade, don't use render_page=True on untrusted HTML, or pass the input as a stream instead of a Path.
Credits
Reported by @priyankn.
- Record
GHSA-q43m-vhcp-mhvm- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-552, CWE-863
- Updated
- 2026-11-02
OSVPYSEC-2026-4196
7.5
Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.82.0 until 2.118.1, HTMLBackendOptions(render_page=True) permits file URLs because HTMLDocumentBackend._get_browser_request_block_reason does not enforce the enable_local_fetch setting or confine local requests to the source document directory. Crafted path-backed HTML can embed a readable local text file in a browser-rendered page image when Playwright is installed. Only filesystem Path inputs are affected because stream inputs use an opaque origin, and the default configuration, command-line interface, docling-serve, and non-rendering backends are not affected. This issue is fixed in 2.118.1.
- Record
PYSEC-2026-4196- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVPYSEC-2026-4215
5.9
Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode
Summary
When the HTML backend renders pages in a headless browser (HTMLBackendOptions(render_page=True)), the enable_local_fetch option is not enforced. A crafted HTML file can embed an arbitrary local file (for example with <iframe src="file:///...">), and that file's contents appear in the page image attached to the returned DoclingDocument.
Details
In render mode, Playwright requests are filtered by HTMLDocumentBackend._get_browser_request_block_reason. In affected versions, this check allowed file: URLs unconditionally, before reading any option. As a result:
enable_local_fetch=Falsedid not block local file access, and- even with
enable_local_fetch=True, file access was not limited to the source document's directory, unlike the non-render path (ImageResourceLoader), which rejects absolute paths and path traversal.
Versions 2.82.0–2.90.x did no request filtering in render mode at all.
The browser runs with JavaScript disabled (from 2.91.0), so disclosure is passive: only what Chromium renders visibly inside the page viewport ends up in the page image.
Only Path inputs are affected. They are loaded through a file:// URL. Stream inputs are loaded with page.set_content() into an opaque origin, from which Chromium does not load file:// subresources.
Impact
An attacker who can submit HTML for conversion can read any text file the conversion process can read (for example .env files, credential files, or other users' documents on a shared host) by having it rendered into the page image.
Only applications that meet all of these conditions are affected:
- they set
HTMLBackendOptions(render_page=True)in Python, - they have the optional
playwrightdependency installed, and - they pass untrusted HTML as a filesystem
Path.
The following are not affected: the default configuration (render_page=False), the docling CLI, docling-serve, and the EPUB, Markdown, XBRL and email backends.
Patches
Fixed in 2.118.1 (#3948). In render mode, file: requests are now blocked unless enable_local_fetch=True, and allowed requests are limited to the source document's directory.
Workarounds
If you can't upgrade, don't use render_page=True on untrusted HTML, or pass the input as a stream instead of a Path.
Credits
Reported by @priyankn.
- Record
PYSEC-2026-4215- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
doclingPyPI |
2.82.0 up to 2.118.1 | 2.118.1 |
docling-slimPyPI |
2.92.0 up to 2.118.1 | 2.118.1 |
doclingPyPI |
2.82.0 up to 2.118.1, plus listed versions 2.100.02.101.02.102.02.102.12.102.2 Show 34 moreShow less2.103.02.104.02.105.02.106.02.107.02.108.02.109.02.110.02.111.02.112.02.113.02.114.02.115.02.116.02.117.02.118.02.83.02.84.02.85.02.86.02.87.02.88.02.89.02.90.02.91.02.92.02.93.02.94.02.95.02.96.02.96.12.97.02.98.02.99.0 |
2.118.1 |
docling-slimPyPI |
2.92.0 up to 2.118.1, plus listed versions 2.100.02.101.02.102.02.102.12.102.2 Show 24 moreShow less2.103.02.104.02.105.02.106.02.107.02.108.02.109.02.110.02.111.02.112.02.113.02.114.02.115.02.116.02.117.02.118.02.93.02.94.02.95.02.96.02.96.12.97.02.98.02.99.0 |
2.118.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-105750 is a medium vulnerability (CVSS 5.9) in Docling, published October 5, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.40%, the 34th percentile. Fixed in docling 2.118.1.
References
github.com/docling-project/docling/security/advisories/GHSA-q43m-vhcp-mhvm
github.com/docling-project/docling/pull/3948
github.com/docling-project/docling/commit/1612b8875b0937447ce3122536fb5360a7102a0a
github.com/docling-project/docling/releases/tag/v2.118.1
github.com/advisories/GHSA-q43m-vhcp-mhvm
github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105750.json
nvd.nist.gov/vuln/detail/CVE-2026-105750
github.com/docling-project/docling
pypi.org/project/docling-slim