Widget Factory Joomla Content Editor under active exploitation: CVE-2026-48907
On 2026-06-16, CISA added CVE-2026-48907 to the Known Exploited Vulnerabilities (KEV) catalog. The flaw affects the Widget Factory Joomla Content Editor, a component installed on Joomla sites to provide a richer authoring surface. The KEV entry describes an improper access control vulnerability that lets an unauthenticated attacker create new editor profiles and, through those profiles, upload and execute arbitrary PHP code on the host server.
Three properties together qualified for a KEV listing: no authentication required, arbitrary write of executable code into the web root, and a component that tends to be installed and forgotten. If your organization runs Joomla with this extension enabled and exposed to the internet, treat the site as a compromise candidate until you have proven otherwise and act within the Binding Operational Directive 22-01 remediation window applicable to federal civilian agencies.
Why CISA judged the flaw actively exploited
CISA does not add entries to KEV on speculation. Inclusion requires reliable evidence of exploitation in the wild, a CVE identifier, and clear remediation guidance. The 2026-06-16 addition of CVE-2026-48907 therefore confirms that at least one credible source, and typically several, has observed this vulnerability weaponized against production systems. PHP-upload flaws in Joomla and WordPress ecosystems are picked up by opportunistic scanners quickly after any public writeup, and the resulting shells become footholds for cryptomining, SEO poisoning, phishing kits, and follow-on lateral movement inside hosting environments.
Two properties make widespread exploitation likely rather than theoretical:
- The vulnerable capability, creating an editor profile, is a legitimate feature of the extension. Attackers ride the intended request path rather than trigger obvious parser errors, reducing the signal available to a naive web application firewall.
- The exploit requires no credentials. Anyone who can send an HTTP request to the site reaches the vulnerable code path; perimeter controls such as VPN or SSO on adjacent applications provide no meaningful reduction in blast radius.
Am I affected?
Confirming exposure has three parts: presence, version, and reachability.
Presence. Determine whether the Widget Factory Joomla Content Editor is installed on any Joomla site your organization operates. Do not rely on the marketing site inventory; extensions are frequently installed by contractors, agencies, and one-off migration efforts. Enumerate every Joomla install you host and read out the extension list.
You can list installed extensions from the database:
SELECT extension_id, name, type, element, folder, enabled, state
FROM j_extensions
WHERE name LIKE '%widget%factory%'
OR element LIKE '%widget%factory%'
OR name LIKE '%content%editor%';
Or from the CLI, using the Joomla Console:
php cli/joomla.php extension:list --type=plugin | grep -i widgetfactory
php cli/joomla.php extension:list --type=component | grep -i widgetfactory
Version. Once you confirm the extension is present, record the exact installed version and compare it against the vendor advisory. The fixed release is authoritative; do not rely on release note summaries that describe the change in vague terms such as "security hardening."
Reachability. Determine whether the endpoints serving editor-profile creation are reachable from the public internet. Because the flaw is pre-authentication, any path that touches the vulnerable route from an untrusted network counts as exposure, including preview environments, staging sites, and forgotten subdomains. Check access logs for anomalous requests hitting the extension's routes over the past 30 days as a first pass:
# Look for requests to the editor route in access logs
zgrep -E 'com_widgetfactory|widgetfactory|editor.?profile' \
/var/log/nginx/*access*.log* \
| awk '{print $1, $4, $6, $7, $9}' \
| sort | uniq -c | sort -rn | head -50
Absence of hits does not prove safety; the KEV entry does not disclose an indicator set, and log retention on shared hosting is often insufficient to answer the question. Treat this pass as a way to surface obvious exploitation attempts, not as a compromise assessment.
What to do inside the federal remediation deadline
BOD 22-01 sets a three-week remediation clock for KEV entries applicable to Federal Civilian Executive Branch agencies. Non-federal teams should adopt the same clock as an internal service-level target; the threat model does not care about your org chart.
- Patch to the vendor-supplied fixed version. If the maintainer has not yet published a fix, disable or uninstall the extension. Do not leave the extension present but "hidden" behind access rules; misconfigured access rules are how these flaws became exploitable in the first place.
- Rotate all secrets a webshell could have read. That includes the Joomla
configuration.phpdatabase credentials, any API tokens stored in extensions, SMTP credentials, and any cloud metadata service tokens the web server could reach. Assume anything the PHP process could read, an attacker read. - Search for shells. Look for recently modified PHP files under the Joomla webroot, especially in
images/,tmp/,media/, and any writable extension directories:
find /var/www/joomla -type f -name '*.php' -mtime -60 \
-not -path '*/administrator/*' \
-not -path '*/libraries/*' \
-printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort
Cross-reference against checksums of a clean install of the same Joomla core and extension versions. Anything unaccounted for is a candidate shell until proven otherwise.
- Look for persistence outside the webroot. A capable operator will drop a cron entry, a systemd timer, or a modified
.htaccessthat reintroduces access even after you clean the PHP tree. Diff/etc/cron.*,/var/spool/cron/, and any writable.htaccessfiles against a known-good baseline. - Rebuild rather than clean if the site handled sensitive workloads. Shared hosting environments and multi-site Joomla installs magnify the blast radius; a webshell on one site can pivot to sibling sites through filesystem or database access controls never designed as trust boundaries.
Where this sits in the current KEV cadence
CVE-2026-48907 arrived in a week that also added KEV entries for a LiteSpeed cPanel plugin symlink-following flaw (CVE-2026-54420), two Cisco Catalyst SD-WAN Manager issues (CVE-2026-20262 and CVE-2026-20245), an Oracle PeopleSoft Enterprise PeopleTools missing-authentication flaw (CVE-2026-35273), an Ivanti Sentry OS command injection (CVE-2026-10520), an Arista EOS decapsulation flaw (CVE-2026-7473), and a Chromium V8 out-of-bounds read and write (CVE-2026-11645). The common thread is unauthenticated or minimally authenticated code execution against components at the network edge or close to the browser. Prioritize accordingly: the Joomla flaw, the Ivanti Sentry flaw, and the Chromium V8 flaw should all leapfrog whatever was previously at the top of your patch queue.
Assume exploitation, verify remediation, then verify again from an attacker's perspective. Reachability, not intent, is what turns a CVE into an incident.
Verifiable security.