SalesforceとServiceNowの両プラットフォームには、認証されていない訪問者用の永続的なゲストユーザーアカウントが標準で備わっています。このゲストユーザーは削除できません。各組織がその権限—どのレコードやオブジェクトを読み取り可能にするか—を設定する仕組みです。ゲストプロファイルが特定のレコードへの読み取りアクセスを持っている場合、インターネット上の誰もが、完全に正当なAPIエンドポイントを通じてそのデータを取得できてしまいます。
Salesforce(Auraフレームワーク)の場合:
/aura または /s/sfsites/aura エンドポイントにPOSTリクエストを送信します。HostConfigController.getConfigData を呼び出し、ゲストがアクセス可能なオブジェクト(Account, Contact, Case, Lead, User, ContentDocumentなど)を列挙します。SelectableListDataProviderController.getItems を使用し、アクセス可能な各オブジェクトの全レコードをページングしながら取得します。Salesforce(LWRフレームワーク:Lightning Web Runtime)の場合:
ServiceNowの場合:
セルフ登録のプローブ(Salesforce):
158.220.87.79(ドイツのホスティングプロバイダContaboのVPS)。ドメイン city-forum.com(2002年に登録され、その後放棄され、再利用されたドメイン)に解決されます。Go-http-client User-Agent文字列を使用するため、ログでの識別が容易です。ServiceNowの場合: プラットフォームのトランザクションログ(syslog_transaction)は、/api/now/sp/search リクエストのPOSTボディを記録しません。防御側は、自動化された検索が発生したことと、返されたデータのおおよその量(出力長列で確認)を知ることはできますが、正確な検索語や、どの特定のレコードが取得されたかは特定できません。
Salesforceの場合: ゲストの列挙トラフィックは、通常のサイトトラフィックと見分けがつかない、正当でプロトコルに準拠したAPI呼び出しです。イベントモニタリングは、ゲストユーザーからの AuraRequest や Sites イベントの量を示すことはできますが、GraphQLやAuraのレスポンスで返された具体的な内容までは記録しません。
つまり、攻撃者がいたことと、どれだけのデータを取得したかはわかっても、どのレコードやフィールドが抽出されたのかを正確に再構築することはできないのです。
sp_portal、m2m_sp_portal_search_source、sp_search_source テーブルを確認し、公開ポータルに不要な検索ソースをデタッチします。is_scripted_source、data_fetch_script、そしてACLを適用する GlideRecordSecure と適用しない GlideRecord のどちらを使用しているかを確認します。kb_uc_can_read_mtom リンクをデタッチする。