「Salesforceデータ漏えい」は設定ミスが主な原因? Googleが指摘する“見落とし”不備を見抜くCLIツール公開

Mandiantは、SalesforceのAuraフレームワークにおける“よくある設定ミス”を特定するオープンソースのCLIツール「AuraInspector」を公開した。

» 2026年02月09日 13時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 クラウドサービスにおける情報漏えいでは、高度なサイバー攻撃によるものではなく、「管理者の設定ミス」や「権限の見落とし」に起因するケースが目立っている。多くの企業で使われているCRM(顧客関係管理)ツール「Salesforce Experience Cloud」で発生している問題も、その典型例と言える。

 Googleのセキュリティ部門Mandiantは2026年1月13日(米国時間)、SalesforceのUI(ユーザーインタフェース)開発フレームワーク「Aura」内のアクセス制御の設定ミスを特定するための、オープンソースのCLI(コマンドラインインタフェース)ツール「AuraInspector」を公開した。Salesforce Experience Cloudで発生しているインシデントの多くは、高度な攻撃によるものではなく、管理画面上の設定ミスや見落としによって生じているという。

Googleが指摘する“見落とし”と対策ポイント

 Auraは、Salesforceの標準UI「Lightning Experience」の基盤技術となっている。Auraのエンドポイントは、フロントエンド(画面側の処理)からバックエンド(サーバ側)にアクセスし、オブジェクトレコード(顧客情報や商談履歴などのデータ)を取得するために使われる。利用者の権限に応じて「aura-enabled」と呼ばれるメソッドを呼び出すことが可能で、特に「getConfigData」メソッドを使うと、バックエンドのデータベースで使用されているオブジェクトの一覧が返される。

 Auraのエンドポイントは、フロントエンドがバックエンドからオブジェクトレコードなどの情報を取得するために使用される。権限に応じて「aura-enabled」メソッドを呼び出すことができ、特に「getConfigData」メソッドを使用すると、バックエンドのデータベースで使用されているオブジェクトのリストが返される。

getConfigDataメソッドによって返されるオブジェクトリストの例。設定ミスがある場合、外部からも参照可能になる(提供:Google)

Auraを用いたデータ取得の仕組みと制限の回避

 Salesforce Experience Cloudでは、UIにデータを表示するために、特定のAuraメソッドを呼び出すコンポーネントが存在する。例えば、「getItems」というメソッドを使用すると、ユーザーがアクセス権を持つ特定のオブジェクトのレコードを取得できる。

 ただし、このメソッドには標準状態で一度に最大2000レコードまでしか取得できないという制限がある。Mandiantの調査によると、「sortBy」というパラメーターを活用してソート順を変更することで、この制限を回避して追加のレコードを取得できることが分かった。フィールド名の前に「-」を付けることで昇順・降順を切り替え、本来アクセスできなかった範囲のデータまで取得が可能になるという。

sortByパラメーターを利用することで、設定ミスがある場合に2000件の制限を超えてレコードを取得できる(提供:Google)

レコードリストとホームURLの露出リスク

 Salesforceの「レコードリスト」コンポーネントは、ユーザーがアクセス権を持つオブジェクトに関連付けられたレコードの一覧を画面に表示する機能だ。通常は、各オブジェクトに対するアクセス制御(権限設定)が適切に構成されていれば問題は発生しない。しかし、アクセス制御の設定ミスがあると、認証されていない外部ユーザーでもレコード一覧を閲覧できてしまう恐れがある。

設定不備により外部から閲覧可能になったレコードリストの表示例(提供:Google)

 加えて、「getAppBootstrapData」メソッドを使用することで、直接ブラウズ可能なURLを取得できる。Mandiantは過去の調査において、この手法によりサードパーティー製モジュールの管理パネルが認証なしでアクセス可能な状態になっていることを確認した。マーケットプレースのアプリケーションをインストールした際に自動生成されるページもあり、管理者が手動で全てを追跡するのは困難な場合がある。

セルフ登録機能の設定不備

 Salesforceのゲストアカウントのセキュリティは近年強化されているが、認証済みアカウントを取得できれば、ゲストではアクセスできないレコードを閲覧できるリスクが高まる。これを防ぐには「セルフ登録」機能を無効にする必要がある。

 Mandiantは、ログインページからセルフ登録へのリンクを削除しただけで、機能自体は無効になっていないケースを確認した。「LoginFormController」の「getIsSelfRegistrationEnabled」および「getSelfRegistrationUrl」メソッドを使用すれば、セルフ登録が有効かどうかと、そのURLを即座に特定できる。

「GraphQL」を利用した2000レコード制限の突破

 Salesforceは、UI API(アプリケーションプログラミングインタフェース)を介してアクセス可能なオブジェクトからレコードを取得できる「GraphQL API」を提供している。公式ドキュメントには「GraphQL Auraコントローラー」に関する記載はないが、Mandiantはこれを未認証ユーザーから実行可能なリクエスト構成を特定した。

 このコントローラーを使用すると、以下のことが可能になるという。

  • レコードおよびオブジェクト情報の標準化された取得
  • ページネーションの改善による、全レコードの取得
  • 組み込みのイントロスペクション(オブジェクトの調査)によるフィールド名の特定
  • ミューテーション(データを書き換える操作)のサポートによる書き込み権限のテスト

 特に重要なのは、2000レコードの制限を受けずに、オブジェクトにひも付く全てのレコードを取得できる点だ。

GraphQL Auraコントローラーを用いて取得されたデータのレスポンス例。設定ミスがある場合、全レコードにアクセスできる可能性がある(提供:Google)

 カーソル方式を用いたページネーションにより、2000件ずつのバッチ処理で全てのデータを一貫して取得できる。これらの挙動自体は脆弱(ぜいじゃく)性ではなく、基盤となるオブジェクト権限を尊重するものだが、設定ミスがある場合には、攻撃者が大量のレコードにアクセスする手段として悪用される恐れがある。

推奨される対策

 Mandiantは、これらの設定ミスを修正するために以下のステップを推奨している。

  • ゲストユーザーの権限監査
    • プロファイルに最小権限の原則を適用し、公共向け機能に必要なオブジェクトとフィールドへの読み取り権限のみを許可する
  • 認証済みユーザーのプライベートデータ保護
    • 共有ルールと組織全体のデフォルト(既定)設定を見直し、明示的に許可されたレコードのみにアクセスできるよう制限する
  • セルフ登録の無効化
    • 必要ない場合は機能を無効にし、不正なアカウント作成を防止する
  • Salesforceセキュリティベストプラクティスの順守
    • 「Security Health Check」ツールの使用を含め、提供されている推奨事項を実装する

 今回公開されたAuraInspectorは、これらの手法を自動化し、管理者が自社の環境における不備を特定するのを支援する。悪用を避けるため、公開版のツールにはレコードの抽出機能は実装されていない。

公開された監査ツール「AuraInspector」のインタフェース(提供:Google)

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2026
人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。