ChurchCRM CVE-2026-40483
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCompromise Finance user credentials
-
DeliveryAuthenticate to ChurchCRM
-
ExploitOpen pledge record editor
-
InstallInject XSS payload into comment field
-
C2Store malicious payload in database
-
ExecuteVictim opens pledge for editing
-
ImpactPayload executes in victim's browser
-
Step 8Attacker gains victim's session access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires all of the following conditions: (1) attacker must be an authenticated ChurchCRM user with Finance role permissions to access the Pledge Editor; (2) attacker must locate and open a pledge record for editing (or create a new one); (3) victim must subsequently open the same pledge record in the Pledge Editor for editing or viewing (user interaction), which occurs in the victim's authenticated browser session. The vulnerability does not affect unauthenticated users or users without Finance permissions. Default ChurchCRM installations with standard role-based access controls (RBAC) naturally limit the attacker population to Finance-permissioned users, which is typically a small subset of organizational staff. If Finance permissions are overly granted or compromised, the attack surface expands. Organizations that disable the Pledge Editor feature entirely are not at risk. |
| Impact | CVSS score of 5.4 (Medium) with network vector, low complexity, and low privilege requirement underestimates real-world risk due to multiple limiting factors. The PR:L (requires Finance role) and UI:R (requires user interaction to view pledge) significantly constrain the threat model-attackers must first gain Finance permissions and wait for victims to access the compromised record. However, the Scope:Changed (S:C) indicates cross-user impact, making this a privilege-escalation vector if an unprivileged user gains Finance access or exploits a Finance user's session. The stored nature of the XSS means the payload persists and affects all subsequent viewers, increasing organizational blast radius compared to reflected XSS. No public exploit code identified, no CISA KEV listing, and no evidence of active exploitation suggests this remains theoretical at time of analysis. The low CVSS score combined with absence of exploitation signals indicates this is a legitimate but lower-priority issue for organizations without strict authentication controls over Finance roles. Organizations with robust Finance permission segregation and content security policies (CSP) can further reduce risk through compensating controls. |
| Exploit ScenarioDerived | A rogue Finance user or attacker who has compromised a Finance account logs into ChurchCRM and opens a pledge record for editing. They inject a malicious payload such as '" onmouseover="fetch('/exfiltrate?cookie='+document.cookie)' into the donation comment field and save the record. When any other user (including administrators or Finance managers) subsequently opens that same pledge record in the editor, the payload executes in their browser context, exfiltrating their session cookies or performing actions on their behalf, such as modifying donor records or financial data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Apr 18, 2026
ChurchCRM versions prior to 7.2.0 allow authenticated users with Finance permissions to store malicious JavaScript in pledge donation comments via missing HTML escaping, which executes in the browsers of any subsequent users who edit the pledge record, resulting in stored cross-site scripting (XSS). The vulnerability requires Finance role access and victim interaction (opening the pledge editor), but affects all users who view the compromised record, with no known public exploit code or active exploitation confirmed at time of analysis.
RemediationAI
Upgrade ChurchCRM to version 7.2.0 or later immediately, which includes the htmlspecialchars() escaping fix applied in commit b3da72a2b35f9c600e340a9dfd35e7792ff4f899. If immediate upgrade is not feasible, implement compensating controls: (1) restrict Finance role assignment to trusted administrators only and audit existing Finance users for legitimacy, with trade-off being reduced operational flexibility; (2) disable or restrict access to the Pledge Editor feature until patched, using application-level access controls or reverse proxy rules blocking /pledges or similar pledge-related endpoints, with trade-off being inability to edit pledges remotely; (3) deploy a Web Application Firewall (WAF) with Content Security Policy (CSP) headers (e.g., script-src 'self') to limit malicious script execution even if XSS payloads reach browsers, though this does not prevent the stored XSS itself and requires careful policy tuning to avoid breaking legitimate functionality. See GitHub Security Advisory GHSA-wjmf-w8gj-rx7g and PR #8609 for patch details and testing guidance.
Affected ProductsAI
ChurchCRM versions prior to 7.2.0 are affected. The vulnerability exists across all deployment instances running versions 7.1.x and earlier. No CPE string is listed in available references, but GitHub repository identification is: ChurchCRM/CRM (https://github.com/ChurchCRM/CRM). The fix is available in ChurchCRM version 7.2.0 and later.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The Pledge Editor in ChurchCRM directly renders donation comment values into HTML input value attributes without sanitization via htmlspecialchars() or equivalent output encoding. This is a classic CWE-79 (Improper Neutralization of Input During Web Page Generation) vulnerability. The stored XSS vector occurs because comments are persisted to the database unescaped and later rendered without escaping when the pledge record is loaded for editing. The vulnerability chain involves: (1) authenticated Finance user injects malicious HTML/JavaScript into comment field, (2) application stores unescaped payload in database, (3) any user opening that pledge record in the editor receives the comment value in an HTML attribute without context-appropriate escaping, (4) browser interprets the payload within the attribute context (e.g., onmouseover="malicious code"), executing JavaScript in the victim's security context.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Primary rating from Vendor (github) · only source for this CVE.
CVSS VectorVendor: github
DescriptionCVE.org
ChurchCRM is an open-source church management system. In versions prior to 7.2.0, the Pledge Editor renders donation comment values directly into HTML input value attributes without escaping via htmlspecialchars(). An authenticated user with Finance permissions can inject HTML attribute-breaking characters and event handlers into the comment field, which are stored in the database and execute in the browser of any user who subsequently opens the pledge record for editing, resulting in stored XSS. This issue has been fixed in version 7.2.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB