madong-admin-saasの脆弱性、認証なしでテナント操作
madong-admin-saasの5.1.4以前では、認証なしでテナントの作成や削除、プランの紐づけができてしまいます。運用している組織は修正を取り込み、/platformapi/への到達を絞ったうえで、アクセスログも確認してください。
急ぎ度: 至急
CVSS v3は9.4で、認証もユーザー操作も要らずネットワーク越しに悪用でき、修正のコミットが公開されているためです。
関係があるか
madong-admin-saasを自社サービスの基盤として動かし、プラットフォーム側のAPIがインターネットや広い社内ネットワークから届く環境が当てはまります。複数の顧客(テナント)を預かるSaaS運営者は、影響が顧客のサービスにまで及びます。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| madong-admin-saas | 5.1.4以前 | 修正のコミットが公開されています。リリース版の番号は、プロジェクトの告知とリポジトリで確認してください。 |
確かめ方
- 1デプロイしているコードの版を確認します。リポジトリから取得した環境なら、
git describe --tagsとgit log -1で、いまのタグとコミットが分かります。5.1.4以前なら対象です。 - 2プラットフォーム側のAPI(/platformapi/ で始まるパス)が、外部から到達できるかを確認します。リバースプロキシやロードバランサーの公開設定を見てください。
- 3Webサーバーのアクセスログに、/platformapi/tenant/account、bind-plan、sync-dataへの認証情報のない要求が残っていないかを検索します。
何が起きたか
madong-admin-saasのプラットフォーム側にあるテナント管理APIで、ログインの確認が働かない脆弱性が見つかりました。5.1.4までの版が対象です。
原因は、認証を行うミドルウェアに付けた名前(platformapi)が、実際のアプリケーション名(platform)と一致せず、保護が掛からないままになっていたことです。
対象は /platformapi/tenant/account、bind-plan、sync-dataの各エンドポイントです。悪用されると、テナントの一覧取得、作成、変更、無効化、削除と、サブスクリプションプランの紐づけが、ログインなしで実行されます。
攻撃の流れ
-
1
APIへ到達
外部のネットワークから、プラットフォーム側のテナント管理APIに要求が届きます。
-
2
認証が掛からない
ミドルウェアの名前が合わず、ログインの確認を通らずに処理が進みます。
-
3
テナント操作
テナントの一覧取得や作成、変更、無効化、削除、プランの紐づけが実行されます。
-
4
サービスへの影響
顧客のテナントが止まったり消えたり、契約内容が書き換わったりします。
どう悪用されるか
認証は要りません。ネットワーク越しに対象のAPIへ届けば足り、利用者に何かを操作させる必要もありません。CVSSでも、攻撃の複雑さは低いと評価されています。
悪用されると、機密性への影響は限定的ですが、テナントの一覧を見られます。一方で、テナントの書き換え、無効化、削除によって、完全性と可用性が大きく損なわれます。SaaSの運営者にとっては、顧客のサービスが突然止まる、契約プランが勝手に付け替わる、といった形で表れます。
今すぐやること
-
1
いまの版を確認する
デプロイ中のコードが5.1.4以前かどうかを確かめます。複数の環境(本番、検証、予備)があれば、すべて見ます。
git describe --tags -
2
修正を取り込む
公開されている修正を取り込んで再デプロイします。リリース版の番号はプロジェクトの告知で確認し、取り込み後に認証なしの要求が拒否されることを検証環境で確かめます。
-
3
APIへの到達を絞る
修正までのあいだも、取り込んだあとも、プラットフォーム側のAPIは運営担当者のIPアドレスやVPNからに限ります。
-
4
ログとテナントの状態を調べる
/platformapi/ への認証情報のない要求がないかをアクセスログで調べます。あわせて、身に覚えのないテナントの作成、無効化、削除、プランの変更がないかを、管理画面とデータベースで見比べます。
-
5
必要なら戻す
不審な変更が見つかったら、バックアップからテナントの状態を戻し、影響を受けた顧客へ案内する準備を始めます。
すぐ更新できないとき
すぐに修正を当てられないときは、リバースプロキシやWAFで /platformapi/ で始まるパスを、運営担当者のIPアドレスやVPN経由の通信だけに限ります。プラットフォームの管理画面が同じパスを使っている場合は、全面遮断すると管理画面も使えなくなるため、許可元を絞る形にしてください。
背景
madong-admin-saasは、複数の顧客(テナント)を1つの基盤で預かる、SaaS向けの管理システムです。今回のAPIは、運営者側がテナントの作成や停止、契約プランの紐づけ、データ同期を行う窓口にあたります。顧客ごとの管理画面とは別に、全テナントの生死を握る権限を扱う場所です。
今回の脆弱性は、認証の処理そのものに誤りがあったわけではなく、認証を適用する名前と実際のアプリケーション名が食い違ったために保護が掛からなかったものです。設定の食い違いはエラーにならず、画面も普通に動くため、動作確認だけでは気づきにくい点に注意が要ります。
よくある質問
Q.社内ネットワークからしか届かない構成なら、急がなくてよいですか。
Q.テナント側の利用者向け機能だけを使っている場合も対象ですか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| madong-code | madong-admin-saas |
5.1.4 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
madong-admin-saas through 5.1.4 contains a missing authentication vulnerability in the platform tenant management API because the 'platformapi' middleware key never matches the 'platform' application. Unauthenticated remote attackers can call /platformapi/tenant/account, bind-plan and sync-data endpoints to list, create, modify, disable or delete tenants and bind subscription plans.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory