GHSA-xg43-5579-qw6v
GHSA-xg43-5579-qw6v · adawolfa/isdoc: Uncontrolled resource consumption (decompression bomb) when reading untrusted ISDOCX or PDF files
This page contains facts from public vulnerability sources. Check the original advisory before updating.
### Impact `adawolfa/isdoc` reads ISDOC invoices from ISDOCX (ZIP) archives and from PDF files with embedded ISDOC documents and supplements. Affected versions inflate ZIP entries and read embedded files **without validating their uncompressed size**, so a small crafted file can amplify into gigabytes: - **ISDOCX decompression bomb** — `getFromName()` inflates the ISDOC document and binary supplements with no size cap. - **`saveTo()` disk-fill** — the supplement copy loop writes inflated bytes to disk with no running byte budget, so a bomb can exhaust disk even if the central-directory size is under-reported. - **PDF embedded files** — an embedded file whose declared `Length` is enormous is read and digested with no upper bound. Exploitation requires the application to parse an attacker-supplied `.isdocx` or `.pdf` (the typical use is generating files or parsing files from trusted vendors, so a user must be induced to process a malicious file). When that happens the process can be driven to exhaust memory or disk, causing denial of service. There is **no confidentiality or integrity impact** — availability only. ### Patches Fixed in **1.4.3**, **1.5.1**, **1.6.1** and **2.0.0**. The readers now: - read the uncompressed size from the ZIP central directory (`statName()`) and reject entries over a cap **before inflating** — 256 KB (`DocumentSizeLimit`) for the ISDOC document, 32 MB (`SizeLimit`) for supplements; - enforce a running byte budget in `saveTo()` and unlink the partial file on overflow; - reject PDF-embedded files whose declared `Length` exceeds 256 MB before reading or digesting them. New exceptions `ReaderException::zipEntryTooLarge()`, `SupplementException::supplementTooLarge()` and `ReaderException::pdfSupplementTooLarge()` surface the rejection. ### Unsupported versions Versions **before 1.4.0** (the 1.0–1.3 lines) are also affected and will **not** receive a fix, because they target end-of-life PHP. Users on those lines should upgrade to a maintained release — 1.4.3, 1.5.1, 1.6.1, or 2.0.0. ### Workarounds No code-level workaround exists in affected versions; upgrading is the fix. As mitigation, restrict parsing to trusted input, or enforce an external size / decompression limit (validate ZIP entry sizes, cap process memory) before handing files to the library. ### Resources - Decompression-bomb fix: commit [`935fb2a`](https://github.com/adawolfa/isdoc/commit/935fb2aa41ceddfcf43174a61a36ec620611a105) (backported, released as 1.4.3 / 1.5.1 / 1.6.1) and [`02a1012`](https://github.com/adawolfa/isdoc/commit/02a10123a3d5fd92950b8e4952959317c0a18952) (master, released as 2.0.0). - CWE-409 (Improper Handling of Highly Compressed Data), CWE-400 (Uncontrolled Resource Consumption).
CVSS 6.5 · Medium · Fix available
- Published
- Updated
Stack: php
Affected products and versions
adawolfa/isdoc Packagist
- Versions
- 1.6.0
- Affected ranges
- ECOSYSTEM: ≥ 1.6.0, < 1.6.1
Update to 1.6.1
adawolfa/isdoc Packagist
- Versions
- 1.5.0
- Affected ranges
- ECOSYSTEM: ≥ 1.5.0, < 1.5.1
Update to 1.5.1
adawolfa/isdoc Packagist
- Versions
- 1.4.0
- 1.4.1
- 1.4.2
- Affected ranges
- ECOSYSTEM: ≥ 1.4.0, < 1.4.3
Update to 1.4.3
adawolfa/isdoc Packagist
- Versions
- 1.0.0
- 1.0.1
- 1.0.10
- 1.0.2
- 1.0.3
- 1.0.4
- 1.0.5
- 1.0.6
- 1.0.7
- 1.0.8
- 1.0.9
- 1.1.0
- 1.1.1
- 1.1.2
- 1.1.3
- 1.2.0
- 1.2.1
- 1.2.2
- 1.2.3
- 1.2.4
- 1.2.5
- 1.2.6
- 1.2.7
- 1.3.0
- 1.3.1
- 1.3.2
- 1.3.3
- 1.3.4
- 1.3.5
- 1.3.6
- 1.3.7
- 1.4.0
- 1.4.1
- 1.4.2
- 1.4.3
- 1.4.4
- 1.5.0
- 1.5.1
- 1.5.2
- 1.6.0
- 1.6.1
- 1.6.2
- 2.0.0
- 2.0.1
- Affected ranges
- ECOSYSTEM: (−∞, +∞)
No fix published
Original sources
- https://github.com/adawolfa/isdoc/security/advisories/GHSA-xg43-5579-qw6v
- https://github.com/adawolfa/isdoc/commit/02a10123a3d5fd92950b8e4952959317c0a18952
- https://github.com/adawolfa/isdoc/commit/935fb2aa41ceddfcf43174a61a36ec620611a105
- https://github.com/adawolfa/isdoc
- https://osv.dev/vulnerability/GHSA-xg43-5579-qw6v