
Plex2Shell(CVE-2026-96652 ほか3件)の影響を受けるPlex Media Serverを検出する
Plex2Shell の影響を受ける Plex Media Server を検出します。これは4つの脆弱性 (CVE-2026-96652、CVE-2026-96654、CVE-2026-96655、CVE-2026-96656) の連鎖であり、 攻撃者がログインせずに 1.43.3.10861 より古い Plex Media Server を乗っ取ることを可能にします。 shouldipanic.ch の一部です。
Plex2Shell は 2026年10月17日以降悪用されており (クリプトマイナー、プロキシ)、 CISA の Known Exploited Vulnerabilities リストに掲載されています。インターネットから到達可能な 1.43.3.10861 より古い Plex Media Server はすべて危険にさらされています。
plex2scan には2つの形態があります:
plex2scan.py: 依存関係のない単一の Python ファイルで、自身のサーバーをチェックするためのもの:
IP 範囲、Plex のポート 32400 を含むポートスキャン、vhost 検出、Plex バージョンチェック。
すべての Plex Media Server はログインなしで GET /identity に応答し、そこでバージョンを通知します。
plex2scan はスタートページを読み込み (X-Plex-Protocol ヘッダーまたは Plex Web ページで Plex を認識)、
/identity を一度だけ問い合わせます。それ以外は何も送信しません: ログインも、エクスプロイトも行いません。
curl -LO https://github.com/akaihigurashi/plex2scan/releases/latest/download/plex2scan.py
python3 plex2scan.py 203.0.113.0/24
Python 3.8 以降、インストール不要。例:
python3 plex2scan.py 203.0.113.10 # 21 ports incl. 32400 + every vhost on the IP
python3 plex2scan.py 203.0.113.10:32400 # only Plex's own port
python3 plex2scan.py plex.example.ch # a Plex behind a reverse proxy
python3 plex2scan.py 203.0.113.0/24 --names domains.txt # + hostnames from your own data
python3 plex2scan.py 203.0.113.10 -p all -o out.csv # all 65535 ports, CSV output
python3 plex2scan.py -h # all options
| ステータス | 意味 |
|---|---|
VULNERABLE | Plex Media Server が 1.43.3.10861 より古い |
POSSIBLY VULNERABLE | Plex Media Server を検出したが、バージョンが非表示 |
PATCHED | Plex Media Server 1.43.3.10861 以降 |
NOT DETECTED | Plex Media Server が確認できない |
結果は深刻なものから順に、短い理由とともに表示されます。非表示の結果(閉じているポート、エラー、デフォルトサイトのみを表示する vhost)は -a で、その証拠は -v で表示されます。
| オプション | 動作 |
|---|---|
-p LIST | ポート: web(一般的な20ポート + 32400、デフォルト)、all、または 80,443,32400 |
-n | ポートスキャンを行わず、443 と 80 のみ |
--names FILE | 独自のホスト名リストを vhost としてチェック |
--no-vhosts | 同じ IP 上の他のウェブサイトを探さない |
-a / -v | 非表示の結果を表示 / 証拠を表示 |
-o FILE | すべての結果を CSV にも書き出す |
-d | デバッグ: すべてのリクエスト、ヘッダー、マッチを表示 |
-q | バナーを表示しない(スクリプト向け) |
-V | バージョンを表示 |
-h | すべてのオプション |
myawesomeproxy、
mylovelyminer、x12345 などの見慣れないプロセス、Plex の Codecs フォルダ内の不明な .so/.dll ファイル、
proxystream.st への接続、何も再生していないのに高い CPU 負荷などです。更新しても、すでに侵入している攻撃者は排除されません。AlienVault OTX と HackerTarget はキーなしで動作します。VirusTotal、Shodan、 SecurityTrails は API キーが必要で、環境変数から読み取られます:
| 変数 | ソース |
|---|---|
PANIC_VT_KEY | VirusTotal パッシブ DNS |
PANIC_SHODAN_KEY | Shodan ホスト名 |
PANIC_SECURITYTRAILS_KEY | SecurityTrails リバース IP |
自分だけが読める .env ファイルに保存し、スキャンのためだけに読み込んでください:
( set -a; . ./.env; set +a; python3 plex2scan.py 203.0.113.10 )
--vt-key、--shodan-key、--securitytrails-key も使用できますが、コマンドライン引数は他のローカルユーザーから見え(ps)、シェルの履歴に残ります。キーの値はエラーメッセージ内でマスクされます。(Jonas Hüsser に感謝します。)
docker run -d --name plex2scan --restart unless-stopped \
-p 127.0.0.1:8091:8091 \
-e PANIC_ORIGIN=https://plex2scan.example.ch \
-v plex2scan-data:/data \
ghcr.io/akaihigurashi/plex2scan:latest
または Compose を使用する場合:docker-compose.yml をダウンロードし、PANIC_ORIGIN を設定してから docker compose up -d を実行します。コンテナは localhost のみで待ち受けます。その前に TLS 付きのリバースプロキシを配置してください(nginx の例)。
| 変数 | デフォルト | 目的 |
|---|---|---|
PANIC_ORIGIN | – | 公開アドレス。他のオリジンからのリクエストは拒否されます。必ず設定してください。 |
PANIC_OPERATOR / PANIC_CONTACT | – | ページ下部の任意の連絡先セクション |
PANIC_IMPRINT_URL | – | 既存のインプリントへの任意のリンク |
PANIC_TRUSTED_PROXY | 127.0.0.1,::1 | X-Real-IP ヘッダーが信頼されるプロキシ |
PANIC_DENY_HOSTS / PANIC_DENY_IPS | – | これらのドメイン / アドレスを決してチェックしない |
PANIC_AUDIT_DIR | /data/audit | 日次監査ログファイル |
PANIC_RETENTION_DAYS | 30 | これより古い監査ファイルは削除されます |
このページは php2scan と同じ保護機能を備えています:同意チェックボックス、監査ログ、VPN/Tor/データセンターのクライアントの拒否、レート制限、結果キャッシュ、接続をチェック対象アドレスに固定したうえでの公開ホスト名のみの許可、決してチェックされないウェブサイト(よく知られたサービス、アクセス数上位100サイト、政府サイト、制裁対象国)、および制裁対象国からのアクセス拒否。ウェブサイト自体(443、次に80)に加えて、このページはポート32400のみを参照し、それが開いている場合に限ります。
スキャナーエンジン(フェッチ、フィンガープリンティング、ポートスキャン、vhost 検出、ウェブサーバー)は panic-core にあります。Plex2Shell に固有のものはすべて check.py にあります。plex2scan.py と web.py は両方から生成されます:
git clone https://github.com/akaihigurashi/panic-core ../panic-core
python3 ../panic-core/bundle.py check.py
GPL-3.0、詳細は LICENSE を参照してください。フォント: Inter および JetBrains Mono(SIL Open Font License)。Plex, Inc. とは提携しておらず、同社による承認も受けていません。「Plex」は同社の商標です。