CVE-2026-105749

mediumPriorität · verfolgen · 0EPSS 0.003 · 22. PerzentilUS
grimoire priorityP3 · Track
Exploitable?
—
no known exploitation
Likely / severe?
0.29% (22nd) EPSS
CVSS 6.5 · medium
Is it mine?
3 products
Prüfe deine Angriffsfläche
Who says so?
2 sources
osv · nvd

EPSS · bewertet 2026-10-27

Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.0.0 until 2.131.0, the HTML, JATS, OpenDocument spreadsheet, and BoxNote backends, including docling/backend/html_backend.py, docling/backend/jats_backend.py, and docling/backend/boxnote_backend.py, accept the rowspan and colspan attribute values without an upper bound and execute loops or allocate a table grid proportional to the declared span. A very small document can therefore cause sustained CPU use or multi-gigabyte memory allocation, and the document_timeout setting does not interrupt the single backend conversion call. Export through the TableData.grid property can further materialize the oversized grid. This issue is fixed in 2.131.0.

01

cvss

Technischer Schweregrad, 0–10. Eine Zeile je Quelle.

6.5
010

Basiswert 0–10 · höher = schwerwiegender · Vektor überfahren zum Auflösen

v3.16.5mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:Hsecondary · security-advisories@github.comAusnutzbarkeit 2.8 · Auswirkung 3.6
v3.16.5mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:Hsecondary · OSV
v3.16mediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H/E:Usecondary · CVSS-BT (t0sche)
02

SSVC

Eine Handlungsentscheidung — aus Ausnutzung und Auswirkung.

Exploitation: poc · Automatable: no · Technical Impact: partialcoordinatorcisa_ssvcUS
03

schwächen

Die CWE-Schwächeklassen, zu denen dies gehört.

04

betroffene Produkte (3)

Betroffene Produkte und Versionsbereiche.

05

Advisories (3)

Hersteller- und Ökosystem-Meldungen dazu.

  • GHSA-cgc7-9qp3-86m3Docling: Unbounded table rowspan/colspan in HTML, JATS, ODS and BoxNote backends causes CPU/memory exhaustion2026-10-07ghsa · osvUS

    ### Summary The HTML, JATS, ODS (OpenDocument spreadsheet) and BoxNote backends accept table `rowspan` / `colspan` values without an upper bound. A few bytes of input, such as `<td rowspan="100000000">`, make docling run loops proportional to the declared span and allocate a table grid of the declared size. The result is CPU and memory exhaustion. ### Details - `docling/backend/html_backend.py` (`_get_cell_spans`) parses span attributes with no upper limit. The cell-filling loop then iterates `row_span × col_span` times. - `docling/backend/jats_backend.py` and `docling/backend/boxnote_backend.py` fill their tables the same way. - The OpenDocument spreadsheet path scans the declared span range. - Export (for example `export_to_markdown()`) materialises the full grid through `TableData.grid` in docling-core. `document_timeout` does not bound this. It is checked between pipeline stages, and these backends convert the whole document in a single call. `max_file_size` and `max_num_pages` do not help because the payload is tiny. Measured on 2.130.0: a 54-byte HTML file with `rowspan="1e8"` takes about 4.4 s of CPU, and the time grows linearly with the value. A 52-byte file with `colspan="3000000"` takes about 23 s and reaches 4.5 GB peak memory during Markdown export. ### Impact Denial of service of the converting process from a very small input document. Confidentiality and integrity are not affected. ### Proof of concept ```html <table><tr><td colspan="3000000">x</td></tr></table> ``` ```python from docling.document_converter import DocumentConverter DocumentConverter().convert("span.html").document.export_to_markdown() ``` ### Patches Fixed in docling 2.131.0 by [#4414](https://github.com/docling-project/docling/pull/4414). Table spans are clamped to the HTML limits (colspan 1000, rowspan 65534) and to the actual size of the table in the HTML, JATS, BoxNote and OpenDocument spreadsheet backends, so conversion time and memory grow with the real table only. ### Workarounds Upgrade to 2.131.0. For older versions: Run conversions of untrusted documents in a separate process with memory and CPU-time limits, or restrict `allowed_formats` to formats that are not affected.

  • PYSEC-2026-41952026-10-05vendor · osvUS

    Docling simplifies document processing by parsing diverse formats and providing integrations with the generative AI ecosystem. From 2.0.0 until 2.131.0, the HTML, JATS, OpenDocument spreadsheet, and BoxNote backends, including docling/backend/html_backend.py, docling/backend/jats_backend.py, and docling/backend/boxnote_backend.py, accept the rowspan and colspan attribute values without an upper bound and execute loops or allocate a table grid proportional to the declared span. A very small document can therefore cause sustained CPU use or multi-gigabyte memory allocation, and the document_timeout setting does not interrupt the single backend conversion call. Export through the TableData.grid property can further materialize the oversized grid. This issue is fixed in 2.131.0.

  • PYSEC-2026-4211Docling: Unbounded table rowspan/colspan in HTML, JATS, ODS and BoxNote backends causes CPU/memory exhaustion2026-10-15vendor · osvUS

    ### Summary The HTML, JATS, ODS (OpenDocument spreadsheet) and BoxNote backends accept table `rowspan` / `colspan` values without an upper bound. A few bytes of input, such as `<td rowspan="100000000">`, make docling run loops proportional to the declared span and allocate a table grid of the declared size. The result is CPU and memory exhaustion. ### Details - `docling/backend/html_backend.py` (`_get_cell_spans`) parses span attributes with no upper limit. The cell-filling loop then iterates `row_span × col_span` times. - `docling/backend/jats_backend.py` and `docling/backend/boxnote_backend.py` fill their tables the same way. - The OpenDocument spreadsheet path scans the declared span range. - Export (for example `export_to_markdown()`) materialises the full grid through `TableData.grid` in docling-core. `document_timeout` does not bound this. It is checked between pipeline stages, and these backends convert the whole document in a single call. `max_file_size` and `max_num_pages` do not help because the payload is tiny. Measured on 2.130.0: a 54-byte HTML file with `rowspan="1e8"` takes about 4.4 s of CPU, and the time grows linearly with the value. A 52-byte file with `colspan="3000000"` takes about 23 s and reaches 4.5 GB peak memory during Markdown export. ### Impact Denial of service of the converting process from a very small input document. Confidentiality and integrity are not affected. ### Proof of concept ```html <table><tr><td colspan="3000000">x</td></tr></table> ``` ```python from docling.document_converter import DocumentConverter DocumentConverter().convert("span.html").document.export_to_markdown() ``` ### Patches Fixed in docling 2.131.0 by [#4414](https://github.com/docling-project/docling/pull/4414). Table spans are clamped to the HTML limits (colspan 1000, rowspan 65534) and to the actual size of the table in the HTML, JATS, BoxNote and OpenDocument spreadsheet backends, so conversion time and memory grow with the real table only. ### Workarounds Upgrade to 2.131.0. For older versions: Run conversions of untrusted documents in a separate process with memory and CPU-time limits, or restrict `allowed_formats` to formats that are not affected.

06

auch bekannt als (3)

Weitere Namen und Kennungen dieser Entität.

07

quellen

Welche Quellen diesen Datensatz belegen und wann.

veröffentlicht 2026-10-05geändert 2026-10-08
08

Referenzen (4) nvd

Externe Belege — Patches, Meldungen, Analysen.

scry

Angreifer nutzen Schwachstellen wie diese gegen im Internet exponierte Dienste aus. Sehen Sie mit einem kostenlosen Passiv-Scan, was exponiert ist.

Kostenloser Scan