CVE Tools
Plex2Shell: Four Medium-Severity Bugs Became a 9.8 Pre-Auth RCE. CISA Only KEV'd Four of the Five.. None of the individual Plex Media Server CVEs scores above 7.2. Chained together, they're an unauthe

Plex2Shell: Four Medium-Severity Bugs Became a 9.8 Pre-Auth RCE. CISA Only KEV'd Four of the Five.

None of the individual Plex Media Server CVEs scores above 7.2. Chained together, they're an unauthenticated remote shell — and they were already mining Monero on unpatched servers within 24 hours of the public write-up.

Overview

Five bugs were disclosed together against Plex Media Server on September 23, 2026. Read in isolation, none of them looks urgent: the worst single CVE scores 7.2 (High), and three of the five are Medium. Chained together by a researcher who goes by zmain (GitHub handle code-zm), they're an unauthenticated path from an ordinary network request to code execution as the Plex process — and on October 20, four of the five landed on CISA's Known Exploited Vulnerabilities catalog after real attackers beat the public write-up to the punch by less than 24 hours.

9.8Chain-level CVSS v3.1 the researcher assigned the exploitvs. 7.2 for the worst single CVE
4 of 5CVEs CISA added to KEV on Oct 20, 2026the path-traversal CVE was left off
36,000+Internet-exposed Plex servers, Shadowserver scanreported ~Sept 5, before these CVEs even had numbers
<24hGap between the public PoC and first in-the-wild hitOct 16 write-up → Oct 17 honeypot capture

The chain: how four 'medium' bugs add up to a shell

Plex's own companion-device protocol and plugin architecture trust each other more than they trust the network. zmain's write-up walks the chain as a sequence of small, individually-patchable trust failures that only become dangerous laid end to end.

Plex2Shell: from an anonymous request to code execution

  1. POST to /player/timeline with any X-Plex-Token — The endpoint checks that the token header is present, not that it's valid — CVE-2026-96652. The 'protocol' parameter can carry a full URL.
  2. Server SSRFs itself to a forged loopback call — The forced request lands on Plex's own /system/agents plugin API, which trusts loopback-origin traffic with no re-authentication — CVE-2026-96654's URL/identifier injection lets it invoke another plugin's function with attacker-chosen parameters.
  3. Owner's admin token leaks via a prefix-match bug — Plex attaches the server owner's token to any outbound request whose URL merely starts with 'http://127.0.0.1'. A crafted sslip.io hostname passes that check but resolves via DNS to the attacker's own server.
  4. Owner token used to set a malicious transcoder preference — With admin rights, the attacker sets TranscoderH264Options to x264's debug 'dump-yuv' flag, pointing the output at Plex's own Codecs directory — CVE-2026-96656.
  5. Transcode job writes a shared library to disk — Triggering a transcode against an attacker-hosted video causes x264 to write bit-exact frames — really a smuggled ELF .so file — to the target path.
  6. Code execution as the plex user — Plex's codec loader dlopen()s any .so file in the Codecs directory at transcoder startup, with no signature or naming check. The planted library's constructor runs on load.

Five CVEs, one patch, and one deliberate KEV exclusion

CVEBugCWECVSS v3.1 (our catalog)EPSS percentileOn CISA KEV?
CVE-2026-96651Path traversal reads any file incl. the owner's auth tokenCWE-226.5 Medium57thNo
CVE-2026-96652SSRF via /player/timeline, token header not validatedCWE-9184.3 Medium79thYes — Nov 3 deadline
CVE-2026-96654URL/identifier injection in the agent search APICWE-846.5 Medium80thYes — Oct 23 deadline
CVE-2026-96655SSRF via the transcoder path parameterCWE-9184.3 Medium76thYes — Nov 3 deadline
CVE-2026-96656Admin file write via a transcoder preferenceCWE-737.2 High78thYes — Oct 23 deadline

What actually happened once the write-up went public

Severity on paper vs. severity in the campaign that followed

Per-CVE math
  • Worst individual CVSS score: 7.2 (High), CVE-2026-96656 alone
  • Looks like five separate patch tickets
  • CVEs public since Sept 23 with no PoC in sight
  • No payload reported pre-disclosure
What the campaign actually did
  • Chain-level CVSS 9.8 (Critical), unauthenticated, per the researcher
  • One build, 1.43.3.10861, fixes all five at once
  • First honeypot hit within 24 hours of the Oct 16 write-up
  • XMRig cryptominer plus a residential-proxy tool ('myawesomeproxy') dropped on compromised servers

From private report to KEV listing

  1. Researcher reports the chain to Plex's security contact
  2. Plex acknowledges the report and pays a bounty
  3. Plex ships 1.43.3 as an unlabeled security release — no CVEs assigned yet
  4. Shadowserver reports 36,000+ exposed, unpatched Plex instances
    At this point the flaws had no CVE IDs; Shadowserver itself warned they were "invisible to the security community limiting an effective response."
  5. CISA (as CNA) publishes all five CVE records for build 1.43.3.10861
  6. zmain publishes the full Plex2Shell proof-of-concept write-up
  7. First in-the-wild exploitation caught by an independent honeypot, dropping XMRig and myawesomeproxy
  8. Plex confirms the bugs are "being actively and widely exploited"
  9. CISA adds four of the five CVEs to KEV with staggered Oct 23 / Nov 3 federal deadlines

The 36,000-server figure is the number we're most reluctant to carry forward uncritically: it's a Shadowserver scan from early September, taken against builds that weren't even tied to named CVEs yet. By the time the PoC and KEV listing landed in mid-October, Plex 1.43.3 had been out for over four months — some of those 36,000 will have patched in the interim, and the actual count of vulnerable, internet-facing Plex servers on October 20 is unpublished. Treat it as a floor on how badly this class of self-hosted software gets left unpatched, not a live exposure count. See our trend tracking for how KEV-add volume has moved this quarter.

What to look for2 rules
other ×2

Neither of these is a published Sigma/Suricata/Nuclei signature — we didn't find one. They're sourced guidance, labeled as such.

Forensic triage, not just patching, for CVE-2026-96656GitHub
Prior compromise via the arbitrary file-write bug, which patching alone does not remove Applies formally to FCEB agencies under BOD 26-04; good practice for anyone who ran an exposed Plex server before Oct 20
CISA KEV catalog addition (Oct 20, 2026)
Unsigned .so files under Plex's Codecs directory, or unexpected miner/proxy processesGitHub
The chain's actual payload-drop step, plus the XMRig/myawesomeproxy binaries observed in the wild after Oct 17 Manual inspection — Plex's own loader does not verify these files, so nothing alerts you automatically
zmain — Plex2Shell technical write-up (original discovery)

What to do now

  1. Patch to Plex Media Server 1.43.3.10861 or later now — this single build fixes all five CVEs.
  2. Do not treat patching as cleanup: Plex itself and CISA both note that updating does not remove an existing infection.
  3. Check the Codecs directory for unfamiliar .so files, and process lists for XMRig or myawesomeproxy before and after patching.
  4. Rotate the server owner's Plex auth token — the chain's entire purpose is stealing that token, so assume it's burned if your server was exposed and unpatched.
  5. If Plex doesn't need to be reachable from the open internet, put it behind a VPN or an authenticating reverse proxy instead of exposing the port directly.

CVE and KEV data as of October 28, 2026

Sources: CISA CSAF advisory VA-26-266-01 · CISA — KEV catalog addition, Oct 20, 2026 · CVE.org record — CVE-2026-96656 · zmain — Plex2Shell technical write-up (original discovery)