Skip to main content

ChurchCRM CVE-2026-40483

MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-04-18 security-advisories@github.com
5.4
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Compromise Finance user credentials
  2. Delivery
    Authenticate to ChurchCRM
  3. Exploit
    Open pledge record editor
  4. Install
    Inject XSS payload into comment field
  5. C2
    Store malicious payload in database
  6. Execute
    Victim opens pledge for editing
  7. Impact
    Payload executes in victim's browser
  8. Step 8
    Attacker 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (github) PRIMARY 5.4 MEDIUM
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

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

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

EPSS Score
0.0%
Top 99% exploitable
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy