Skip to content

Pre-Auth RCE in Joomla Content Editor: Profile Import to PHP Execution (CVE-2026-48907)

Critical
CVSS 4.0 10.0
Status Actively Exploited
CISA KEV Added 2026-06-16

Pre-Auth RCE in Joomla Content Editor: Profile Import to PHP Execution (CVE-2026-48907)

Joomla Content Editor (JCE) CWE-284 Improper Access Control Published 2026-06-05

Vulnerability Overview

CVE-2026-48907 is a critical unauthenticated remote code execution flaw in the Joomla Content Editor (JCE), the most widely installed editor extension for Joomla. It earned a CVSS v4.0 score of 10.0, the maximum, because it needs no authentication and no user interaction and leads directly to arbitrary code execution. An attacker can create a fake editor profile without logging in, then abuse the profile import feature to upload and run arbitrary PHP on the server. The flaw was disclosed on June 5, 2026, and CISA added it to the Known Exploited Vulnerabilities catalog on June 16, 2026 after evidence of active exploitation.

CVE ID
CVE-2026-48907
CVSS Score
10.0 - Critical
Weakness
CWE-284
Affected Product
Joomla JCE
Affected Versions
≤ 2.9.99.4
Attack Vector
Network / Unauthenticated
Exploitation
In the Wild (KEV)
Fixed In
2.9.99.5 / 2.9.99.6
Bottom Line

If your Joomla site runs JCE 2.9.99.4 or earlier and is reachable from the internet, treat it as an active incident risk. Update to 2.9.99.6 now, and as an immediate stopgap block PHP execution in the tmp/ directory.

Why JCE Is a High-Value Target

JCE is one of the most installed Joomla extensions, present on a very large number of public-facing sites. That ubiquity is the whole problem: a low-complexity, pre-auth RCE in a near-default component means a single exploit works broadly, with no need for phishing, credentials, or a tailored campaign. Joomla powers a long tail of small business, association, and government sites whose owners may not even know JCE is installed, let alone track its patch level. When the vulnerable surface is this large and this anonymous, attackers can scan and exploit at scale before most operators have identified who owns the site.

Technical Analysis

As YesWeHack documented in their patch analysis, CVE-2026-48907 is not a single bug but a chained design failure in the JCE profile import workflow, where three weaknesses line up into a clean exploit path.

The first link is missing authorization: the profile import endpoint lets an unauthenticated user create new editor profiles, an action that should never be exposed without a valid session. The second is insufficient file validation: the import accepts the supplied profile file without verifying its format or content, so a PHP payload passes as readily as a legitimate profile. The third is a disabled upload safety control: the import stages the uploaded file into the tmp/ directory, and in a default or weakly hardened Joomla deployment that directory can execute PHP.

Put in sequence, the attack is short and reliable. An attacker sends an unauthenticated request that creates a profile and uploads a crafted file, the file lands in tmp/ with a .php extension and no content checks, and a follow-up request to that path executes the payload as the web server user. The result is pre-auth RCE on the underlying host. Multiple public proof-of-concept exploits now demonstrate exactly this chain end to end.

Active Exploitation

This vulnerability moved from disclosure to real-world attacker utility quickly. CISA added CVE-2026-48907 to its KEV catalog on June 16, 2026, citing evidence of exploitation and setting a remediation priority for federal agencies, with the same urgency recommended for everyone else. Working exploit code is freely available: a public PoC from YesWeHack reproduces the file-write-to-execution chain, an earlier independent PoC exists, and a Nuclei template has been published for mass detection. With a maximum CVSS score, no authentication requirement, and ready tooling, internet-exposed Joomla sites running vulnerable JCE versions should be considered prime, easily discoverable targets.

Am I Affected?

You are affected if you run JCE version 2.9.99.4 or earlier (the affected range covers 1.0.0 through 2.9.99.4). Check your installed version in the Joomla administrator under Extensions, then Manage. One important nuance from the public research: the final code-execution step depends on PHP being executable from the tmp/ directory. A vulnerable JCE version on a server that already blocks PHP execution in tmp/ denies the attacker the execution step, though you should still patch rather than rely on that hardening alone.

Affected Versions & Fixes

JCE VersionStatusResolution
1.0.0 - 2.9.99.4VulnerableUpdate to 2.9.99.6
2.9.99.5FixedAddresses the vulnerability; 2.9.99.6 adds further hardening
2.9.99.6+FixedRecommended target version

Mitigation & Remediation

Priority order, drawn from the GitHub Security Advisory and the YesWeHack analysis:

  1. Update JCE immediately. Upgrade to 2.9.99.5 or later, ideally 2.9.99.6, which fully addresses the flaw and adds extra hardening. This is the only complete fix.
  2. Block PHP execution in tmp/. If you cannot patch right away, configure your web server to deny PHP execution, or public access entirely, to the tmp/ directory. This removes the final execution step of the chain.
  3. Harden the webserver. Review upload directories and ensure no writable path can execute scripts, and confirm Joomla and its extensions are kept current.
  4. Hunt for compromise. Because exploitation is active and the bug is pre-auth, assume opportunistic scanning. Review tmp/ and web roots for unexpected .php files, audit for unfamiliar editor profiles, and check web server logs for anomalous requests to the profile import endpoint and to files under tmp/.

The Bigger Picture

CVE-2026-48907 is a reminder that the soft underbelly of the web is rarely the CMS core; it is the ubiquitous third-party extension that everyone installs and few people track. A maximum-severity, pre-auth RCE in a component this common is exactly the kind of bug that fuels mass website compromise, defacement, and commodity malware hosting, because the exploit is cheap and the target list is enormous. The defensive takeaway is unglamorous but decisive: inventory your extensions, subscribe to their advisories, patch the plugins as aggressively as you patch the platform, and never let a writable upload directory double as a place that can execute code.

References

Latest