Every CVE Search/ Get API key

CVE-2026-105750

Docling: `enable_local_fetch` is not enforced in HTML browser-rendering mode

5.9 MediumFix available

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

0.40%Up 0.1 points since Oct 6, 2026
90%50%10%1%

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 MediumCVSS: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 MediumCVSS: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=False did 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 playwright dependency 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 MediumCVSS: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 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS 3.1
7.5 HighCVSS: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 MediumCVSS: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=False did 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 playwright dependency 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 MediumCVSS: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 HighCVSS: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=False did 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 playwright dependency 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 MediumCVSS: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

Affected packages
PackageAffectedFixed
docling
PyPI
2.82.0 up to 2.118.1
2.118.1
docling-slim
PyPI
2.92.0 up to 2.118.1
2.118.1
docling
PyPI
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 less
2.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-slim
PyPI
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 less
2.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

History
RecordedChangedSources
first indexedCVE 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

MoveEnter Open