{"items":[{"id":"NVI-00012160","kind":"vulnerability","title":"Docling: METS-GBS archive member limit enforced after full member enumeration (memory exhaustion during format detection)","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected.","NVD lastModified does not establish freshness of every associated CPE record."],"lifecycle":"active","identifiers":["GHSA-3cr3-8m4c-fpxw","CVE-2026-105747"],"plain_summary":"GitHub lists this reviewed advisory for docling, docling-slim. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-06df46477d6511312588ab6ada358835"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-06T13:43:20.000Z","value":"4.3 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-ba95b5a89071aef6b72f972078ca3c9e"},{"kind":"CVSS","as_of":"2026-10-07T18:54:39.350Z","value":"4.3 MEDIUM (3.1)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-807eca4e92f9c3870d4095b829697031"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.299%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.22607. Missing scores are unknown.","source_id":"sr-06df46477d6511312588ab6ada358835"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-ba95b5a89071aef6b72f972078ca3c9e","url":"https://github.com/advisories/GHSA-3cr3-8m4c-fpxw","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-3cr3-8m4c-fpxw","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T00:59:16.959Z"},{"id":"sr-807eca4e92f9c3870d4095b829697031","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-105747","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-105747","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-03T09:58:14.367Z"},{"id":"sr-06df46477d6511312588ab6ada358835","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-105747","publisher":"FIRST EPSS","observed_at":"2026-11-01T01:39:43.064Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.45.0, < 2.131.0"]},{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling-slim","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.92.0, < 2.131.0"]}],"null_published_at":"2026-11-08T15:11:49.380Z","source_updated_at":"2026-10-06T13:43:20.000Z","source_disclosed_at":"2026-10-06T13:41:16.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Source facts changed; compare the preserved prior revision.","null_first_observed_at":"2026-11-01T00:59:16.959Z"},{"id":"NVI-00012160","kind":"vulnerability","title":"Docling: METS-GBS archive member limit enforced after full member enumeration (memory exhaustion during format detection)","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-3cr3-8m4c-fpxw","CVE-2026-105747"],"plain_summary":"GitHub lists this reviewed advisory for docling, docling-slim. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-06df46477d6511312588ab6ada358835"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-06T13:43:20.000Z","value":"4.3 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-ba95b5a89071aef6b72f972078ca3c9e"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.299%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.22607. Missing scores are unknown.","source_id":"sr-06df46477d6511312588ab6ada358835"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-ba95b5a89071aef6b72f972078ca3c9e","url":"https://github.com/advisories/GHSA-3cr3-8m4c-fpxw","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-3cr3-8m4c-fpxw","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T00:59:16.959Z"},{"id":"sr-06df46477d6511312588ab6ada358835","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-105747","publisher":"FIRST EPSS","observed_at":"2026-11-01T01:39:43.064Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.45.0, < 2.131.0"]},{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling-slim","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.92.0, < 2.131.0"]}],"null_published_at":"2026-11-01T14:34:14.094Z","source_updated_at":"2026-10-06T13:43:20.000Z","source_disclosed_at":"2026-10-06T13:41:16.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-11-01T00:59:16.959Z"},{"id":"NVI-00012160","kind":"vulnerability","title":"Docling: METS-GBS archive member limit enforced after full member enumeration (memory exhaustion during format detection)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-3cr3-8m4c-fpxw","CVE-2026-105747"],"plain_summary":"GitHub lists this reviewed advisory for docling, docling-slim. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-06T13:43:20.000Z","value":"4.3 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-ba95b5a89071aef6b72f972078ca3c9e"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-ba95b5a89071aef6b72f972078ca3c9e","url":"https://github.com/advisories/GHSA-3cr3-8m4c-fpxw","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-3cr3-8m4c-fpxw","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T00:59:16.959Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.45.0, < 2.131.0"]},{"certainty":"source_listed","source_ids":["sr-ba95b5a89071aef6b72f972078ca3c9e"],"technology":"docling-slim","known_exclusions":[],"conditions_summary":"### 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","public_affected_ranges":[">= 2.92.0, < 2.131.0"]}],"null_published_at":"2026-11-01T01:04:01.249Z","source_updated_at":"2026-10-06T13:43:20.000Z","source_disclosed_at":"2026-10-06T13:41:16.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-01T00:59:16.959Z"}],"next_cursor":null,"snapshot_revision":"42594"}