ChurchCRM
CVE-2026-58409
CRITICAL
Severity by source
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
Network-reachable admin endpoint (AV:N/AC:L/UI:N) but requires administrator privileges (PR:H); web-app admin escalating to an OS shell crosses an authority boundary (S:C) with full C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
ChurchCRM is an open-source church management system. Prior to version 7.4.0, an authenticated administrator can achieve Remote Code Execution (RCE) on the server by installing a malicious plugin ZIP archive containing a PHP webshell. The application explicitly includes 'php' in its ALLOWED_EXTENSIONS list, while the dangerous extensions denylist (DENIED_EXTENSIONS) fails to block standard .php files. Because php is explicitly included in the allowed extension list for plugin archives, and extracted files are placed directly under the web root, any PHP file inside the ZIP becomes immediately executable via HTTP - without even needing to "enable" the plugin through the application UI. The /plugins/install-url API route (management.php) allows an administrator to source the malicious ZIP from any attacker-controlled HTTPS URL, validating it only against an attacker-supplied SHA-256 hash. This issue has been fixed in version 7.4.0.
Articles & Coverage 1
AnalysisAI
Remote code execution in ChurchCRM before 7.4.0 lets an authenticated administrator run arbitrary PHP on the server by installing a plugin ZIP that contains a webshell. Because 'php' is explicitly whitelisted in ALLOWED_EXTENSIONS and the DENIED_EXTENSIONS denylist fails to catch standard .php files, any PHP file inside the archive is extracted directly under the web root and becomes immediately executable over HTTP without the plugin ever being enabled. The /plugins/install-url route additionally allows the archive to be sourced from any attacker-controlled HTTPS URL, validated only against an attacker-supplied SHA-256 hash. No public exploit identified at time of analysis and it is not on CISA KEV.
Technical ContextAI
ChurchCRM is a PHP-based open-source church management application (CPE cpe:2.3:a:churchcrm:crm). The flaw is a classic CWE-434 Unrestricted Upload of File with Dangerous Type: the plugin installer's extension-filtering logic is inverted in effect - the allow-list intentionally contains 'php' and the corresponding deny-list does not neutralize ordinary .php files, so the two controls that should block executable content instead permit it. The plugin ZIP is unpacked into a directory beneath the document root that the PHP interpreter serves and executes, meaning extracted code runs in the web server's request context. The install-url path (management.php → /plugins/install-url) compounds this by fetching the ZIP from an arbitrary HTTPS location and checking integrity only against a hash the same actor supplies, so the hash check provides no security value against a malicious operator.
RemediationAI
Vendor-released patch: upgrade to ChurchCRM 7.4.0, which corrects the plugin extension handling; this is the primary and recommended fix (see GHSA-37mf-vq43-5qp9 at https://github.com/ChurchCRM/CRM/security/advisories/GHSA-37mf-vq43-5qp9). Where immediate upgrade is not possible, reduce exposure by restricting who holds administrator accounts and enforcing strong, unique credentials plus MFA on the admin panel, since exploitation requires admin access. As a compensating control, block or restrict access to the plugin management functionality (the /plugins/install-url and plugin-install routes in management.php) at the web server or reverse proxy so plugins cannot be installed from remote URLs - the trade-off is that legitimate plugin installation is disabled until re-enabled. Additionally, configure the web/application server so the plugin extraction directory under the web root cannot execute PHP (for example, disable the PHP handler for that path) - the trade-off is that any plugin legitimately relying on server-side PHP in that location will stop functioning. Egress filtering to prevent the server from fetching arbitrary attacker HTTPS URLs further limits the install-url vector.
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
Share
External POC / Exploit Code
Leaving vuln.today