Portabaseに認証不要で暗号鍵を上書きされる脆弱性、修正版あり
セルフホスト型のバックアップツールPortabase Community Editionに、認証なしで暗号化のマスターキーを上書きされる脆弱性があります。インターネットから届く環境は、1.21.2に更新し、マスターキーの状態も確認してください。
急ぎ度: 至急
CVSS v3は9.8で認証なしにネットワークから攻撃でき、1.21.2で修正版が出ているため、外部から届く環境では直ちに更新する必要があります。
関係があるか
セルフホストでPortabase Community Editionを動かし、信頼できないネットワークから到達できる環境が対象です。社内限定の運用でも、信頼できない端末から届く構成なら当てはまります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Portabase Community Edition(portabase) | 1.21.1以前(1.21.2未満) | 1.21.2以降 |
確かめ方
- 1稼働中のPortabaseの版を、管理画面かコンテナイメージのタグで確認し、1.21.2未満なら対象です。
- 2リバースプロキシやファイアウォールの設定を見て、/tus/ と /api/tus/hooksに外部から届くかを確認します。
- 3インターネットに直接公開している、または広い社内ネットワークに公開している場合は、後述のマスターキーの確認も行います。
何が起きたか
Portabaseは、PostgreSQLやMySQLなど多くのデータベースのバックアップと復元を担うツールです。この脆弱性を悪用されると、バックアップを暗号化するマスターキーのファイルを、攻撃者の用意した内容に差し替えられます。
原因は、ファイルアップロード(TUS)の完了通知を受けるWebhookの処理にあります。リクエストのヘッダーで指定されたファイルパスが検証されず、保存先のディレクトリを抜けて、非公開データ領域のファイルを上書きできました。CWEは、パストラバーサル(CWE-22)と重要な機能での認証欠如(CWE-306)の2つです。内部向けのWebhookが、外部のアクセスにも開かれていたことになります。
修正版の1.21.2では3点が変わりました。ファイルパスを決まった形式の許可リストで検証し、解決後のパスがアップロード用ディレクトリの内側に収まるかも確かめます。Webhookの呼び出しは既存のバックアップ記録に結び付け、偽の要求は拒否します。さらにリバースプロキシで /api/tus/hooksを外部から遮断し、tusdがループバックで呼ぶ経路に限りました。
GitHubの勧告とPull Requestの日付は2026年7月4日で、CVEの記録は2026年11月11日に公開されました。修正版はCVEより前から出ています。読み手の問いは、新しい話として身構えることではなく、更新済みかどうか、その間に侵害されていないかです。
攻撃の流れ
-
1
到達できる公開
PortabaseのTUSアップロードの経路が、信頼できないネットワークから見える状態になっている。
-
2
細工した要求
攻撃者がアップロードの要求のヘッダーに、保存先の外を指すファイルパスを入れて送る。
-
3
検証なしで保存
Webhookがパスを検証せず、非公開データ領域のファイルを上書きする。
-
4
鍵の差し替え
マスターキーが攻撃者の用意した値に置き換わる。
-
5
バックアップへの影響
既存の暗号化データが読めなくなり、以後の暗号化データは攻撃者に復号されうる。
どう悪用されるか
認証は要りません。Portabaseの /tus/files/ に届くネットワーク上の位置にいれば、遠隔から実行でき、利用者の操作も要りません。勧告によると、2回のHTTPリクエストで成立します。
被害は2種類あります。1つは、元のマスターキーで暗号化されたデータが恒久的に読めなくなることで、暗号化バックアップの可用性が失われます。もう1つは、攻撃者が書き込んだ鍵の値を知っているため、その後にその鍵で暗号化されたデータを復号されうることです。バックアップには本番データベースの内容が含まれるので、情報漏えいにもつながります。
今すぐやること
-
1
1.21.2以降に更新する
Portabase Community Editionを1.21.2以降に更新します。リバースプロキシでの遮断は修正の代わりにならず、勧告も1.21.2への更新が必要としています。
-
2
外部からの経路を遮断する
更新と合わせて、リバースプロキシで /api/tus/hooksを外部から届かないようにします。Portabaseをインターネットに直接公開しない構成にします。
-
3
マスターキーの状態を確認する
1.21.1以前を外部から届く状態で動かしていた場合は、マスターキーが書き換えられていないかを調べます。更新日時が想定外に新しくないか、既存のバックアップを復元できるかを確認します。コンテナ内か該当ボリューム上で実行してください。
ls -l --time-style=full-iso /data/private/keys/master_key.bin -
4
アクセスログを調べる
リバースプロキシやWebサーバーのログで、/tus/files/ に対する不審な要求がなかったかを、修正版を当てるまでの期間について確認します。
-
5
侵害の疑いがあれば鍵とバックアップを見直す
鍵の改ざんが疑われる場合、書き換え後に作ったバックアップは攻撃者に復号される恐れがあります。該当期間のバックアップの扱いと鍵の入れ替えを、ベンダーの案内を確認して判断します。
すぐ更新できないとき
すぐに更新できないときは、リバースプロキシで /api/tus/hooksと /tus/ を信頼できないネットワークから遮断し、インスタンスをインターネットに直接公開しないでください。バックアップを送るエージェントが /tus/ を通る構成では、遮断すると影響が出るため、自社の経路を確認してから適用します。この脆弱性そのものを設定だけで防ぐ方法はなく、つなぎとして使い、早めに1.21.2へ更新してください。
背景
バックアップツールは、本番データベースのコピーを一か所に集める性質があります。Portabaseは多くの種類のデータベースを扱い、保存するバックアップをAES-256-GCMのマスターキーで暗号化します。このキーが差し替えられると、暗号化の保護が崩れるだけでなく、復元できないバックアップが残るおそれがあります。守るべき資産の中心に近いファイルが、認証なしで上書きできた点がこの脆弱性の特徴です。
パストラバーサルは、外部から受け取ったファイルパスを検証せずに使うことで起きる脆弱性です。今回は、アップロード完了を通知する内部向けのWebhookが外部にも届き、そこで受けたヘッダーの値がそのままファイルの移動先に使われていました。修正版でWebhookをリバースプロキシで遮断し、ループバックでのみ呼ぶ設計にしたのは、この内部用の経路を外に出さないためです。
よくある質問
Q.リバースプロキシで遮断すれば、更新しなくてもよいですか。
まだ分かっていないこと
- 攻撃を受けたかどうかを見分ける具体的なログの見方は、勧告に書かれていません。
- Community Edition以外の提供形態が影響を受けるかどうかは、勧告に書かれていません。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Portabase is a database backup and restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis, Files and Docker Volume. Prior to version 1.21.2, a path traversal in the TUS upload webhook handler (app/api/tus/hooks/route.ts) allowed an unauthenticated attacker to overwrite arbitrary files under the private data directory, including /data/private/keys/master_key.bin (the AES-256-GCM master key). This issue has been patched in version 1.21.2.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory github.com
- advisory github.com
- advisory nvd.nist.gov
- patch github.com
- patch github.com
- web github.com