RCE via SSTI for users with permissions to access the Craft CMS Webhooks plugin
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 sourcePublished 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"
}