Plex2Shell is the name for a chain of four Plex Media Server vulnerabilities, CVE-2026-96652, CVE-2026-96654, CVE-2026-96655 and CVE-2026-96656, that ends in unauthenticated remote code execution. A blind SSRF in /player/timeline reaches loopback-only plugin APIs, a plugin call leaks the server owner's admin token, and that token sets a transcoder option that writes a shared library into the Codecs folder, which Plex loads on the next transcode. Builds before 1.43.3.10861 are affected. A public exploit appeared on October 16, 2026, and CISA added all four CVEs to its KEV catalog on October 20.
What Plex2Shell is
Plex Media Server is the self-hosted media server behind millions of home and small-office setups, often running on a NAS or a spare Linux box with port 32400 forwarded so friends and family can stream from outside. Plex2Shell is a chain of four bugs in that server. None of them is an RCE on its own; the individual CVEs are rated moderate. Chained, they give an unauthenticated remote attacker code execution, which the researcher who found it scored 9.8.
- CVE-2026-96652: unauthenticated SSRF in the player timeline endpoint (CWE-918).
- CVE-2026-96654: access to internal agent functions over loopback (CWE-84).
- CVE-2026-96655: disclosure of the server owner's admin token (CWE-918).
- CVE-2026-96656: arbitrary file write to the Codecs folder through transcoder preferences (CWE-73).
The researcher reported the chain to Plex on July 27, 2026, Plex shipped the fix in the 1.43.3 release by early September, CVEs were assigned on September 23, and the write-up and proof of concept went public on October 16. Mass exploitation followed within days.
How the chain reaches code execution
Each step hands the attacker a capability the next one needs:
- 1. Blind SSRF from the server itself.
/player/timelinechecks only that anX-Plex-Tokenheader exists, not that it is valid, soX-Plex-Token: junkpasses. Itsprotocolparameter is spliced into a callback URL asprotocol://host:portwithout validation, so a full URL makes the server send a POST from 127.0.0.1 to a destination the attacker picks, including its own loopback interface. See server-side request forgery for the general pattern. - 2. Loopback trust. The internal
/system/agents/*API skips token checks for loopback callers. InsearchOne, a broken guard lets an attacker-suppliedidentifierthrough unencoded into an internal plugin URL, so?and#characters forge a call to any plugin function with attacker parameters. - 3. Owner token theft. A bundled metadata agent fetches a URL on the attacker's behalf, and the plugin framework attaches the owner token to any URL whose string starts with
http://127.0.0.1. A hostname like127.0.0.1.<attacker-domain>passes that string check but resolves to the attacker, who receives the server'slocal-admin token. - 4. File write into Codecs. With the admin token,
PUT /:/prefssetsTranscoderH264Optionsto a debug option that dumps decoded frames to a file path inside the Codecs folder. A transcode request to/video/:/transcode/universalpointed at an attacker-hosted video, with an ELF hidden in the first frame, writesx.sothere. - 5. Library load. The bundled media library
dlopens every.soin that folder with no signature or naming check. The library's constructor runs on the next transcode, as the Plex service user (on Linux, typicallyplex).
The last two steps are a file upload vulnerability in everything but name: the attacker controls where a file lands, and the server later executes it.
Who is exposed and what attackers are doing
Any Plex Media Server older than 1.43.3.10861 that an attacker can reach on port 32400 is in scope, whether through router port forwarding, a UPnP mapping or a cloud host. Plex's own advice is blunt: if your server is older than 1.43.3.10861 and reachable from the internet, assume it may be compromised.
Plex reported the flaws as "actively and widely exploited" on October 19, three days after the proof of concept. The payloads seen so far are cryptocurrency miners and proxyware, which rents the victim's internet connection to other people. Both are quiet and profitable, and the same access works just as well for ransomware or for pivoting into whatever else sits on the home or office network.
Indicators Plex lists:
- Processes started by Plex Media Server named
myawesomeproxy,mylovelyminerorx12345. - Unfamiliar
.soor.dllfiles in the Plex Codecs folder. - Transcoder options in
Preferences.xmlthat you did not set, such asTranscoderH264Options. - Outbound connections to
proxystream[.]st. - Sustained high CPU while nothing is playing.
How to fix and clean up Plex2Shell
- Update to Plex Media Server 1.43.3.10861 or newer. Check the version under Settings, General in Plex Web. Container users should pull a current image and recreate the container.
- Close the exposure. Turn off Remote Access and remove any port forward for 32400 until you are patched. If you need remote streaming, put the server behind a VPN or an authenticating reverse proxy.
- Hunt before you trust it. Check the Codecs folder,
Preferences.xmland running processes for the indicators above. Patching does not remove a payload that is already there. - If you find anything, rebuild. Plex recommends a clean reinstall; at minimum, delete everything in the Codecs folder, remove unexpected transcoder options, sign out all devices and change the Plex account password. Treat everything the Plex service account could read or reach as exposed, including NAS shares mounted for media.
- Watch the edge. A
POST /player/timelinecarrying a full URL inprotocolis the first request of the chain and a good detection point on a reverse proxy.
Where Plex2Shell fits in the X2Shell family
Most X2Shell vulnerabilities are one bug in a ubiquitous component, like PHP2Shell in the PHP engine or Node2Shell in a bundled decoder. Plex2Shell is different: four modest bugs in one product, each trusting the step before it. Loopback is treated as an authenticated caller, a string prefix stands in for an address check, and a debug option can write anywhere. The lesson carries over to any server: a moderate SSRF is rarely moderate once you ask what the server trusts from itself.
References
- [1]Plex: Important security update for Plex Media Server v1.43.2 and earlier(Plex)
- [2]GitHub Advisory: GHSA-5p7w-r379-3c2m (CVE-2026-96652)(GitHub)
- [3]NVD: CVE-2026-96652(NIST NVD)
- [4]NVD: CVE-2026-96656(NIST NVD)
- [5]CISA Known Exploited Vulnerabilities Catalog(CISA)
- [6]Plex2Shell: Unauthenticated RCE in Plex Media Server (original disclosure)(Researcher write-up)