← Back to Feed CACHED · 2026-07-01 16:45:34 · CACHE_KEY CVE-2026-12133
CVE-2026-12133 · CWE-862 · Disclosed 2026-07-01

The JoomSport – for Sports: Team & League

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

A logged-in fan can tamper with league standings on a sports-scoring plugin nobody in your DMZ runs

CVE-2026-12133 is a Missing Authorization flaw (CWE-862) in the *JoomSport – Sports: Team & League, Football, Hockey & more* WordPress plugin. The vulnerable code path fails to enforce a capability or nonce check on a handler that mutates plugin-managed data (teams, matches, seasons, or similar). Any authenticated user at Subscriber level or above — the default role WordPress hands out with users_can_register on — can invoke it and cause an unauthorized write. Vendor CVSS is AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N: network-reachable, low complexity, low privileges, no confidentiality or availability impact, and only *partial* integrity impact scoped to the plugin's own tables.

The vendor MEDIUM (4.3) rating is generous but defensible. The vector is honest — there is genuinely no data theft, no RCE, no auth bypass, no privilege escalation to WP admin. The only thing an attacker gets is the ability to scribble on sports-league records inside a niche plugin. On a fleet of 10,000 hosts this is a LOW — closer to graffiti than compromise. We reassess down one bucket.

"Authenticated subscriber can nudge plugin state on a niche sports plugin. Not a fire drill. Backlog it."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Obtain a Subscriber-level account on the target WordPress site

Attacker registers via the site's public registration form, or reuses a stolen low-tier credential. PR:L in the CVSS vector explicitly requires an authenticated session. Sites with registration disabled (the WordPress default since 2004) block this at step zero.
Conditions required:
  • Target has users_can_register=1 or attacker holds a valid low-tier credential
  • JoomSport plugin is installed and active
Where this breaks in practice:
  • Most business WordPress installs disable open registration
  • Sites with reCAPTCHA / Wordfence / Cloudflare Turnstile filter drive-by signups
Detection/coverage: WAF logs show /wp-login.php?action=register bursts; Wordfence and Patchstack flag anomalous registration velocity.
STEP 02

Enumerate the vulnerable AJAX / REST handler

Attacker inspects plugin JS or hits /wp-admin/admin-ajax.php?action=joomsport_* endpoints to find the handler missing the current_user_can() or check_ajax_referer() gate. Public PoCs typically use curl with the session wordpress_logged_in_* cookie.
Conditions required:
  • Knowledge of vulnerable action name (public via Patchstack/Wordfence advisory)
  • Valid nonce if the handler checks nonce but not capability
Where this breaks in practice:
  • Patchstack vPatch and Wordfence firewall rules ship signatures within 24h of disclosure
  • No mass-scanner weaponization observed at time of write
Detection/coverage: WPScan, Patchstack, Wordfence Intelligence all fingerprint the plugin version via readme.txt.
STEP 03

Trigger the unauthorized state change

Attacker POSTs to the handler and writes attacker-controlled values into plugin tables — modifying a team roster, match score, season config, or similar plugin-scoped record. I:L bounds the impact: no touching of wp_users, wp_options core keys, or filesystem.
Conditions required:
  • Handler reached in step 2
  • Attacker session still valid
Where this breaks in practice:
  • Site backup restores in minutes; change is cosmetic on plugin data only
  • No pivot to WP admin, no code execution, no session takeover
Detection/coverage: Audit logging plugins (WP Activity Log, Simple History) capture the row change if enabled — most SMB deployments do not enable them.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. Not in CISA KEV; no GreyNoise tag; no Wordfence attack-data spike as of 2026-07-02.
Public PoCNo named public PoC on GitHub or ExploitDB. Advisory-level technical detail via Patchstack and Wordfence Intelligence is sufficient for a competent attacker to reproduce.
EPSSPending publication (fresh CVE, disclosed 2026-07-01). Comparable WP plugin CWE-862 CVEs typically settle at EPSS ≤ 0.5% within 30 days.
KEV statusNot listed. CISA KEV does not track authenticated low-impact WP plugin bugs of this class.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N4.3 MEDIUM. Only integrity impact, and only *low* — no confidentiality or availability touch.
Affected versionsJoomSport for WordPress — all versions prior to the fixed release shipped with the 2026-07-01 advisory. Confirm with vendor changelog.
Fixed versionVendor patched release published alongside the Patchstack/Wordfence advisory on 2026-07-01. No distro backports — this is a WP.org plugin, wp plugin update is the path.
Exposure populationJoomSport reports ~3,000–5,000 active installs on WordPress.org — a *niche* sports-league plugin. Not a top-1000 plugin; near-zero enterprise footprint.
Disclosure & reporterDisclosed 2026-07-01 via the standard Patchstack Alliance / Wordfence Bug Bounty research pipeline for WordPress plugins.
Scanner coverageWPScan, Patchstack, Wordfence Intelligence, and Nuclei (http/cves/2026/) will all fingerprint this within days.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.1/10)

The single most decisive factor is blast radius scoped to a niche third-party plugin's own tables — no confidentiality, no availability, no privilege escalation into WordPress core, on a plugin with a ~3–5k install base concentrated in amateur-sports-league sites. Combined with the PR:L authentication requirement, this does not warrant the vendor's MEDIUM bucket for an enterprise defender.

HIGH Impact ceiling — CVSS `C:N/I:L/A:N` is a hard boundary
HIGH Deployment role — JoomSport is never a high-value-role component
MEDIUM Exposure population — install count via WordPress.org self-report

Why this verdict

  • Authentication is a hard prerequisite. PR:L means at least a Subscriber account. Any WP site with open registration disabled (the default) blocks the chain at step 1.
  • Impact is I:L and scoped to plugin tables. No RCE, no auth bypass, no WP admin escalation, no PII exfil. The worst outcome is a defaced sports scoreboard, revertable from any hourly backup.
  • Role multiplier: JoomSport's canonical deployment role is a *public-facing amateur-sports-league marketing site*. There is no high-value-role variant — it is not identity, PKI, CI/CD, backup, hypervisor, EDR, network edge, or SIEM software. Blast radius stays at the single-site plugin-data level in 100% of realistic deployments. The Deployment-Role Blast Radius floor is therefore LOW, not HIGH.
  • Exposure population is trivial. ~3–5k active installs per WordPress.org, near-zero enterprise footprint. A 10,000-host defender is unlikely to have a single instance.
  • No in-the-wild activity, no KEV, no mass-scanner weaponization as of disclosure day.

Why not higher?

MEDIUM would require either an unauthenticated variant, a confidentiality/availability impact, or a plugin with material enterprise footprint. None apply. HIGH/CRITICAL would require role-multiplier amplification into identity, hypervisor, or edge — JoomSport has none.

Why not lower?

IGNORE is wrong because the flaw is real, remotely reachable by any logged-in user, and requires a vendor patch. It belongs in the backlog, not the bin — hence LOW, not IGNORE.

05 · Compensating Control

What to do — in priority order.

  1. Set users_can_register = 0 on any WP site running JoomSport — Removes step 1 of the chain entirely. Set in Settings → General → Membership or via wp option update users_can_register 0. LOW verdict has no mitigation SLA, but this is a 30-second config change — do it opportunistically within the 365-day remediation window.
  2. Deploy a Patchstack / Wordfence vPatch rule — Both vendors ship a virtual patch signature within 24h of disclosure that blocks the specific vulnerable AJAX/REST action name. Enable auto-update of firewall rules; no server reboot required. Apply within the standard 365-day remediation window.
  3. Update JoomSport to the patched release via wp plugin update joomsport-sports-league-results-management — The actual fix. Because LOW has no noisgate mitigation SLA, schedule this into your normal monthly WP plugin update cadence — must land inside the 365-day noisgate remediation SLA.
  4. Audit existing Subscriber accounts for dormant / suspicious registrations — If open registration was ever enabled, low-tier accounts may already exist. Run wp user list --role=subscriber --format=csv and cull accounts with no post/comment history and free-mail domains.
What doesn't work
  • MFA on WP admin — does not help; the vuln is exploitable by Subscribers, not admins.
  • WAF geo-blocking / IP allowlisting — the attacker holds a valid logged-in session cookie; requests look legitimate.
  • Disabling XML-RPC — the vulnerable path is admin-ajax or REST, not XML-RPC.
  • Reducing wp-cron frequency / hardening wp-config.php — unrelated attack surface.
06 · Verification

Crowdsourced verification payload.

Run this on the WordPress host as a user with shell access and the wp (WP-CLI) binary in PATH. Invoke as ./check-cve-2026-12133.sh /var/www/html where the argument is the WordPress webroot. No elevated privileges needed beyond read access to the plugin directory.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verification: CVE-2026-12133 — JoomSport WordPress plugin Missing Authorization
# Usage: ./check-cve-2026-12133.sh <wordpress-webroot>
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN / not installed
set -u

WEBROOT="${1:-/var/www/html}"
PLUGIN_DIR="$WEBROOT/wp-content/plugins/joomsport-sports-league-results-management"
README="$PLUGIN_DIR/readme.txt"
# Set FIXED_VERSION per the vendor advisory published 2026-07-01.
# Update this value when the vendor confirms the patched release.
FIXED_VERSION="${FIXED_VERSION:-5.7.8}"

if [ ! -d "$PLUGIN_DIR" ]; then
  echo "UNKNOWN: JoomSport plugin not installed at $PLUGIN_DIR"
  exit 2
fi

if [ ! -r "$README" ]; then
  echo "UNKNOWN: cannot read $README"
  exit 2
fi

INSTALLED=$(grep -iE '^Stable tag:' "$README" | awk -F: '{print $2}' | tr -d ' \r\n')
if [ -z "$INSTALLED" ]; then
  INSTALLED=$(grep -iE '^\* Version:|Version:' "$PLUGIN_DIR"/*.php 2>/dev/null | head -n1 | sed -E 's/.*[Vv]ersion:[[:space:]]*//; s/[^0-9.].*$//')
fi

if [ -z "$INSTALLED" ]; then
  echo "UNKNOWN: could not parse plugin version"
  exit 2
fi

# semver compare: returns 0 if $1 >= $2
ver_ge() {
  [ "$(printf '%s\n%s\n' "$2" "$1" | sort -V | head -n1)" = "$2" ]
}

if ver_ge "$INSTALLED" "$FIXED_VERSION"; then
  echo "PATCHED: JoomSport $INSTALLED >= fixed $FIXED_VERSION"
  exit 0
else
  echo "VULNERABLE: JoomSport $INSTALLED < fixed $FIXED_VERSION (CVE-2026-12133)"
  # Bonus check: is open registration enabled? That raises effective severity.
  if command -v wp >/dev/null 2>&1; then
    REG=$(wp --path="$WEBROOT" --skip-plugins --skip-themes option get users_can_register 2>/dev/null)
    [ "$REG" = "1" ] && echo "  WARN: users_can_register=1 — public registration enabled, chain is fully reachable"
  fi
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a LOW. Monday morning: (1) run the verification script across any WP hosts fingerprinted with JoomSport — most enterprises will have zero hits. (2) On matches, immediately set users_can_register=0 (30-second config change that neuters the chain) and enable Patchstack/Wordfence vPatch signatures. (3) Because LOW carries no noisgate mitigation SLA, go straight to the noisgate remediation SLA of ≤ 365 days — batch the vendor patch into your normal monthly WP plugin update cadence, not an emergency change window. Do NOT preempt a genuine HIGH or CRITICAL ticket to chase this one.

Sources

  1. Patchstack — JoomSport Broken Access Control advisory family
  2. Wordfence Intelligence — WordPress plugin vulnerability feed
  3. WordPress.org plugin page — JoomSport
  4. MITRE CWE-862 — Missing Authorization
  5. FIRST EPSS
  6. CISA KEV Catalog
  7. SentinelOne — related CVE-2025-7721 JoomSport RCE context
  8. BitNinja — prior JoomSport SQLi context
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.