CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2025-47916

CVE-2025-47916: Unauthenticated RCE in Invision Community via SSTI

Alon Barad
Alon Barad
Software Engineer

Feb 28, 2026·4 min read·20 visits

Executive Summary (TL;DR)

Critical RCE in Invision Community 5.0.x allows unauthenticated attackers to execute arbitrary PHP code. The issue stems from an exposed 'customCss' controller method that processes unsanitized input via the template engine. Patched in version 5.0.7.

A critical remote code execution vulnerability exists in Invision Community versions 5.0.0 through 5.0.6. The flaw resides in the 'themeeditor' controller, where improper access control allows unauthenticated users to invoke the 'customCss' method. This method passes user-supplied input directly to the internal template engine without sanitization. By injecting malicious template directives, attackers can execute arbitrary PHP code on the underlying server. The vulnerability carries a CVSS score of 10.0 and has been patched in version 5.0.7.

Vulnerability Overview

CVE-2025-47916 represents a critical security failure in the Invision Community platform, specifically affecting versions 5.0.0 through 5.0.6. The vulnerability is a combination of Improper Access Control (CWE-284) and Server-Side Template Injection (CWE-1336), resulting in unauthenticated Remote Code Execution (RCE).

The specific flaw is located within the themeeditor.php controller file. Despite the sensitive nature of theme editing functionality, the application exposes a method intended for CSS processing to unauthenticated web requests. Because this method utilizes the application's powerful template engine to parse input, it inadvertently exposes a mechanism for arbitrary code execution.

With a CVSS v3.1 score of 10.0, this issue is classified as critical. It requires no authentication, no user interaction, and can be exploited remotely over the network. The impact is total system compromise, allowing attackers to bypass all application security controls.

Root Cause Analysis

The vulnerability stems from two concurrent failures in the /applications/core/modules/front/system/themeeditor.php file.

1. Improper Access Control: The method customCss() is defined within the controller. While declared protected, the Invision Community routing dispatcher in the affected versions allows external requests to invoke this method by specifying the do=customCss parameter. This bypasses the standard authentication checks typically required for administrative actions.

2. Unsafe Template Processing: Inside the customCss() method, the application retrieves raw user input from Request::i()->content and passes it directly to Theme::makeProcessFunction(). This function is the core of the Invision template engine, responsible for compiling template strings into executable PHP code. The engine supports specific syntax, such as {expression="..."}, which evaluates the contained string as PHP code. By injecting this syntax, an attacker forces the server to compile and execute arbitrary PHP commands.

Code Analysis

The following analysis highlights the vulnerable logic in themeeditor.php prior to the patch.

Vulnerable Code (Versions 5.0.0 - 5.0.6):

protected function customCss() : void
{
    $functionName = "css_" . uniqid();
    
    // CRITICAL: User input (Request::i()->content) is passed directly 
    // to the template compiler (Theme::makeProcessFunction).
    Theme::makeProcessFunction( 
        Theme::fixResourceTags( (string) Request::i()->content, 'front' ), 
        $functionName, 
        '', 
        FALSE, 
        TRUE 
    );
 
    $fqFunc     = 'IPS\\Theme\\'. $functionName;
    // The compiled function is immediately executed.
    $content    = Theme::minifyCss( $fqFunc() );
 
    /* Replace any <fileStore.xxx> tags in the CSS */
    Output::i()->parseFileObjectUrls( $content );
    Output::i()->json( [ 'content' => $content ] );
}

The Theme::makeProcessFunction generates a temporary PHP function based on the input string. If the input contains {expression="system('id')"}, the generated PHP function will contain a call to system('id'). When $fqFunc() is called lines later, that payload executes.

Remediation in Version 5.0.7: The vendor addressed this by modifying the access control logic for the themeeditor controller or removing the accessible route entirely for unprivileged users. The fix prevents the dispatcher from routing unauthenticated requests to this sensitive method.

Exploitation Methodology

Exploiting CVE-2025-47916 is trivial and requires only a single HTTP POST request. The attacker does not need credentials or a specific server configuration.

Attack Workflow:

  1. Target Identification: The attacker identifies a target running Invision Community 5.0.x.
  2. Payload Construction: The attacker crafts a payload using the template engine's expression syntax. A common payload for verifying execution is {expression="die(system('id'))"}.
  3. Request Transmission: The attacker sends a POST request to the root index.php or the specific controller path.

Example HTTP Request:

POST /index.php HTTP/1.1
Host: target.example.com
Content-Type: application/x-www-form-urlencoded
 
app=core&module=system&controller=themeeditor&do=customCss&content={expression="die(system('whoami'))"}

Execution Flow Diagram:

Upon processing, the server executes whoami and returns the output in the HTTP response, confirming code execution.

Impact Assessment

The impact of this vulnerability is catastrophic for affected deployments.

System Compromise: Successful exploitation grants the attacker code execution privileges equivalent to the web server user (typically www-data or apache). This allows for reading configuration files (such as conf_global.php), which contain database credentials and encryption keys.

Data Breach: With database access, attackers can exfiltrate sensitive user data, including hashed passwords, email addresses, and private messages. This constitutes a significant privacy breach and regulatory violation (GDPR, CCPA).

Persistence and Lateral Movement: Attackers can upload web shells or backdoors to maintain persistent access even after the vulnerability is patched. If the web server is not properly isolated, this entry point can be used to pivot to other internal systems within the network infrastructure.

Official Patches

Invision Power ServicesInvision Community Release Notes for 5.0.7

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
89.99%
Top 0% most exploited

Affected Systems

Invision Community 5.0.0Invision Community 5.0.1Invision Community 5.0.2Invision Community 5.0.3Invision Community 5.0.4Invision Community 5.0.5Invision Community 5.0.6

Affected Versions Detail

Product
Affected Versions
Fixed Version
Invision Community
Invision Power Services
>= 5.0.0, <= 5.0.65.0.7
AttributeDetail
CWE IDCWE-1336
CVSS v3.110.0 (Critical)
Attack VectorNetwork
EPSS Score0.89988 (89.99%)
Exploit StatusWeaponized / Public PoC
ImpactRemote Code Execution

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.003Command and Scripting Interpreter: PHP
Execution
CWE-1336
Server-Side Template Injection

Improper Neutralization of Special Elements Used in a Template Engine

Known Exploits & Detection

NucleiNuclei detection template for unauthenticated RCE
NucleiDetection Template Available

Vulnerability Timeline

Vulnerability discovered by Egidio Romano
2025-05-10
Vendor releases patch (Version 5.0.7)
2025-05-12
Public disclosure and CVE assignment
2025-05-14

References & Sources

  • [1]NVD - CVE-2025-47916

More Reports

•14 minutes ago•GHSA-7CX2-G3H9-382P
8.1

GHSA-7CX2-G3H9-382P: Multiple Vulnerabilities in Crawl4AI Docker API (Arbitrary File Write, SSRF, CRLF Log Injection)

An in-depth technical analysis of multiple security vulnerabilities in the self-hosted Docker API server of Crawl4AI up to version 0.8.7. These flaws include a critical arbitrary file write via symlink traversal and TOCTOU weakness, CRLF log injection, webhook header injection, and SSRF filter gaps. These have been remediated in version 0.8.8.

Alon Barad
Alon Barad
0 views•6 min read
•44 minutes ago•GHSA-F989-C77F-R2CQ
8.2

GHSA-f989-c77f-r2cq: LLM Credential Exfiltration and SSRF in Crawl4AI Docker Server

A technical evaluation of the Crawl4AI open-source web crawling and scraping library revealed a high-severity credential exfiltration vulnerability in its self-hosted Dockerized API server. The flaw arises from an unvalidated base_url parameter in request payloads and a dynamic prefix resolution mechanism that retrieves system environment variables. Unauthenticated remote attackers can leverage these features in tandem to extract host-level secrets or redirect configured LLM API keys to an external listener under their control.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 1 hour ago•GHSA-365W-HQF6-VXFG
9.8

GHSA-365w-hqf6-vxfg: Multiple Critical Vulnerabilities in Crawl4AI Docker API Server

The Crawl4AI Docker API server, in versions 0.8.6 and prior, contains multiple critical vulnerabilities including improper path sanitization, missing authentication on administration routes, hardcoded JWT secrets, and SSRF. These vulnerabilities allow remote, unauthenticated attackers to write arbitrary files, execute arbitrary code, and pivot into private cloud environments.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 4 hours ago•GHSA-534H-C3CW-V3H9
5.5

GHSA-534h-c3cw-v3h9: Local Information Disclosure via Abstract-Namespace Socket in Nuxt Dev Server

A local security vulnerability in the Nuxt development server (nuxt dev) allows local unprivileged users to access sensitive configuration files and source code. On Linux environments running Node.js 20+, Nuxt bound its internal vite-node IPC server to an abstract-namespace Unix socket without any peer authentication, enabling co-resident local users to connect and request module code directly.

Amit Schendel
Amit Schendel
4 views•5 min read
•about 5 hours ago•GHSA-8RFP-98V4-MMR6
0.0

GHSA-8RFP-98V4-MMR6: Protocol-Filtering Bypass via Unicode Obfuscation in Mozilla Bleach

Mozilla Bleach is an open-source HTML sanitizing library for Python. Versions up to and including 6.3.0 contain an incomplete filtering implementation in the URI validation logic ('sanitize_uri_value'). This logic fails to detect disallowed protocols, such as 'javascript:', if they contain Unicode invisible characters, whitespace characters, or characters with a code point greater than U+00A0. While standard-compliant web browsers do not directly execute invalid URI schemes containing these non-standard characters, downstream systems that normalize Unicode text by stripping invisible or non-ASCII characters can unintentionally reactivate the 'javascript:' prefix, causing Cross-Site Scripting (XSS). Additionally, this behavior violates Bleach's core sanitization contract by outputting URIs that bypass protocol allowlists configured by the caller.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 5 hours ago•GHSA-G75F-G53V-794X
4.3

GHSA-G75F-G53V-794X: CPU Exhaustion via Unbounded Email Regular Expression Scanning in Bleach

An uncontrolled resource consumption vulnerability exists in the Python package Bleach when parsing text to linkify email addresses. When `parse_email=True` is enabled, the regular expression engine is forced into a quadratic-time complexity scan on specially crafted payloads lacking an '@' symbol. This causes immediate CPU exhaustion and blocks application server worker processes.

Amit Schendel
Amit Schendel
4 views•6 min read