Content management and web applications

Plex Media Server: Plex2Shell chain

Plex Media Server Plex2Shell RCE Chain

"Plex2Shell" chains flaws in Plex Media Server into unauthenticated remote code execution. The chain is an SSRF on /player/timeline (CVE-2026-96652), admin-token theft via searchOne (CVE-2026-96654), a second SSRF on the transcode path (CVE-2026-96655), and a file write into the Codecs directory that drops and runs an ELF shared object (CVE-2026-96656). CVE-2026-96651 was fixed in the same release. Plex fixed all of them in Plex Media Server 1.43.3.10861 (3 August 2026). A public proof-of-concept landed on 16 October 2026 and exploitation began the next day: attackers drop an XMRig miner (seen as mylovelyminer, fetched as x12345) and a reverse-proxy backdoor (myawesomeproxy), with traffic to proxystream[.]st.

The fix is to upgrade to 1.43.3.10861 or later, including NAS, Docker and VM installs, and restart, which this script does not do for you. It is read-only. Successful exploitation runs code as the Plex service account, so if this host was internet-exposed and unpatched, treat it as compromised: rebuild from a clean install, rotate the Plex account credentials and server token, and remove any router port-forwarding to Plex until it is updated. Attackers rotate file names, domains and ports, so a clean hunt means none of the published indicators were found. The version is the reliable signal.

Plex quick start

  1. Download the script. The repository is mirrored on GitHub and Codeberg; pick a base URL.

    # BASE from GitHub:   https://raw.githubusercontent.com/PrivacySafe/security-patches/refs/heads/main
    # BASE from Codeberg: https://codeberg.org/PrivacySafe/security-patches/raw/branch/main
    # curl -fLO "$BASE/plex/plex2shell-oct2026-check.sh"
    curl -fLO https://raw.githubusercontent.com/PrivacySafe/security-patches/refs/heads/main/plex/plex2shell-oct2026-check.sh
    
  2. Read it before running it, then make it executable.

    less plex2shell-oct2026-check.sh
    chmod +x plex2shell-oct2026-check.sh
    
  3. Check the Plex version.

    sudo ./plex2shell-oct2026-check.sh check
    
  4. Hunt the indicators.

    sudo ./plex2shell-oct2026-check.sh hunt
    

Plex commands

Command What it does
check (default) Reports the Plex Media Server version on the host (from the package or the install) and in running containers, judged against 1.43.3.10861. Read-only, root optional. Exits 0 if fixed or not present, 1 if a vulnerable Plex is present, 2 if a version couldn't be read
hunt Read-only. Scans Plex data directories, /tmp and scratch dirs for the known payload file names, lists recently changed files in the Codecs directory (where CVE-2026-96656 writes), greps files for the proxyware banner and mining domain, checks for the miner/proxy running, and scans logs for the attacker IPs and mining domain. Exits 0 if clean, 1 if it found something
version Prints the script version. Every command prints it on its first line too

Plex patch detection

Plex Media Server versions look like 1.43.3.10861-xxxxxxxxx. The script reads the numeric build (from the plexmediaserver package, or a version file in the install, or inside a container) and compares it to 1.43.3.10861. Anything earlier is vulnerable to Plex2Shell. Plex's own auto-update covers only Windows and macOS, so on GNU/Linux, NAS and Docker you upgrade through your package manager, a container pull and recreate, or a manual download, then confirm the running build.

Before you run it

  • The fix is upgrading; this script only tells you where you stand. Upgrade to 1.43.3.10861 or later on every install (NAS, Docker and VM included) and restart.
  • An exposed, unpatched server should be treated as compromised. The chain runs code as the Plex service account. Rebuild from a clean install, rotate the Plex account credentials and server token, and remove port-forwarding to Plex until it is updated.
  • Indicators change. Attackers rotate file names, domains and ports, so the hunt can miss a renamed payload. A clean hunt means none of the published indicators were found. The version is the reliable signal.
  • The Codecs listing is a review aid, not a verdict. Plex's own codecs are ELF shared objects too, so the script lists what changed there recently rather than flagging every shared object as malware.
  • Containers carry their own Plex. Pull a fixed image and recreate the container. A restart alone does not change the build.
  • GNU/Linux only , and it finds data directories under the scanned paths. Point PLEX_DATA_PATHS at a library kept elsewhere.
  • HUNT_ROOTS sets the scratch directories hunt searches for payload files and indicator strings (default /tmp /var/tmp /dev/shm, plus the Plex data directories it finds).
  • The script does not report itself. Its own file names the indicators, so the exact running file is left out of the content search. A different copy of the script saved under a scanned directory is still reported.

The Security Patches software and this documentation are dedicated to the public domain under CC0 1.0 Universal. Other pages on privacysafe.app/docs are CC BY-SA 4.0 unless the page says otherwise.

Edit this page on Codeberg

The PrivacySafe Ecosystem

Shop at Ivy Cyber

Ivy Cyber offers PrivacySafe products and services in the USA and has partnerships with 3NSoft in Canada and Kuip Limited in the European Union. Enterprise services and consulting are available at ivycyber.com

PrivacySafe Foundation is a 501(c)(3) nonprofit public charity that supports the development of the PrivacySafe applications, along with the components they rely upon: 3NWeb protocols, filesystem, documentation, and reference implementations.

PrivacySafe Foundation

Donations to PrivacySafe Foundation support education, research, documentation, and public code. Purchases from Ivy Cyber support PrivacySafe products, services, hosting, and technical support. Together, we're building a better web.