CVE-2026-100671: Exposure of Sensitive Information to an Unauthorized Actor in getgrav grav
Grav is a flat-file CMS. In versions 2.0.19 through 2.0.24 — and in 2.0.0 through 2.0.18 and 1.7.x only where content Twig has been explicitly enabled — page content authored by a user holding only page-write permission is rendered through a Twig sandbox that allowlists get_cookie(), which returns any cookie sent with the current request, including the visitor's session cookie. Because the read occurs server-side via filter_input(INPUT_COOKIE, ...), the HttpOnly, Secure and SameSite attributes offer no protection. Grav then stores the finished post-Twig output in a page-content cache keyed only on page identity and the configuration checksum, with no session, user or request dimension and no bypass for authenticated visitors. A page published by a page-write user can therefore capture the session identifier of the next administrator who views it, after which the cached output serves that identifier to unauthenticated visitors, who can replay the cookie to authenticate as that administrator. Since 2.0.19, security.twig_content.process_enabled defaults to true and Security::applyTwigContentDefault() derives each page's process.twig flag from that gate, so content Twig runs on every page with no frontmatter or operator action. Fixed in 2.0.25; 1.7.x is outside the backport scope.
AI Analysis
Technical Summary
Grav CMS versions 2.0.0 through 2.0.24 and 1.7.x (when content Twig is enabled) allow page-write users to execute Twig templates that include a get_cookie() function. This function returns cookies from the current request, including session cookies, which are read server-side and thus not protected by HttpOnly, Secure, or SameSite flags. The rendered output is cached keyed only by page identity and configuration checksum, without differentiating by user session or request. Consequently, a page authored by a page-write user can capture the session cookie of an administrator who views the page next. The cached output then serves this session cookie to unauthenticated visitors, enabling them to impersonate the administrator by replaying the cookie. Since version 2.0.19, Twig content processing is enabled by default on pages without frontmatter, increasing exposure. The vulnerability is resolved in Grav 2.0.25. Version 1.7.x is not patched for this issue.
Potential Impact
An attacker with page-write permission can embed malicious Twig code to capture administrator session cookies. This leads to exposure of sensitive session identifiers to unauthenticated visitors, allowing session hijacking and unauthorized administrative access. The vulnerability compromises confidentiality and integrity of administrator sessions. It affects all Grav CMS installations running affected versions with content Twig enabled, potentially allowing privilege escalation and unauthorized control over the CMS.
Mitigation Recommendations
Upgrade Grav CMS to version 2.0.25 or later, where this vulnerability is fixed. For versions 1.7.x, no official backport is available, so consider disabling content Twig processing or restricting page-write permissions until an alternative mitigation is implemented. Since the vulnerability arises from caching rendered Twig output containing sensitive cookies, disabling or restricting Twig content processing can reduce risk. No other vendor advisories indicate additional mitigations or that the issue is already mitigated.
CVE-2026-100671: Exposure of Sensitive Information to an Unauthorized Actor in getgrav grav
Description
Grav is a flat-file CMS. In versions 2.0.19 through 2.0.24 — and in 2.0.0 through 2.0.18 and 1.7.x only where content Twig has been explicitly enabled — page content authored by a user holding only page-write permission is rendered through a Twig sandbox that allowlists get_cookie(), which returns any cookie sent with the current request, including the visitor's session cookie. Because the read occurs server-side via filter_input(INPUT_COOKIE, ...), the HttpOnly, Secure and SameSite attributes offer no protection. Grav then stores the finished post-Twig output in a page-content cache keyed only on page identity and the configuration checksum, with no session, user or request dimension and no bypass for authenticated visitors. A page published by a page-write user can therefore capture the session identifier of the next administrator who views it, after which the cached output serves that identifier to unauthenticated visitors, who can replay the cookie to authenticate as that administrator. Since 2.0.19, security.twig_content.process_enabled defaults to true and Security::applyTwigContentDefault() derives each page's process.twig flag from that gate, so content Twig runs on every page with no frontmatter or operator action. Fixed in 2.0.25; 1.7.x is outside the backport scope.
CVSS v4.0
Score 8.6high
Affected software
getgrav
grav
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
Grav CMS versions 2.0.0 through 2.0.24 and 1.7.x (when content Twig is enabled) allow page-write users to execute Twig templates that include a get_cookie() function. This function returns cookies from the current request, including session cookies, which are read server-side and thus not protected by HttpOnly, Secure, or SameSite flags. The rendered output is cached keyed only by page identity and configuration checksum, without differentiating by user session or request. Consequently, a page authored by a page-write user can capture the session cookie of an administrator who views the page next. The cached output then serves this session cookie to unauthenticated visitors, enabling them to impersonate the administrator by replaying the cookie. Since version 2.0.19, Twig content processing is enabled by default on pages without frontmatter, increasing exposure. The vulnerability is resolved in Grav 2.0.25. Version 1.7.x is not patched for this issue.
Potential Impact
An attacker with page-write permission can embed malicious Twig code to capture administrator session cookies. This leads to exposure of sensitive session identifiers to unauthenticated visitors, allowing session hijacking and unauthorized administrative access. The vulnerability compromises confidentiality and integrity of administrator sessions. It affects all Grav CMS installations running affected versions with content Twig enabled, potentially allowing privilege escalation and unauthorized control over the CMS.
Mitigation Recommendations
Upgrade Grav CMS to version 2.0.25 or later, where this vulnerability is fixed. For versions 1.7.x, no official backport is available, so consider disabling content Twig processing or restricting page-write permissions until an alternative mitigation is implemented. Since the vulnerability arises from caching rendered Twig output containing sensitive cookies, disabling or restricting Twig content processing can reduce risk. No other vendor advisories indicate additional mitigations or that the issue is already mitigated.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- VulnCheck
- Date Reserved
- 2026-09-26T02:34:55.635Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6ab7c9a9f7a7c5410652fd42
Added to database: 09/26/2026, 13:33:29 UTC
Last enriched: 09/26/2026, 13:48:59 UTC
Last updated: 09/27/2026, 03:32:27 UTC
Views: 13
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.