{"items":[{"id":"NVI-00004552","kind":"vulnerability","title":"Server-Side Template Injection (SSTI) with Grav CMS security sandbox bypass","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-c9gp-64c4-2rrh","CVE-2024-28116"],"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 1.7.45 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"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-aa9f4208ac5a92456bd09ebcab843327"],"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-06-17T07:20:59.980Z","value":"8.8 HIGH (3.1)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d"},{"kind":"CVSS","as_of":"2026-06-17T07:20:59.980Z","value":"8.8 HIGH (3.1)","meaning":"nvd@nist.gov severity; no combined Null risk score.","source_id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d"},{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"5.807%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.9313. Missing scores are unknown.","source_id":"sr-aa9f4208ac5a92456bd09ebcab843327"}],"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-6a9832e2d46a9643ee132d13bcb0e1e0","url":"https://github.com/advisories/GHSA-c9gp-64c4-2rrh","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-c9gp-64c4-2rrh","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:10.697Z"},{"id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-28116","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2024-28116","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-01T00:59:14.650Z"},{"id":"sr-aa9f4208ac5a92456bd09ebcab843327","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-2024-28116","publisher":"FIRST EPSS","observed_at":"2026-10-31T22:06:03.704Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nGrav CMS is vulnerable to a Server-Side Template Injection (SSTI), which allows any authenticated user (editor permissions are sufficient) to execute arbitrary code on the remote server bypassing the existing security sandbox.\n\n### Details\nThe Grav CMS implements a custom sandbox to protect the powerful Twig methods \"registerUndefinedFunctionCallback()\" and \"registerUndefinedFilterCallback()\", in order to avoid SSTI attacks by denying the calling of dangerous PHP functions into the Twig template directives (such as: \"exec()\", \"passthru()\", \"system()\", etc.). \nThe current defenses are based on a blacklist of prohibited functions (PHP, Twig), checked through the \"isDangerousFunction()\" method called in the file \"system/src/Grav/Common/Twig.php\":\n\n```php\n...\n$this->twig = new TwigEnvironment($loader_chain, $params);\n\n$this->twig->registerUndefinedFunctionCallback(function (string $name) use ($config) {\n    $allowed = $config->get('system.twig.safe_functions');\n    if (is_array($allowed) && in_array($name, $allowed, true) && function_exists($name)) {\n        return new TwigFunction($name, $name);\n    }\n    if ($config->get('system.twig.undefined_functions')) {\n        if (f","public_affected_ranges":["ECOSYSTEM: introduced 0; fixed 1.7.45"]}],"null_published_at":"2026-11-05T03:52:54.760Z","source_updated_at":"2026-09-10T03:50:10.371Z","source_disclosed_at":"2024-03-22T16:30:26.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:42:10.697Z"},{"id":"NVI-00004552","kind":"vulnerability","title":"Server-Side Template Injection (SSTI) with Grav CMS security sandbox bypass","revision":2,"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-c9gp-64c4-2rrh","CVE-2024-28116"],"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 1.7.45 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"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-474c77e56d10ae9e36ab4f6092f4bc7d"],"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-06-17T07:20:59.980Z","value":"8.8 HIGH (3.1)","meaning":"security-advisories@github.com severity; no combined Null risk score.","source_id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d"},{"kind":"CVSS","as_of":"2026-06-17T07:20:59.980Z","value":"8.8 HIGH (3.1)","meaning":"nvd@nist.gov severity; no combined Null risk score.","source_id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d"}],"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-6a9832e2d46a9643ee132d13bcb0e1e0","url":"https://github.com/advisories/GHSA-c9gp-64c4-2rrh","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-c9gp-64c4-2rrh","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:10.697Z"},{"id":"sr-474c77e56d10ae9e36ab4f6092f4bc7d","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-28116","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2024-28116","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-01T00:59:14.650Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nGrav CMS is vulnerable to a Server-Side Template Injection (SSTI), which allows any authenticated user (editor permissions are sufficient) to execute arbitrary code on the remote server bypassing the existing security sandbox.\n\n### Details\nThe Grav CMS implements a custom sandbox to protect the powerful Twig methods \"registerUndefinedFunctionCallback()\" and \"registerUndefinedFilterCallback()\", in order to avoid SSTI attacks by denying the calling of dangerous PHP functions into the Twig template directives (such as: \"exec()\", \"passthru()\", \"system()\", etc.). \nThe current defenses are based on a blacklist of prohibited functions (PHP, Twig), checked through the \"isDangerousFunction()\" method called in the file \"system/src/Grav/Common/Twig.php\":\n\n```php\n...\n$this->twig = new TwigEnvironment($loader_chain, $params);\n\n$this->twig->registerUndefinedFunctionCallback(function (string $name) use ($config) {\n    $allowed = $config->get('system.twig.safe_functions');\n    if (is_array($allowed) && in_array($name, $allowed, true) && function_exists($name)) {\n        return new TwigFunction($name, $name);\n    }\n    if ($config->get('system.twig.undefined_functions')) {\n        if (f","public_affected_ranges":["ECOSYSTEM: introduced 0; fixed 1.7.45"]}],"null_published_at":"2026-11-01T14:34:07.642Z","source_updated_at":"2026-09-10T03:50:10.371Z","source_disclosed_at":"2024-03-22T16:30:26.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:42:10.697Z"},{"id":"NVI-00004552","kind":"vulnerability","title":"Server-Side Template Injection (SSTI) with Grav CMS security sandbox bypass","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-c9gp-64c4-2rrh","CVE-2024-28116"],"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 1.7.45 for getgrav/grav. Confirm the publisher’s latest guidance.","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"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-6a9832e2d46a9643ee132d13bcb0e1e0","url":"https://github.com/advisories/GHSA-c9gp-64c4-2rrh","basis":"vendor_advisory","notes":"GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.","title":"GHSA-c9gp-64c4-2rrh","publisher":"GitHub Advisory Database via OSV","observed_at":"2026-10-31T21:42:10.697Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-6a9832e2d46a9643ee132d13bcb0e1e0"],"technology":"getgrav/grav","known_exclusions":[],"conditions_summary":"### Summary\nGrav CMS is vulnerable to a Server-Side Template Injection (SSTI), which allows any authenticated user (editor permissions are sufficient) to execute arbitrary code on the remote server bypassing the existing security sandbox.\n\n### Details\nThe Grav CMS implements a custom sandbox to protect the powerful Twig methods \"registerUndefinedFunctionCallback()\" and \"registerUndefinedFilterCallback()\", in order to avoid SSTI attacks by denying the calling of dangerous PHP functions into the Twig template directives (such as: \"exec()\", \"passthru()\", \"system()\", etc.). \nThe current defenses are based on a blacklist of prohibited functions (PHP, Twig), checked through the \"isDangerousFunction()\" method called in the file \"system/src/Grav/Common/Twig.php\":\n\n```php\n...\n$this->twig = new TwigEnvironment($loader_chain, $params);\n\n$this->twig->registerUndefinedFunctionCallback(function (string $name) use ($config) {\n    $allowed = $config->get('system.twig.safe_functions');\n    if (is_array($allowed) && in_array($name, $allowed, true) && function_exists($name)) {\n        return new TwigFunction($name, $name);\n    }\n    if ($config->get('system.twig.undefined_functions')) {\n        if (f","public_affected_ranges":["ECOSYSTEM: introduced 0; fixed 1.7.45"]}],"null_published_at":"2026-10-31T22:12:57.131Z","source_updated_at":"2026-09-10T03:50:10.371Z","source_disclosed_at":"2024-03-22T16:30:26.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:42:10.697Z"}],"next_cursor":null,"snapshot_revision":"42594"}