Skip to content
Heist/ feed
Back to feed
High

RCE via SSTI for users with permissions to access the Craft CMS Webhooks plugin

Type: advisorySources: OSV

Webhooks for Craft CMS plugin adds the ability to manage “webhooks” in Craft CMS, which will send GET or POST requests when certain events occur. From version 3.0.0 to before version 3.2.0, the Webhooks plugin renders user-supplied template content through Twig’s renderString() function without sandbox protection. This allows an authenticated user with access to the Craft control panel and permissions to access the Webhooks plugin to inject Twig template code that calls arbitrary PHP functions. This is possible even if allowAdminChanges is set to false. This issue has been patched in version 3.2.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-32261
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 15:07 UTC · Revision 1

Source evidence

RCE via SSTI for users with permissions to access the Craft CMS Webhooks plugin

core-osv · Original source

Published 16 Mar 2026, 18:50 UTC

Webhooks for Craft CMS plugin adds the ability to manage “webhooks” in Craft CMS, which will send GET or POST requests when certain events occur. From version 3.0.0 to before version 3.2.0, the Webhooks plugin renders user-supplied template content through Twig’s renderString() function without sandbox protection. This allows an authenticated user with access to the Craft control panel and permissions to access the Webhooks plugin to inject Twig template code that calls arbitrary PHP functions. This is possible even if allowAdminChanges is set to false. This issue has been patched in version 3.2.0.

osv:CVE-2026-32261
Complete source record
{
  "id": "dab23c79b4084dcd84307db549bc7f7a415a5c4ff95da659c09fed5d9212df45",
  "url": "https://osv.dev/vulnerability/CVE-2026-32261",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "RCE via SSTI for users with permissions to access the Craft CMS Webhooks plugin",
    "summary": "Webhooks for Craft CMS plugin adds the ability to manage “webhooks” in Craft CMS, which will send GET or POST requests when certain events occur. From version 3.0.0 to before version 3.2.0, the Webhooks plugin renders user-supplied template content through Twig’s renderString() function without sandbox protection. This allows an authenticated user with access to the Craft control panel and permissions to access the Webhooks plugin to inject Twig template code that calls arbitrary PHP functions. This is possible even if allowAdminChanges is set to false. This issue has been patched in version 3.2.0.",
    "evidence": "osv:CVE-2026-32261",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-32261",
      "aliases": [
        "CVE-2026-32261",
        "GHSA-8wg7-wm29-2rvg"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/craftcms/webhooks",
              "type": "GIT",
              "events": [
                {
                  "introduced": "d5bcc59452a6facbf11f81799cc365b6d287402b"
                },
                {
                  "fixed": "63d24cd4cb706d565d2c11f3c87e7ffb36a02d4c"
                },
                {
                  "fixed": "88344991a68b07145567c46dfd0ae3328c521f62"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "3.0.0"
                      },
                      {
                        "fixed": "3.2.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "88344991a68b07145567c46dfd0ae3328c521f62"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "3.1.1",
            "3.1.0",
            "3.0.5",
            "3.0.2",
            "3.0.1",
            "3.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-32261.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.831346931Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32261.json",
        "https://github.com/craftcms/webhooks/security/advisories/GHSA-8wg7-wm29-2rvg",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-32261",
        "https://github.com/craftcms/webhooks/commit/88344991a68b07145567c46dfd0ae3328c521f62"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-1336"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32261.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-32261",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496671,
  "published_at": "2026-03-16T18:50:18.158+00:00"
}