Microsoft Power BI で機密情報を公開する脆弱性を確認

Microsoft Power BI で機密情報を公開する脆弱性

2024年6月19日 海外のセキュリティコンサル企業「Nokod Security」がMicrosoft Power BI で機密情報が公開される脆弱性を指摘しました。Microsoft はこの脆弱性をレポートの共有ロールの問題であるとして現在、脆弱性ではないという見解を発表しています。

概要

Microsoft Power BI の脆弱性は悪用が非常に容易で、攻撃者は Power BI サービスで生成されたレポートには表示されないものの、その基礎となるデータ モデルの一部である情報を抽出できます。

また、潜在的なデータ漏洩シナリオには、次の情報へのアクセスが含まれます。

  • 集約または匿名化されたデータの背後にある詳細かつ潜在的に機密性の高いデータ
  • 表示されたレポートに含まれていなかった追加の属性とデータ資産
  • 表示から除外された追加のデータレコード

Nokod は 2024 年 5 月 16 日に Microsoft セキュリティ レスポンス センター (MSRC) に調査結果を報告し、2024 年 5 月 18 日に Microsoft はこの問題を確認しましたが、これを脆弱性ではなく機能であるとみなしました。

Nokod Security は診断ツールをリリース済み

Nokod Security は、組織がこの脆弱性に対する露出度を評価するのに役立つシンプルで無料のツール「Power BI Analyzer 」を作成しました。こちらからダウンロードできます。

技術概要

セマンティック モデルについて

すべての Power BI レポートは、セマンティック モデルに基づいて構築されます。セマンティック モデルは視覚化に使用できるすべてのデータを表示しますが、

レポート オブジェクトは、どのデータが実際にUI に表示されるか、およびその方法を定義します。

レポート オブジェクトの問題点

レポート オブジェクトが他のユーザーと共有されると (ワークスペースを共有することで明示的または暗黙的に)、

アクセス可能になる情報は次のものが含まれます。

  • レポートのUIで集計を表示するために使用される詳細なデータレコード
  • セマンティック モデルに含まれていて、レポートにはまったく表示されないテーブル (これらのテーブルがモデル内で明示的に「非表示」としてマークされている場合でも)
  • レポートの UI に表示されないテーブルの非表示列 (詳細または集計として、またこれらの列がモデル内で明示的に「非表示」としてマークされている場合でも)
  • 表示でこれらのレコードがフィルター処理される場合でも、表示で使用されるテーブルの詳細データ レコード。

Microsoft Power BI の「脆弱性」の詳細

Power BI レポートを実行するには、表示するデータを抽出する API 呼び出しが必要です。
以下は、公開されているレポートの次のエンドポイントへの POST 要求です。

https://wabi-west-europe-f-primary-api.analysis.windows.net/public/reports/querydata

組織内のユーザーのみが利用できるレポートには、別の API エンドポイントが使用されます。

https://pbipweu14-westeurope.pbidedicated.windows.net/webapi/capacities/<capacityObjectId>/workloads/QES/QueryExecutionService/automatic/public/query

呼び出しのペイロードは、独自の Power BI 形式でクエリを表す JSON メッセージです。この API への呼び出しは、レポートに含まれるビジュアルごとに行われます。応答には、要求されたデータの JSON 表現が含まれます。

最初の例では、ペイロードに「Products」テーブルの「name」列を取得するためのクエリが含まれています。このクエリは、名前に文字「c」が含まれる製品にデータを制限します。

画像引用:Nokod Security

非表示ユーザーでもクエリで指定のデータを要求できる

ユーザーは、レポートの基礎となるセマンティック モデルの一部である限り、

前の例で示したように、フィルターと集計を削除するのは非常に簡単で、データ ソースのスキーマに関する知識は必要ありません。

ただし、視覚化に含まれていないデータを追加するには、攻撃者はスキーマに関する知識が必要になります。

スキーマの取得もAPIで可能に

これは、Power BI レポートの生成に使用される別の API 呼び出しによって取得できます。公開可能なレポートの場合、呼び出しは次のエンドポイントへの POST 要求です。

https://wabi-west-europe-f-primary-api.analysis.windows.net/public/reports/conceptualschema

組織内のユーザーのみが利用できるレポートには、別のエンドポイントが使用されます。

https://wabi-west-europe-f-primary-redirect.analysis.windows.net/explore/conceptualschema

次の例では、SQL DB をレポートに接続し、「secrets」テーブルを非表示にします。図の通り、これは「conceptualschema」API の呼び出しによって返され、すべての列と値は「query」API を通じてアクセスできます。

画像引用:Nokod Security

意図しているか関わらず検索エンジンにクロールされるPower BI レポート

実際、検索エンジンの助けを借りれば、Web 上に公開されている多数の Power BI レポートを見つけるのは非常に簡単です。site :app.powerbi.com inurl:”view?r=” などの単純な検索文字列では、文字通り無数の結果が返されます。たとえば、Bing では 160,000 件を超える結果が返されました。 

検索エンジンから特定の文字列を含むレポートを取得

この検索文字列のバリエーション、たとえばsite:”https://app.powerbi.com/view?r=” + sales を使用すると、より焦点を絞った結果が得られます。

この特定の検索文字列に基づくクエリの中には、50,000 件を超える結果が生成されたものもあります。

結果の多くは、サービス プロバイダーが顧客向けに Power BI スキルを実証するために作成したサンプル レポートですが、実際の組織からの実際のデータを表す結果も多数あります。

公開レポートからクエリを指定し機密データを抽出

「Nokod Security」は絞り込んだ検索用語と手動検査を適用した結果、この脆弱性にさらされ、追加の機密データが抽出される可能性のある数十のレポートをすぐに検出しました。

繰り返しになりますが、この膨大な数の検索結果を手動でランダムにスクリーニングした結果、悪用可能なレポートの例を多数発見できたという事実は、このリスクの深刻さを物語っています。

脆弱であると判明した組織の中には、意図せず PHI を公開している州政府のサイト、従業員データを公開している大学、PII を公開している自治体などがありました。

Microsoftの見解

したがって、レポートを作成して共有する組織は、機密情報を漏洩しない方法でレポートを作成する責任があります。

Nokod Securityは、この動作 (特に「非表示」の列とテーブルに関して) に関する Microsoft の評価には同意していませんが、レポートを作成する際に組織がデータを保護できるように、次のガイドラインを作成しました。

Nokod SecurityのMicrosoft Power BIに関するガイドライン

  • レポートのセマンティック モデルで「非表示」のテーブルと列を使用する代わりに、それらをセマンティック モデルから完全に削除します。これはテーブルの場合は簡単に実現できますが、個々の列の場合は可能でも少し複雑です。
  • レポートにデータ テーブル全体のサブセットのみを表示する場合 (たとえば、特定の地域の従業員のデータのみ、特定の製品セットのデータのみなど)、Power Query 式を使用して、「セマンティック モデル」に添付する「データ ソース」を制限します
    この方法では、セマンティック モデルはデータ ソースに直接アクセスせず、サブセットのみにアクセスします。
  • 集計データを表示する場合は、セマンティック モデルの基になるデータ ソースの非機密列のみを選択するようにしてください。何らかの理由でこれが不可能な場合 (集計が機密列の関数に基づいている場合など) は、Power Query 式を使用して「データ ソース」のデータを集計します。

さらに、組織では、Power BI 環境を頻繁に確認して、意図せずに Web に公開されたレポートや、組織内で過剰に共有されたレポートがないかどうかを確認することがベスト プラクティスです。レポートを広く共有する必要がある場合は、レポートのセマンティック モデルが上記のガイドラインに従っていることを確認してください。

引用:In Plain Sight: How Microsoft Power BI Reports Expose Sensitive Data on the Web

TOPへ