← Back to Feed CACHED · 2026-07-11 14:20:06 · CACHE_KEY CVE-2026-57827
CVE-2026-57827 · CWE-434 · Disclosed 2026-07-11

The Joomla extension RSFiles is vulnerable to an unauthenticated arbitrary file upload

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

The front door is unlocked and the intruder gets to pick which room to sleep in

CVE-2026-57827 is an unauthenticated arbitrary file upload in the Joomla third-party extension RSFiles (by RSJoomla). The extension's upload handler accepts POSTs from anonymous visitors and writes the file straight into /downloads without enforcing any allow-list on the extension. Because that directory is served by Apache/PHP-FPM as executable content on default LAMP stacks, an attacker drops a .php webshell and immediately requests it back to get code execution as the web user. Affected: RSFiles < 1.17.12. Fixed in RSFiles 1.17.12.

There is no vendor/authority CVSS score for this CVE — noisgate is establishing the first assessment. On the CIA/AC/AT/PR/UI axis the bug scores brutally: AV:N / AC:L / AT:N / PR:N / UI:N / S:U / C:H / I:H / A:H. That maps to CVSS ~9.8 in raw form. We assess it at HIGH (8.6) rather than CRITICAL because the installed base is small (RSFiles is a paid RSJoomla add-on with modest deployment), and the class — unauth file upload in a Joomla extension — is well-covered by WAF signatures and generic upload scanners. But make no mistake: on any host that actually runs it, this is *pre-auth RCE with no chain*.

"Unauth PHP upload to /downloads on a niche Joomla extension. No auth wall, no user interaction, direct RCE. Patch or rip it out."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Discover an RSFiles-enabled Joomla site

Attacker fingerprints Joomla installs and grep for the com_rsfiles component in HTML/paths. Tools like wpscan-style Joomla scanners, joomscan, or a simple Shodan/FOFA query for com_rsfiles narrow the target list in minutes.
Conditions required:
  • Internet-reachable Joomla site
  • RSFiles component installed and enabled
Where this breaks in practice:
  • RSFiles is a paid extension with a niche footprint — Shodan/FOFA hit counts are in the low thousands globally
Detection/coverage: GreyNoise will show mass com_rsfiles path probing within days of a public PoC; Joomla-focused scanners (joomscan, droopescan) already flag the component.
STEP 02

POST a PHP payload to the upload endpoint

Send an unauthenticated multipart POST to the RSFiles upload handler with a .php (or .phtml/.phar) filename. Because the handler does not validate extension, MIME, or session, the file lands in /downloads. A public PoC written as a curl one-liner or a Metasploit auxiliary module is trivial to build from the diff.
Conditions required:
  • Network reach to the vhost
  • Upload endpoint enabled (default)
Where this breaks in practice:
  • A WAF with a generic .php upload rule (Cloudflare Managed Ruleset, ModSecurity CRS PL2+) will block it
  • Sites that moved /downloads behind an nginx location that disables PHP execution neutralize step 3
Detection/coverage: Any WAF with the OWASP CRS 942/933 groups will catch the multipart; Joomla audit logs record the anonymous POST if enabled.
STEP 03

Request the dropped webshell

Attacker GETs https://victim/downloads/shell.php and the Apache/PHP-FPM worker executes it as the web user (typically www-data, apache, or nobody). At this point they have a shell inside the Joomla document root with read/write over configuration.php — meaning database creds are stolen in the next 5 seconds.
Conditions required:
  • /downloads served with PHP handler active
Where this breaks in practice:
  • Hardened deployments disable PHP execution in upload directories via <Directory> or nginx location blocks
  • Read-only filesystem overlays (immutable containers) prevent the write in step 2
Detection/coverage: EDR on the web host sees php-fpm spawning /bin/sh; Falco/auditd rules on execve from php workers trigger immediately.
STEP 04

Pivot to full site + DB compromise

From the webshell the attacker exfiltrates configuration.php (Joomla DB creds in plaintext), dumps #__users, cracks or resets the super-admin hash, and installs a persistent backdoor extension. If the DB user has FILE privilege or the host mounts customer data, this becomes a data-breach event.
Conditions required:
  • Web user can read Joomla configuration files (default yes)
Where this breaks in practice:
  • Segmented DB with least-priv account limits data exposure
  • Outbound egress filtering on the web tier slows exfil
Detection/coverage: SIEM should alert on configuration.php read by a non-CLI process, and on any new admin user in #__users.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo confirmed exploitation as of 2026-07-11 (disclosure day). Class is historically high-abuse — see CVE-2026-56290 (Page Builder CK) and CVE-2026-48908 (SP Page Builder) which were mass-scanned within 48h of disclosure.
Proof-of-conceptNo public PoC repo at disclosure. Trivial to weaponize from the vendor changelog — expect a Metasploit auxiliary and Nuclei template within 7 days.
EPSSNot yet scored (CVE disclosed 2026-07-11). Expect >0.5 within 30 days based on class precedent.
KEV statusNot listed. No CISA KEV entry.
CVSS vector (noisgate assessed)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — raw 9.8. Reassessed 8.6 HIGH for installed-base and WAF coverage.
Affected versionsRSFiles < 1.17.12 for Joomla 3.x / 4.x / 5.x.
Fixed versionRSFiles 1.17.12 (released 2026-07 by RSJoomla).
Exposure dataShodan/FOFA queries for com_rsfiles return low-thousands globally; the extension is paid and niche relative to JCE or SP Page Builder.
Disclosure date2026-07-11 — same day as vendor patch.
ReporterCoordinated disclosure via RSJoomla vendor advisory; researcher not publicly credited at time of writing.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (8.6/10)

Pre-authentication arbitrary file upload with no user interaction and direct RCE is the single most decisive factor — this is the highest-abuse vulnerability class in web CMS ecosystems and the chain has zero prerequisites beyond the extension being installed. Verdict floored below CRITICAL because the affected component is a niche paid Joomla extension with a low-thousands installed base, not a canonical high-value-role component.

HIGH Vulnerability class and exploitability (pre-auth file upload → RCE)
MEDIUM Installed-base sizing (RSFiles is paid, no public telemetry)
LOW Active exploitation — disclosed today, no observations yet

Why this verdict

  • Pre-auth RCE with no chain: the attacker needs only network reach; no credentials, no user interaction, no second bug. This is the platonic worst-case for a web CMS.
  • Role multiplier — public-facing web tier: RSFiles is deployed on internet-exposed Joomla sites by definition. Chain succeeds in every realistic deployment, but blast radius is one Joomla site + its DB, not fleet-scale. This keeps the floor at HIGH, not CRITICAL.
  • Role multiplier — regulated data hosting: where RSFiles hosts membership sites, customer downloads, or GDPR-scope content, the DB dump in step 4 is a reportable breach. Still per-tenant, not fleet-scale.
  • Installed-base narrowing: RSFiles is a paid RSJoomla add-on with a Shodan footprint in the low thousands — versus JCE or SP Page Builder which sit on hundreds of thousands of sites. Real-world exposure population is materially smaller.
  • Detection is easy: OWASP CRS PL2+, Cloudflare Managed Ruleset, and any competent WAF already catch anonymous multipart uploads with .php filenames. Sites behind a modern WAF have meaningful pre-patch protection.

Why not higher?

CRITICAL is reserved for canonical high-value-role components (hypervisors, identity providers, network edge, backup, PKI) or widely-deployed software with active exploitation. RSFiles is neither — it's a niche paid extension with no observed exploitation on day zero, and the blast radius is capped at the individual Joomla site rather than fleet or supply chain.

Why not lower?

MEDIUM would require meaningful prerequisites (auth, user interaction, unusual config) — this vuln has none. The chain is pre-auth, network-reachable, single-step, and lands SYSTEM-equivalent code execution in the web user context. Any lower rating would misrepresent the exploit primitive.

05 · Compensating Control

What to do — in priority order.

  1. Disable PHP execution in /downloads — Add <Directory /var/www/joomla/downloads> php_flag engine off </Directory> (Apache) or location ~ ^/downloads/.*\.php$ { deny all; } (nginx). Even if a file gets written, it will not execute. Deploy within 30 days per noisgate mitigation SLA — or within hours if you cannot patch immediately.
  2. Block anonymous POSTs to RSFiles upload endpoints at the WAF — Add a rule denying unauthenticated multipart/form-data to any URL containing com_rsfiles and task=upload. On Cloudflare/Akamai/AWS WAF this is a one-line custom rule. Ship within 30 days.
  3. Upgrade to RSFiles 1.17.12 — The actual fix. Test in staging, then push to production. Complete within 180 days per noisgate remediation SLA, but for pre-auth RCE you should target ≤ 14 days.
  4. Audit /downloads for existing webshells before you patch — Assume-breach: find /var/www/joomla/downloads -name '*.php*' -o -name '*.phtml' -o -name '*.phar' and diff against the extension's expected inventory. If you find hits, treat as an active IR event.
  5. Rotate Joomla DB credentials and super-admin passwords post-patch — If exploitation happened pre-detection, configuration.php is stolen. Rotate db.user password, force a full admin credential reset, and invalidate all session tokens.
What doesn't work
  • MFA on the Joomla admin panel — the vuln is pre-auth; no login is required.
  • Disabling user registration — the upload endpoint doesn't check for a session at all.
  • IP allow-listing the admin backend — the vulnerable endpoint is a front-end component route, not /administrator/.
  • Renaming /downloads — the extension writes to its configured directory; renaming without reconfiguring breaks the extension without fixing the upload.
06 · Verification

Crowdsourced verification payload.

Run this on each Joomla web host as root or the user that owns the Joomla docroot. Invoke: sudo ./check-rsfiles.sh /var/www/joomla. It reads the RSFiles manifest XML and compares the installed version against the fixed release. Also greps /downloads for suspicious PHP artifacts.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate: CVE-2026-57827 RSFiles unauth arbitrary file upload check
# Usage: sudo ./check-rsfiles.sh /path/to/joomla/docroot
set -u

DOCROOT="${1:-/var/www/joomla}"
FIXED="1.17.12"

if [[ ! -d "$DOCROOT" ]]; then
  echo "UNKNOWN: docroot $DOCROOT not found"
  exit 2
fi

# Locate the RSFiles component manifest
MANIFEST=$(find "$DOCROOT/administrator/components/com_rsfiles" -maxdepth 2 -name 'rsfiles.xml' 2>/dev/null | head -n1)
if [[ -z "$MANIFEST" ]]; then
  echo "PATCHED: com_rsfiles not installed on $DOCROOT"
  exit 0
fi

# Extract <version> from the XML
VERSION=$(grep -oP '(?<=<version>)[^<]+' "$MANIFEST" | head -n1)
if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN: could not parse version from $MANIFEST"
  exit 2
fi

# Version comparison (dotted numeric)
ver_lt() {
  [[ "$1" == "$2" ]] && return 1
  [[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" == "$1" ]]
}

STATUS="PATCHED"
if ver_lt "$VERSION" "$FIXED"; then
  STATUS="VULNERABLE"
fi

# Look for dropped webshells in /downloads
SHELLS=$(find "$DOCROOT"/downloads -type f \( -iname '*.php' -o -iname '*.phtml' -o -iname '*.phar' -o -iname '*.php?' \) 2>/dev/null)

echo "RSFiles version: $VERSION (fixed: $FIXED)"
echo "Status: $STATUS"
if [[ -n "$SHELLS" ]]; then
  echo "WARNING: PHP artifacts found in /downloads (possible webshells):"
  echo "$SHELLS"
  echo "Status: VULNERABLE (assume-breach)"
  exit 1
fi

[[ "$STATUS" == "VULNERABLE" ]] && exit 1 || exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: inventory every Joomla install and grep for com_rsfiles — this is a paid niche extension so most orgs will have zero, some will have a handful. For every hit, deploy the two compensating controls today (disable PHP execution in /downloads, WAF-block anonymous multipart POSTs to the RSFiles upload endpoint) — that is your noisgate mitigation SLA of ≤ 30 days collapsed into hours because it's pre-auth RCE. Then schedule the RSFiles 1.17.12 upgrade inside the noisgate remediation SLA of ≤ 180 days — but target 14 days given the exploit primitive. Before you close the ticket, assume-breach: scan /downloads for .php/.phtml/.phar artifacts and rotate DB + super-admin credentials on any host that was internet-exposed prior to mitigation.

Sources

  1. RSJoomla forum — RSFiles 1.17.12 security update announcement
  2. CCB Belgium advisory — CVE-2026-56290 (analogous Joomla extension file-upload)
  3. Mallory — Unauthenticated file upload RCE in Joomla Page Builder CK (class reference)
  4. IONIX — CVE-2026-48908 SP Page Builder unauth file upload (class reference)
  5. Invicti — Joomla JCE arbitrary file upload (historical class reference)
  6. Acunetix — Joomla core arbitrary file upload signatures
  7. MITRE CWE-434 — Unrestricted Upload of File with Dangerous Type
  8. OWASP — File Upload Cheat Sheet
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.