Salesforce Lightning Platformへの攻撃手法について

monii
8 min readDec 25, 2020

--

Salesforceが発表した以下の件の攻撃手法等について、気になったので少し追ってみる。(なお、このブログの内容と以下の記事の内容が一致するかは定かではない点に注意)
https://www.salesforce.com/jp/company/news-press/press-releases/2020/12/201225/

概要

SalesforceのAuraエンドポイントを通じて、第三者が認証不要のゲストユーザ権限で、権限のあるデータへアクセス可能な問題がある。

この文だけ読めばまあ別に普通なのかもと思うかもしれないが、実は注意して設定しないと本来見えてはいけない情報も見えてしまう。
この注意して設定というのが肝で、途中で仕様が変わったり、デフォルト設定はONだったり、公式のアナウンスが不十分だったりという陥りやすいポイントがあるために、問題のある設定の状態で運用が行われ、情報漏えいが起きているというのが構図。たぶん。

ざわざわと始まったのが以下の投稿。詳細はこのすばらしい投稿を参照されたい。

Enumerated — Salesforce Lightning — An in-depth look at exploitation vectors for the everyday community
https://www.enumerated.de/index/salesforce

Auraエンドポイントとは

Salesforce力がないので間違ってたらご指摘ください。
Auraエンドポイントは、Salesforce の新しいPaaS基盤である Lightning Experience以降で利用できる開発者用のAPIエンドポイントのこと。
なお、Lighting Experienceの前の基盤は Classic と呼ばれている。

要するにゲストユーザ権限でこのAPIエンドポイントに対して攻撃ができる。

ゲストユーザ権限に関するタイムラインを少し見てみる。

2015/8/25: Lightning Experienceが発表された。
https://www.salesforce.com/jp/company/news-press/press-releases/2015/08/150828/

2018/9/22: ゲストユーザの脆弱性が報告された。
- Salesforce Sites および Communities に影響を与えるセキュリティ脆弱性

Winter ’19のリリース: ゲストユーザに関するアップデートがあり、権限が制限された。
- Limit Guest User Access to Activities
- Improve Security for Sites and Communities by Restricting Record Access for Guest Users

Spring’ 19のリリース: ゲストユーザのLightning機能をオフにするための機能が追加
- Control Whether Guest Users Can See Lightning Features in Sites

Winter’ 20のリリース: ゲストユーザに対する制限付きアクセス、ゲストユーザーのプライベート組織全体のデフォルト、および新しい共有ルールなどの追加
- Guest User: Restricted Access, Private Org-Wide Default for Guest Users, and New Sharing Rules

Spring’ 20のリリース: 新しいゲストユーザーアクセス設定と権限の削除
- Guest User: New Guest User Access Setting and Removed Retired Permissions

Summer’ 20のリリース: ゲストユーザに対してセキュリティポリシーが適用
- Guest User: Security Policies Enforced
- ゲストユーザプロファイルで「すべてのユーザの表示」権限が無効化

Winter ’21のリリース: ゲストユーザへセキュリティポリシーの強制
- Guest User: Security Policies Enforced
- ゲストユーザがこのコミュニティの他のメンバーを表示できるようにする設定がデフォルトで無効
- 既存の組織のゲストユーザの「すべて表示」、「すべて変更」、「編集」、「削除」オブジェクト権限が無効

Spring ’21のリリース: ゲストユーザへさらに権限が強制される。
- Guest User Security Policies Enforced
- ゲストユーザの「すべて表示」、「すべて変更」、「編集」、および「削除」オブジェクト権限の削除。

タイムラインから見えることは、おそらくLightningが発表された2015年からこの攻撃は可能だったと推測される。(正直リリースノートの関連性を把握しきれていないので別事象が混在している可能性もある。)
ゲストユーザの権限で情報が閲覧できる問題を脆弱性として認識していて、権限を絞ったからといって普通デフォルトオンで提供しないでしょ・・・と思う。

問題が起こる条件

以下の3つの条件がそろった場合に本問題が生じる。
・Salesforceの「サイト」が有効になっている。
・サイトの設定において、「ゲストユーザのLightning機能」が有効になっている。(デフォルトで有効)
・ゲストユーザのプロファイルに不要なオブジェクト権限が設定されている。(デフォルトの設定でも権限のある範囲でSalesforce Default Objectを見ることが可能)

上記の条件がそろうと、ゲストユーザ権限(認証不要)でSalesforceのDefault ObjectやCustom Objectの中身が取得できるようになる。
もし、これらのObjectの中にPIIといった情報が含まれている場合、個人情報の漏えいに繋がる。
ちなみにサイトの種類は複数ある模様。コミュニティを作ると自動的にサイトも作られる。

対応方針

影響がわからないうちは、まず暫定対応をしておくのが良いかも。
・暫定対応
ゲストユーザのLightning機能の無効化。(止血目的)

・恒久対応
Salesforceのドキュメントに従いゲストプロファイルの設定。もしくは、ゲストユーザ権限が不要であれば、無効化。https://help.salesforce.com/articleView?id=networks_guest_profile_best_practices.htm&type=5

対応の詳細はこちらを参照
うちも不安…という方向けのsalesforceアクセス権を安全に保つ5つの確認箇所
上司「うち大丈夫なの?」Salesforce Experience Cloudアクセス権限とセキュリテイを説明してみた

攻撃の詳細

詳細は前述のブログを参照。

流れとしては以下の感じ。
・Salesforceのサイトトップにアクセスする。
・BurpSuiteなどを使い、Auraエンドポイントにアクセスしているログを見つける。
・messageパラメータの値をオブジェクト一覧やオブジェクトの中身を取得するようなペイロードに書き換えてアクセスする。

PoCを書いてみた。研究用途のみで利用してください。
https://github.com/moniik/poc_salesforce_lightning
ちなみにSalesforceの判断では脆弱性ではないらしい。

攻撃の被害の確認方法

Salesforceでは、基本的にはユーザはログをみることはできない。
ただし、Salesforce Shield(別売り)のライセンスを購入していれば、ログを自身で取得できる模様。

ライセンスを購入していない場合、攻撃の有無や成否を確認するためには、Salesforceに問い合わせてログを取得するしか方法はない。つまり、ユーザは攻撃に対して気づく術はない点に注意する必要がある。

2020/12/29 追記
・被害の確認方法について記載。
・piyo様のまとめをうけて、タイムラインでSpring’19が抜けていたので追記。圧倒的感謝。piyo様のリンクを記載。
・タイムラインでwinterとspringの順が間違えていたので修正。
・対応方針のところで、詳細を書いていただいている記事を記載。

2021/01/22 追記
・攻撃被害の確認方法でSalesforce Shieldについて追記。
・タイムラインを修正

--

--