ChurchCRM
CVE-2025-67751
HIGH
Severity by source
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Network-reachable HTTP parameter (AV:N) with trivial injection (AC:L); isAddEvent is a granular non-admin permission so PR:L rather than PR:H; SQLi yields full DB C/I/A.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
ChurchCRM is an open-source church management system. Prior to version 6.5.0, a SQL injection vulnerability exists in the EventEditor.php file. When creating a new event and selecting an event type, the EN_tyid POST parameter is not sanitized. This allows an authenticated user with event management permissions (isAddEvent) to execute arbitrary SQL queries. Version 6.5.0 fixes the issue.
AnalysisAI
An authenticated SQL injection in ChurchCRM before 6.5.0 lets a user who holds the event-management permission (isAddEvent) execute arbitrary SQL by supplying a crafted EN_tyid parameter while creating or editing an event in EventEditor.php. Exploitation is gated by a valid login plus that specific capability rather than being reachable anonymously, but it yields full confidentiality, integrity, and availability impact on the backend database once triggered. Publicly available exploit code exists, and the flaw is fully remediated in ChurchCRM 6.5.0; there is no indication of confirmed active exploitation (not in CISA KEV).
Technical ContextAI
The defect is a classic CWE-89 SQL injection arising from string-concatenated SQL in PHP. In EventEditor.php the application built the query "SELECT * FROM event_types WHERE type_id=$tyid" and passed it straight to RunQuery()/mysqli, so the EN_tyid POST value was interpolated into the SQL text without parameterization or type casting. Because the injected value lands in a bare numeric context in the WHERE clause, an attacker can break out of the predicate and append arbitrary SQL (e.g. UNION/boolean/stacked statements), enabling read and modification of any table the ChurchCRM database user can reach - including members, donations, families, and user/credential tables. ChurchCRM is an open-source PHP/MySQL church management system, and the CPE cpe:2.3:a:churchcrm:churchcrm:*:*:*:*:*:*:*:* applies to all releases below the fixed build. The vendor fix (commit 2d6cf7aed9af1b9b47e125d1a2266f8e2a88f3fd) removes the raw string SQL entirely and replaces it with the Propel ORM (EventTypeQuery::create()->findById((int)$tyid) and EventCountNamesQuery), which both parameterizes the query and casts the identifier to an integer. The same commit hardens several sibling code paths (FamilyCustomFieldsEditor.php, PersonCustomFieldsEditor.php, SystemSettings.php) that used similar raw-SQL concatenation and a password-default disclosure issue, indicating a broader pattern of unsafe query construction in this codebase.
RemediationAI
Upgrade to ChurchCRM 6.5.0, which is the vendor-released patch that fixes this issue; the corresponding upstream fix is commit 2d6cf7aed9af1b9b47e125d1a2266f8e2a88f3fd and the tracking advisory is GHSA-wxcc-gvfv-56fg at https://github.com/ChurchCRM/CRM/security/advisories/GHSA-wxcc-gvfv-56fg. If an immediate upgrade is not possible, treat the affected code as unsafe and apply compensating controls with their trade-offs understood: (1) revoke the isAddEvent capability from all but the smallest, most trusted set of accounts, since exploitation requires that permission - this closes the practical attack path but blocks legitimate event managers from creating events; (2) apply a WAF or reverse-proxy rule that rejects or normalizes EN_tyid values which are not purely numeric on requests to EventEditor.php, which stops the common payload forms but can be bypassed and may break legitimate submissions if the rule is too strict; and (3) constrain the ChurchCRM database account to the least privileges it needs (no DDL, no FILE, no access to unrelated schemas), which limits how far an injected statement can reach but does not prevent data disclosure from the application's own tables. Because publicly available exploit code exists, prioritize any internet-facing or multi-tenant deployment for patching first, and review database and web logs for anomalous EventEditor.php requests or unexpected SQL in POST bodies as a detection measure.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today