Bazarrに認証なしで設定を改ざんされる脆弱性、修正版あり
Bazarrに、認証なしでPlex連携の設定を書き換えられる脆弱性が公表されました。外部やほかの端末から届く環境では修正版へ更新し、まず管理画面が誰に見えているかを確認してください。
急ぎ度: 早めに
CVSS v3が10.0で、認証なしにネットワークから悪用でき、修正版の1.5.7-beta.14がすでに出ているためです。
関係があるか
Bazarrを自社や自宅のサーバーで動かし、Plexと連携している組織や個人が対象です。管理画面がインターネットや広い社内ネットワークから届く環境ほど影響が大きくなります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Bazarr(morpheus65535/bazarr) | 1.5.7-beta.14より前の版 | 1.5.7-beta.14 |
確かめ方
- 1Bazarrの管理画面でシステム情報を開き、版が1.5.7-beta.14より前かどうかを見ます。
- 2Dockerで動かしているなら、コンテナのイメージとタグから版を確認します。
- 3Bazarrのポートがインターネット、VPNなしの外部、社内の広いセグメントから届くかを、ファイアウォールやリバースプロキシの設定で確かめます。
- 4Plex連携を使っていない場合の影響は、ベンダーの告知で確認します。
何が起きたか
メディア用の字幕管理ツールBazarrで、Plex連携を扱うAPI群に認証がかかっていませんでした。本来は同じ画面のAPIにAPIキーが必要ですが、この部分だけ抜けています。そのため、Bazarrに通信できる相手なら誰でも、Plex連携の設定を消したり書き換えたりできます。
原因は、Plex用の各処理に認証を要求する指定が付いておらず、全体で補う仕組みもなかったことです。連携の解除、攻撃者が選んだキーの保存、攻撃者のPlexアカウントの紐付け、接続先サーバーやWebhookの変更といった設定の書き込み処理が、認証なしで呼べました。
接続先サーバーのURLを攻撃者が差し込めると、Bazarrが後から出す通信の宛先を変えられます。その通信には、設定済みのPlexのトークンが付きます。そのため、サーバーサイドリクエストフォージェリ(SSRF)と、認証情報の漏えいにつながります。
1.5.7-beta.14では、これらのAPIに認証が追加されました。
攻撃の流れ
-
1
到達
Bazarrのポートに通信できる位置から、認証なしでPlex用APIにアクセスします。
-
2
設定の書き換え
Plex連携の解除、キーの差し替え、接続先サーバーやWebhookの変更を行います。
-
3
アカウント紐付け
攻撃者のPlexアカウントのトークンが、このBazarrに結び付けられることがあります。
-
4
通信先の誘導
Bazarrが攻撃者指定のURLへ通信し、そこにPlexのトークンが付いて送られます。
-
5
被害の固定化
改ざんされた設定が保存され、連携停止や認証情報の漏えいが続きます。
どう悪用されるか
悪用に認証は要りません。ログインもAPIキーも不要で、利用者に何かを操作させる必要もありません。Bazarrにネットワークで届く位置にいれば試せます。攻撃の複雑さは低く、CVSSの評価でも影響範囲が他のコンポーネントに及ぶとされています。
悪用されると、まずPlex連携の設定が壊されたり差し替えられたりして、連携が使えなくなります。設定は保存されるため、Bazarrを再起動しても元に戻りません。
さらに、接続先を攻撃者が選べるため、Plexのトークンが外部に送られるおそれがあります。Bazarrの置かれた内部ネットワークへ通信を向けられる点も、SSRFとして問題になります。
今すぐやること
-
1
修正版に更新する
Bazarrを1.5.7-beta.14以降に更新します。更新後に動作確認として、Plex連携が従来どおり動くかを見ます。stable版の提供状況は、ベンダーの告知で確認してください。
-
2
現在の版と公開範囲を確認する
Dockerなら、動いているコンテナのイメージとタグを一覧で見られます。あわせて、Bazarrのポートがどこから届くかをファイアウォールで確かめます。
docker ps --format '{{.Names}} {{.Image}}' -
3
Plex連携の設定を点検する
連携の有効・無効、サーバーのURL、Webhookの登録、紐付いているPlexアカウントに見覚えのない変更がないかを調べます。変更が見つかれば、設定を戻したうえで次の手順に進みます。
-
4
トークンとAPIキーを入れ替える
改ざんの疑いがある場合や、管理画面を外部に公開していた場合は、BazarrのAPIキーとPlexのトークンを再発行します。Plex側で見覚えのない端末やアプリの許可も外します。
-
5
アクセスログを確認する
リバースプロキシやBazarrのログに、Plex関連のAPIへの未認証のアクセスが残っていないかを調べます。
すぐ更新できないとき
すぐに更新できないときは、Bazarrへの通信を信頼できる端末に限ります。インターネットに直接公開しているなら、公開をやめます。リバースプロキシの認証やVPNを前段に置き、管理画面とAPIを経由しない限り届かないようにします。ただし、同じネットワーク内の端末からの通信は防げないため、更新までのつなぎにとどめてください。
背景
Bazarrは、SonarrやRadarrが管理する映画やドラマの字幕を自動で探して取得するツールです。多くは家庭や小規模な環境のメディアサーバーの横で動き、Plexなどと連携します。業務の基幹システムではありませんが、PlexのトークンやAPIキーを保持しているため、漏れると連携先のサーバーにも影響が出ます。
今回の脆弱性は、特定の処理に認証を付け忘れたことで生じた、認証の欠落(CWE-862)にあたります。ほかのAPIでは認証が効いているのに、Plex連携用の一群だけが漏れていました。ログイン画面があるからといって、すべてのAPIが守られているとは限らない例です。
よくある質問
Q.Plexを使っていなくても更新が必要ですか。
Q.SonarrやRadarrも更新が必要ですか。
まだ分かっていないこと
- 1.5.7-beta.14は認証の欠落を埋めた版で、OAuthの状態検証を完全に整えたかどうかは確認できていません。この点は別の残課題として扱われています。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Bazarr is a companion application to Sonarr and Radarr. Prior to 1.5.7-beta.14, the api_ns_plex namespace in bazarr/api/plex/oauth.py omits @authenticate on its Resource handlers, while normal APIs require an API key and no global authentication hook compensates. Anonymous callers can invoke POST /api/plex/oauth/logout to clear credentials and disable the integration, or POST /api/plex/apikey to persist an attacker-selected key, without a PIN, account or state precondition. POST /api/plex/oauth/pin and GET /api/plex/oauth/pin//check additionally allow an attacker who completes a PIN with an attacker-controlled Plex account to bind that account's token to the instance. PlexPinCheck skips state validation when state_param is absent and merely logs a mismatch without stopping execution. POST /api/plex/select-server, POST /api/plex/oauth/servers, POST /api/plex/webhook/create, POST /api/plex/webhook/delete and POST /api/plex/encrypt-apikey expose further write_config() operations. Attacker-controlled server URLs feed later outbound requests carrying the configured API key in X-Plex-Token, enabling server-side request forgery and credential exposure in addition to persistent configuration tampering and integration denial of service. Version 1.5.7-beta.14 closes the anonymous API-mutation path by adding authentication; complete OAuth state validation is not established and remains a separate residual for curator review.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory github.com
- advisory nvd.nist.gov
- web security-advisories@github.com
- web security-advisories@github.com
- web security-advisories@github.com
- web security-advisories@github.com