{"items":[{"id":"NVI-00006745","kind":"vulnerability","title":"Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()","revision":5,"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-2vcx-h8p2-9pg9","CVE-2026-59193"],"plain_summary":"GitHub lists this reviewed advisory for getgrav/grav. 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-130d0b8ec7fa25be31d1121b1f2c618d"],"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},{"summary":"The original advisory lists fixed boundaries 2.0.0 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"action_type":"vendor_patch","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-09-16T22:12:12.000Z","value":"4.9 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-1e552ecd890dba8a6e48e31ff3d5fe76"},{"kind":"CVSS","as_of":"2026-10-25T15:10:00.147Z","value":"4.9 MEDIUM (3.1)","meaning":"nvd@nist.gov severity; no combined Null risk score.","source_id":"sr-7ee560fe6fd46cd006f92fc785a73c62"},{"kind":"CVSS","as_of":"2026-10-25T15:10:00.147Z","value":"6.9 MEDIUM (4.0)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-7ee560fe6fd46cd006f92fc785a73c62"},{"kind":"EPSS","as_of":"2026-11-02T12:00:30.000Z","value":"0.600%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.48732. Missing scores are unknown.","source_id":"sr-130d0b8ec7fa25be31d1121b1f2c618d"}],"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-1e552ecd890dba8a6e48e31ff3d5fe76","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T19:09:30.244Z"},{"id":"sr-c12c65f16bae4858766c8f324d98d2bc","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.645Z"},{"id":"sr-7ee560fe6fd46cd006f92fc785a73c62","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59193","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-59193","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-01T07:24:39.943Z"},{"id":"sr-130d0b8ec7fa25be31d1121b1f2c618d","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-59193","publisher":"FIRST EPSS","observed_at":"2026-11-02T20:15:58.859Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-1e552ecd890dba8a6e48e31ff3d5fe76"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":[">= 1.0.0, < 2.0.0"]},{"certainty":"source_listed","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":["ECOSYSTEM: introduced 1.0.0; fixed 2.0.0"]}],"null_published_at":"2026-11-04T10:04:47.615Z","source_updated_at":"2026-09-16T22:12:12.000Z","source_disclosed_at":"2026-09-16T22:12:10.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-10-31T21:41:49.645Z"},{"id":"NVI-00006745","kind":"vulnerability","title":"Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()","revision":4,"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-2vcx-h8p2-9pg9","CVE-2026-59193"],"plain_summary":"GitHub lists this reviewed advisory for getgrav/grav. 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-21f5d476e711880ad14b0d9ba6025166"],"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},{"summary":"The original advisory lists fixed boundaries 2.0.0 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"action_type":"vendor_patch","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-09-16T22:12:12.000Z","value":"4.9 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-1e552ecd890dba8a6e48e31ff3d5fe76"},{"kind":"CVSS","as_of":"2026-10-25T15:10:00.147Z","value":"4.9 MEDIUM (3.1)","meaning":"nvd@nist.gov severity; no combined Null risk score.","source_id":"sr-7ee560fe6fd46cd006f92fc785a73c62"},{"kind":"CVSS","as_of":"2026-10-25T15:10:00.147Z","value":"6.9 MEDIUM (4.0)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-7ee560fe6fd46cd006f92fc785a73c62"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.600%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.48745. Missing scores are unknown.","source_id":"sr-21f5d476e711880ad14b0d9ba6025166"}],"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-1e552ecd890dba8a6e48e31ff3d5fe76","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T19:09:30.244Z"},{"id":"sr-c12c65f16bae4858766c8f324d98d2bc","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.645Z"},{"id":"sr-7ee560fe6fd46cd006f92fc785a73c62","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-59193","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-59193","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-01T07:24:39.943Z"},{"id":"sr-21f5d476e711880ad14b0d9ba6025166","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-59193","publisher":"FIRST EPSS","observed_at":"2026-10-31T22:06:15.383Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-1e552ecd890dba8a6e48e31ff3d5fe76"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":[">= 1.0.0, < 2.0.0"]},{"certainty":"source_listed","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":["ECOSYSTEM: introduced 1.0.0; fixed 2.0.0"]}],"null_published_at":"2026-11-03T17:49:21.349Z","source_updated_at":"2026-09-16T22:12:12.000Z","source_disclosed_at":"2026-09-16T22:12:10.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-10-31T21:41:49.645Z"},{"id":"NVI-00006745","kind":"vulnerability","title":"Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-2vcx-h8p2-9pg9","CVE-2026-59193"],"plain_summary":"GitHub lists this reviewed advisory for getgrav/grav. 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-21f5d476e711880ad14b0d9ba6025166"],"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},{"summary":"The original advisory lists fixed boundaries 2.0.0 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"action_type":"vendor_patch","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-09-16T22:12:12.000Z","value":"4.9 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-1e552ecd890dba8a6e48e31ff3d5fe76"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.600%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.48745. Missing scores are unknown.","source_id":"sr-21f5d476e711880ad14b0d9ba6025166"}],"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-1e552ecd890dba8a6e48e31ff3d5fe76","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T19:09:30.244Z"},{"id":"sr-c12c65f16bae4858766c8f324d98d2bc","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.645Z"},{"id":"sr-21f5d476e711880ad14b0d9ba6025166","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-59193","publisher":"FIRST EPSS","observed_at":"2026-10-31T22:06:15.383Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-1e552ecd890dba8a6e48e31ff3d5fe76"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":[">= 1.0.0, < 2.0.0"]},{"certainty":"source_listed","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":["ECOSYSTEM: introduced 1.0.0; fixed 2.0.0"]}],"null_published_at":"2026-11-02T10:00:37.175Z","source_updated_at":"2026-09-16T22:12:12.000Z","source_disclosed_at":"2026-09-16T22:12:10.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-10-31T21:41:49.645Z"},{"id":"NVI-00006745","kind":"vulnerability","title":"Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-2vcx-h8p2-9pg9","CVE-2026-59193"],"plain_summary":"OSV carries this publisher advisory for getgrav/grav. This is an aggregated source copy; consult the original publisher and compare update dates.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"The original advisory lists fixed boundaries 2.0.0 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"action_type":"vendor_patch","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null},{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-21f5d476e711880ad14b0d9ba6025166"],"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":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.600%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.48745. Missing scores are unknown.","source_id":"sr-21f5d476e711880ad14b0d9ba6025166"}],"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-c12c65f16bae4858766c8f324d98d2bc","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.645Z"},{"id":"sr-21f5d476e711880ad14b0d9ba6025166","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-59193","publisher":"FIRST EPSS","observed_at":"2026-10-31T22:06:15.383Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":["ECOSYSTEM: introduced 1.0.0; fixed 2.0.0"]}],"null_published_at":"2026-10-31T22:27:09.610Z","source_updated_at":"2026-09-16T22:30:08.130Z","source_disclosed_at":"2026-09-16T22:12:10.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-10-31T21:41:49.645Z"},{"id":"NVI-00006745","kind":"vulnerability","title":"Grav CMS — Improper Handling of Highly Compressed Data in Installer::unZip()","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-2vcx-h8p2-9pg9","CVE-2026-59193"],"plain_summary":"OSV carries this publisher advisory for getgrav/grav. This is an aggregated source copy; consult the original publisher and compare update dates.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"The original advisory lists fixed boundaries 2.0.0 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"action_type":"vendor_patch","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":[],"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-c12c65f16bae4858766c8f324d98d2bc","url":"https://github.com/advisories/GHSA-2vcx-h8p2-9pg9","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-2vcx-h8p2-9pg9","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:41:49.645Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-c12c65f16bae4858766c8f324d98d2bc"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nAn authenticated admin.super user can crash Grav or fill the disk by uploading a specially crafted ZIP archive through the Direct Install tool. The method `Installer::unZip()` calls `ZipArchive::extractTo()` without any limit on uncompressed size, entry count, or directory depth, enabling Zip Bomb (CWE-409), stack overflow (CWE-674), and disk/inode exhaustion.\n### Details\nThe vulnerability is in `system/src/Grav/Common/GPM/Installer.php:176-208` (`Installer::unZip()`). The `ZipArchive::extractTo()` call at line 184 is not preceded by any validation of the archive contents.\n\nMissing validation:\n- ❌ No total uncompressed size check (decompression bomb — CWE-409)\n- ❌ No entry count check (inode exhaustion)\n- ❌ No directory nesting depth check (stack overflow in `Folder::doDelete()` — CWE-674)\n\nThe subsequent cleanup call `Folder::delete($destination)` at line 189 recursively deletes every subdirectory without depth limit (`Folder.php:531-547`). A ZIP with thousands of nested directories will cause PHP's maximum nesting level to be exceeded, so the cleanup fails silently and leaves extracted files on disk.\n\nThe existing Zip Slip fix (GHSA-w48r-jppp-rcfw / CVE-2026-42607, co","public_affected_ranges":["ECOSYSTEM: introduced 1.0.0; fixed 2.0.0"]}],"null_published_at":"2026-10-31T22:13:10.071Z","source_updated_at":"2026-09-16T22:30:08.130Z","source_disclosed_at":"2026-09-16T22:12:10.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-10-31T21:41:49.645Z"}],"next_cursor":null,"snapshot_revision":"42594"}