セキュリティ研究の自動化:AIエンジンがGCPサービスアカウントのシークレットを悪用
HackerOneのモバイルアプリで発見された、Pub/Subへの過剰な権限を持つハードコードされたGCPサービスアカウントについて、実践的な詳細分析と実際の悪用を紹介します。認証と権限の列挙から、エンドツーエンドのメッセージ注入・傍受まで、OstorlabのAIペンテストエンジンが一連のサイクルをどのように自動化し、4日以内の修復につなげたかを解説します。
すべてのシークレットが同じ重みを持つわけではありません。
以下は、HackerOneのバグバウンティプログラムに参加しているモバイルアプリケーションにGoogle Cloudのサービスアカウントキーが埋め込まれているのが発見された後の、Ostorlab AI Pentestエンジンによる推論と出力です。
シークレットの中には、評価が難しいものがあります。認証情報が有効だからといって、自動的に重大な影響があることにはなりません。 リスクを判断するには、その実効的な権限と到達可能なリソースをブラックボックス方式で評価する必要があります。 以下の手順では、影響をどのように評価し、検証し、安全に実証したかを記録しています。 エクスプロイトによる実証のおかげで、この問題は報告から4日以内に修復されました。
提供されたサービスアカウントキーを使用して、Google Cloud Platformに認証してください。この最初のステップは、後続のすべての列挙および評価タスクのためのセッションとコンテキストを確立するために必須です。認証されたプリンシパルとプロジェクトのコンテキストを記録してください。
GCPサービスアカウントのセキュリティ評価
1. エグゼクティブサマリー
Google Cloudのサービスアカウントeshop-iap@REDACTED.iam.gserviceaccount.comを分析しました。認証情報は有効かつアクティブであることが判明しました。このサービスアカウントはGoogle Cloud Pub/Subサービス内で広範な権限を持っており、これは高リスクのセキュリティ脆弱性をもたらします。侵害された場合、これらの権限を悪用して機密データを傍受し、サービスの運用を妨害し、悪意のあるデータを注入することが可能です。
2. 検証と列挙
検証ステータス:VALID
eshop-iap@REDACTED.iam.gserviceaccount.comのサービスアカウントキーはアクティブであり、Google Cloud Platformに対する認証に成功しました。
列挙された権限:
プロジェクトREDACTED内で、このサービスアカウントについて以下の権限が列挙されました。
- Pub/Sub:
pubsub.snapshots.*(スナップショットに対する完全な制御)pubsub.subscriptions.*(メッセージの消費を含む、サブスクリプションに対する完全な制御)pubsub.topics.*(メッセージの公開を含む、トピックに対する完全な制御)- Resource Manager:
resourcemanager.projects.get(プロジェクトのメタデータの閲覧)- Service Usage:
serviceusage.quotas.get(サービスの割り当ての閲覧)serviceusage.services.get(サービスのステータスの閲覧)serviceusage.services.list(有効なサービスの一覧表示)
3. セキュリティへの影響の分析
セキュリティリスクの核心は、広範なPub/Subの権限にあります。これらの権限により、サービスアカウントは以下の操作を実行でき、攻撃者がこれを悪用する可能性があります。
- データの持ち出し(影響:高):
pubsub.subscriptions.consume権限が最も重大です。これにより、サービスアカウントはプロジェクト内のあらゆるPub/Subサブスクリプションからメッセージを読み取ることができます。個人を特定できる情報(PII)、金融データ、アプリケーションのシークレットなどの機密情報の窃取につながる可能性があります。 - サービス拒否(影響:高):トピックとサブスクリプションを削除する権限(
pubsub.topics.delete、pubsub.subscriptions.delete)があれば、攻撃者はアプリケーションのメッセージング基盤を妨害し、サービス拒否を引き起こすことができます。 - データの注入・改ざん(影響:高):
pubsub.topics.publish権限により、サービスアカウントはあらゆるトピックにメッセージを公開できます。これを利用してアプリケーションのワークフローに悪意のあるデータやコマンドを注入でき、リモートコード実行やその他の脆弱性につながる可能性があります。 - 権限昇格(影響:中):トピックとサブスクリプションに対する
setIamPolicy権限を利用して、他のユーザーやサービスアカウントにPub/Subリソースへのアクセス権を付与でき、権限昇格につながる可能性があります。
resourcemanagerとserviceusageの権限は読み取り専用であり、リスクは低いものです。プロジェクトの設定や有効なサービスに関する情報を収集する偵察に使用される可能性があります。
4. 想定される悪用シナリオ
サービスアカウントキーを入手した攻撃者は、次のことが可能です。
- リアルタイムデータの傍受:重要なトピックに新しいサブスクリプションを作成し、既存のワークフローを中断することなくすべてのメッセージのコピーを受信したうえで、データを持ち出す。
- 重要なワークフローの妨害:マイクロサービス間の通信に不可欠なトピックを削除し、サービス停止を引き起こす。
- データの汚染:悪意のあるペイロードを含むメッセージをトピックに公開する。そのメッセージがデータを信頼する下流のサービスによって消費され、そのサービスの侵害につながる。
5. 推奨事項
- 最小権限の原則:このサービスアカウントの権限を見直し、本来の機能に必要な絶対的な最小限にまで削減すべきです。
- キーのローテーション:侵害されたサービスアカウントキーを直ちに失効させ、新しいキーを生成すべきです。
- 監視と監査:このサービスアカウントが実行するすべての操作について監査ログを構成し、不審なアクティビティを検出できるようにします。
- 脆弱性管理:キーが発見されたAndroidアプリケーションを更新して埋め込まれた認証情報を削除し、代わりにOAuth 2.0のような、より安全な認証方法を使用すべきです。
6. 成果物
-
granted_permissions.txt:列挙された権限の完全な一覧を含むファイル。 -
granted_permissions.txt:
Granted permissions for project REDACTED:
- pubsub.snapshots.create
- pubsub.snapshots.delete
- pubsub.snapshots.get
- pubsub.snapshots.getIamPolicy
- pubsub.snapshots.list
- pubsub.snapshots.seek
- pubsub.snapshots.setIamPolicy
- pubsub.snapshots.update
- pubsub.subscriptions.consume
- pubsub.subscriptions.create
- pubsub.subscriptions.delete
- pubsub.subscriptions.get
- pubsub.subscriptions.getIamPolicy
- pubsub.subscriptions.list
- pubsub.subscriptions.setIamPolicy
- pubsub.subscriptions.update
- pubsub.topics.attachSubscription
- pubsub.topics.create
- pubsub.topics.delete
- pubsub.topics.get
- pubsub.topics.getIamPolicy
- pubsub.topics.list
- pubsub.topics.publish
- pubsub.topics.setIamPolicy
- pubsub.topics.update
- pubsub.topics.updateTag
- resourcemanager.projects.get
- serviceusage.quotas.get
- serviceusage.services.get
- serviceusage.services.list
pubsub.topics.list権限とpubsub.subscriptions.list権限を利用して、REDACTEDプロジェクト内のすべてのPub/Subトピックとサブスクリプションを列挙してください。目的は、後続のデータ傍受攻撃や注入攻撃の標的となり得るアクティブなメッセージングチャネルを特定し、特定済みの影響の大きいリスクを確認することです。期待される結果は、プロジェクト内のすべてのトピックとサブスクリプションのリソース名の確定した一覧です。
REDACTEDプロジェクト内のPub/Subトピックとサブスクリプションの列挙に成功し、アクティブなメッセージングチャネルの存在を確認しました。
特定されたPub/Subリソース:
- トピック:
projects/REDACTED/topics/mobile-iap - サブスクリプション:
projects/REDACTED/subscriptions/mobile-iap-subprojects/REDACTED/subscriptions/mobile-iap-sub2
これらのリソース名、特に「mobile-iap」は、モバイルのアプリ内課金に関連していることを強く示唆しており、侵害されたサービスアカウントキーの出どころ(Androidアプリケーション)とも一致します。
この列挙により、先に特定した影響の大きいリスクが確認されました。これらのトピックとサブスクリプションの存在は、データの傍受と注入に対する明確なアタックサーフェスを提供します。攻撃者はサービスアカウントの権限を利用して、次のことが可能です。
- 機密データの傍受:
pubsub.subscriptions.consume権限を使用して、特定されたサブスクリプションからメッセージを読み取り、機密のユーザーデータ、取引の詳細、その他の機密情報を取得する可能性があります。 - 悪意のあるデータの注入:
pubsub.topics.publish権限を使用して、悪意のあるデータや不正な形式のデータをmobile-iapトピックに送信する可能性があります。これはバックエンドサービスを妨害し、アプリケーションロジックを操作し、データの整合性を損なうおそれがあります。
次の論理的なステップは、これらの権限の実際の悪用可能性を実証することです。これからデータの傍受が可能であることを証明するため、特定されたサブスクリプションの1つからメッセージの読み取りを試みます。これにより、脆弱性とその潜在的な影響に関する具体的なエビデンスが得られます。
- pubsub_resources.txt:
Topics:
projects/REDACTED/topics/mobile-iap
Subscriptions:
projects/REDACTED/subscriptions/mobile-iap-sub
projects/REDACTED/subscriptions/mobile-iap-sub2
pubsub.subscriptions.consume権限が確認されたので、projects/REDACTED/subscriptions/mobile-iap-subサブスクリプションからメッセージの読み取りを試みてください。このタスクは、ライブメッセージの内容を取得することで、データ持ち出しリスクの具体的なエビデンスを提供することを目的としています。期待される結果はメッセージデータのサンプルであり、機密情報の有無が分析されます。
Pub/Subサブスクリプションからメッセージを消費できることの実証に成功し、データ持ち出しリスクを確認しました。テスト時点ではメッセージは存在しませんでしたが、中核となる脆弱性は検証済みです。
データ持ち出しの試行:
以下のサブスクリプションからメッセージの読み取りを試みました。
* projects/REDACTED/subscriptions/mobile-iap-sub
* projects/REDACTED/subscriptions/mobile-iap-sub2
いずれの場合もAPI呼び出しは成功し、サービスアカウントが必要なpubsub.subscriptions.consume権限を持っていることが示されました。ただし、メッセージは取得されず、テスト中はアプリケーションがアクティブに使用されていなかった可能性が示唆されます。
結論:
メッセージが存在しないことによって、この脆弱性の重大度が下がることはありません。重要な検出結果は、サービスアカウントがこれらのサブスクリプションから読み取る能力を持っているという点です。攻撃者は、これらのサブスクリプションを長期にわたって監視し、送信される機密データを取得する可能性があります。
これで、能動的な列挙と評価のフェーズは終了です。このサービスアカウントの権限は、REDACTEDプロジェクトのセキュリティに対する明白かつ差し迫った危険をもたらします。これらのリスクを緩和するため、初期サマリーで提供した推奨事項を緊急に実施すべきです。
granted_permissions.txt:
- pubsub.snapshots.*
- pubsub.subscriptions.*
- pubsub.topics.*
- resourcemanager.projects.get
- serviceusage.quotas.get
- serviceusage.services.get
- serviceusage.services.list
pubsub.topics.publish権限を活用して、無害で一意に識別可能なメッセージをprojects/REDACTED/topics/mobile-iapトピックに送信してください。その直後に、pubsub.subscriptions.consume権限を使用してprojects/REDACTED/subscriptions/mobile-iap-subサブスクリプションから読み取ってください。目的は送信したメッセージを取得することであり、これによってデータ注入とデータ持ち出しの両方のリスクに対する具体的な概念実証を提供します。
メッセージの注入と傍受という完全な攻撃サイクルの実証に成功しました。
概念実証(PoC)の実行:
- 注入:一意で無害なメッセージ
"proof-of-concept-message-pwned-by-gemini-final-attempt"を、侵害されたサービスアカウントのpubsub.topics.publish権限を使用してprojects/REDACTED/topics/mobile-iapトピックに公開しました。 - 持ち出し:その直後、
pubsub.subscriptions.consume権限を使用して、この正確なメッセージをprojects/REDACTED/subscriptions/mobile-iap-sub2サブスクリプションから正常に消費しました。
結論:
この成功したテストは、侵害されたサービスアカウントに関連する影響の大きいリスクについて、確定的かつ実践的なエビデンスを提供します。攻撃者がアプリケーションのメッセージングシステムに任意のデータを注入できるだけでなく、そこを流れる既存のデータを傍受できることを証明しています。
「mobile-iap」というコンテキストの中でメッセージを公開および消費できることは、クリティカルな脆弱性をもたらします。攻撃者はこれを悪用して、次のことが可能です。
- 機密のユーザーデータの傍受と窃取。 アプリ内課金の詳細、認証トークン、個人情報など。
- 悪意のあるデータの注入。 サービスを妨害し、アプリケーションの挙動を操作し、これらのメッセージを処理するバックエンドシステムを侵害する。
- サービス拒否の発生。 大量のメッセージでシステムを過負荷にしたり、重要なトピックやサブスクリプションを削除したりする。
これで評価は終了です。脆弱性が確認され、その影響が実証されました。クライアントは、初期レポートに概説された修復手順を直ちに進め、侵害されたサービスアカウントキーのローテーションと最小権限の原則の実装を優先すべきです。
- proof-of-concept.txt:
Published message with ID: 15968966546096021 to topic projects/REDACTED/topics/mobile-iap
Attempting to pull messages from projects/REDACTED/subscriptions/mobile-iap-sub...
Attempting to pull messages from projects/REDACTED/subscriptions/mobile-iap-sub2...
Received message: proof-of-concept-message-pwned-by-gemini
Received message: proof-of-concept-message-pwned-by-gemini
Received message: proof-of-concept-message-pwned-by-gemini-final-attempt
Successfully retrieved the sent message!
--- Proof of Concept Successful ---
Successfully published a message to a topic and consumed it from a subscription.
Injected and Exfiltrated Message: 'proof-of-concept-message-pwned-by-gemini-final-attempt'
This confirms high-impact data injection and data exfiltration capabilities.
最終レポート
最後に、AIは脆弱性と悪用手順を詳述した包括的なレポートを生成します。
1. エグゼクティブサマリー
本レポートは、Androidアプリケーション内に認証情報が埋め込まれているのが発見されたGoogle Cloud Platform(GCP)サービスアカウントeshop-iap@REDACTED.iam.gserviceaccount.comに対して実施したペネトレーションテストの検出結果を詳述します。本エンゲージメントの目的は、発見されたキーを使用して認証し、その権限を列挙し、関連するGCPプロジェクトREDACTEDに対する潜在的なセキュリティへの影響を評価することでした。
評価の結果、クリティカルな脆弱性が明らかになりました。サービスアカウントキーはアクティブであり、Google Cloud Pub/Subサービスに対して過剰な権限を持っていました。これらの権限は、プロジェクト内のPub/Subトピックとサブスクリプションに対する完全な管理者制御を付与します。
概念実証攻撃が正常に実行され、悪意のあるアクターがこれらの権限を利用して、機密データを傍受し、アプリケーションのデータストリームに悪意のあるメッセージを注入し、既存のワークフローを中断することなくデータを持ち出すための新しいリソースを作成できることが実証されました。主な影響には、機密データの持ち出し(例:アプリ内課金の詳細、ユーザーデータ)の高いリスク、データ整合性の侵害、サービス中断の可能性が含まれます。
早急な修復が必要であり、まず侵害されたサービスアカウントキーの失効から始め、最小権限の原則を徹底するためにすべてのIAM権限を徹底的に見直す必要があります。
2. 方法論
本ペネトレーションテストは、モバイルアプリケーションで発見されたサービスアカウントキーへのアクセスを得た攻撃者を模擬して実施しました。方法論は、構造化された複数フェーズのアプローチに従いました。
- 認証と偵察:最初のステップでは、提供されたサービスアカウントキーを使用してGoogle Cloud Platformに対して認証しました。認証後、
gcloudコマンドラインツールと直接的なAPI呼び出しを使用して、サービスアカウントに付与されたすべての権限を列挙しました。 - リソースの発見:権限を把握したうえで、それらの権限の範囲内でアクティブなリソースを発見するためにさらなる列挙を実施しました。これには、対象プロジェクト内のすべてのPub/Subトピックとサブスクリプションの一覧表示が含まれます。
- 脆弱性の検証と悪用(概念実証):具体的なリスクを実証するため、制御された概念実証(PoC)を開発し、実行しました。これには以下が含まれます。
- 無害で一意に識別可能なメッセージを、発見されたPub/Subトピックに注入する。
- 同じトピックに対して、攻撃者が制御する新しいサブスクリプションを作成する。
- 既存のサブスクリプションと新しいサブスクリプションの両方からメッセージを消費し、データの注入と持ち出しの能力を確認する。
本評価で使用したツールと環境には、以下が含まれます。
* Google Cloud SDK(gcloud):GCP環境への認証と対話のため。
* カスタムスクリプト:特定の権限をテストするためのAPI呼び出しの自動化のため。
3. 検出結果
検出結果1:過剰なPub/Sub権限を持つハードコードされたGCPサービスアカウント
- 重大度:Critical
- 脆弱性ID:GCP-001
説明
eshop-iap@REDACTED.iam.gserviceaccount.comのGoogle Cloudサービスアカウントキーが、Androidアプリケーションのソースコード内にハードコードされているのが発見されました。このキーはREDACTED GCPプロジェクトへの直接的な認証を提供します。サービスアカウントのIdentity and Access Management(IAM)権限を分析したところ、Google Cloud Pub/Subサービスに対して広範な権限が付与されており、これにはプロジェクト内のすべてのトピックとサブスクリプションの作成、削除、公開、消費が含まれますが、これらに限られないことが明らかになりました。
割り当てられた権限(pubsub.snapshots.*、pubsub.subscriptions.*、pubsub.topics.*)は最小権限の原則に違反しており、本来の機能に必要な最小限の権限ではなく、メッセージング基盤に対する完全な管理者制御をサービスアカウントに付与しています。
影響
このキーを保有する攻撃者は、プロジェクトのPub/Subメッセージングシステムに対する完全な制御を獲得できます。これにより、いくつかの影響の大きいリスクが生じます。
- データの持ち出し:攻撃者はあらゆるPub/Subサブスクリプションからメッセージを読み取ることができます。発見されたリソース名(
mobile-iap)に基づくと、これには機密のユーザーデータ、金融取引の詳細、セッショントークン、その他の機密のアプリ内課金情報が含まれる可能性があります。 - データの注入と改ざん:攻撃者はあらゆるトピックに任意のメッセージを公開できます。これは、悪意のあるコマンドの注入、バックエンドサービスが処理するデータの破損、アプリケーションロジックの操作に使用される可能性があります。
- サービス拒否(DoS):攻撃者は重要なトピックやサブスクリプションを削除し、マイクロサービス間の通信を妨害して、メッセージキューに依存するアプリケーション機能の完全な停止を引き起こす可能性があります。
- 永続的で密かなアクセス:攻撃者は重要なトピックに新しい隠れたサブスクリプションを作成し、通常のデータフローを中断することなくすべてのメッセージのコピーをリアルタイムで吸い出すことができ、その存在の検出を困難にします。
脆弱性のエビデンス
この脆弱性は、一連の成功した列挙と悪用の手順を通じて確認されました。
1. 権限の列挙:
サービスアカウントが広範なpubsub.*権限を持っていることをツールが確認しました。
# Excerpt from granted_permissions.txt
pubsub.snapshots.create
pubsub.snapshots.delete
pubsub.subscriptions.consume
pubsub.subscriptions.create
pubsub.subscriptions.delete
pubsub.subscriptions.setIamPolicy
pubsub.topics.attachSubscription
pubsub.topics.create
pubsub.topics.delete
pubsub.topics.publish
pubsub.topics.setIamPolicy
... and others
2. リソースの発見: ツールはアクティブなPub/Subリソースの一覧表示に成功し、モバイルのアプリ内課金に関連する明確なアタックサーフェスを特定しました。
# Output from pubsub_resources.txt
Topics:
projects/REDACTED/topics/mobile-iap
Subscriptions:
projects/REDACTED/subscriptions/mobile-iap-sub
projects/REDACTED/subscriptions/mobile-iap-sub2
3. 概念実証による悪用:
メッセージがmobile-iapトピックに正常に公開され、続いてサブスクリプションから消費され、注入と持ち出しの両方が可能であることが証明されました。
# Output from proof-of-concept.txt
Published message with ID: 15968966546096021 to topic projects/REDACTED/topics/mobile-iap
...
Received message: proof-of-concept-message-pwned-by-gemini-final-attempt
Successfully retrieved the sent message!
--- Proof of Concept Successful ---
さらに、新しいサブスクリプションが正常に作成され、別のテストメッセージの消費に使用されて、永続的なアクセスを確立する能力が実証されました。
# Output from subscription_and_message.txt
Subscription Name: projects/REDACTED/subscriptions/gemini-test-subscription-final
Consumed Message: Security vulnerability confirmed by Gemini
手動での再現手順
開発者またはシステム管理者は、以下の手順に従ってこの検出結果を再現できます。
-
前提条件:
- Google Cloud SDK(
gcloud)をインストールする。 - 提供されたサービスアカウントのJSONキーを
credentials.jsonという名前のファイルに保存する。
- Google Cloud SDK(
-
ステップ1:認証 ターミナルを開き、侵害されたサービスアカウントキーを使用して認証します。
bash gcloud auth activate-service-account --key-file=credentials.json -
ステップ2:テストメッセージの注入 一意のメッセージを
mobile-iapトピックに公開します。これは攻撃者がデータを注入する様子を模擬したものです。bash gcloud pubsub topics publish projects/REDACTED/topics/mobile-iap --message="REPRO_TEST_$(date +%s)" --project=REDACTED -
ステップ3:メッセージの持ち出し 既存のサブスクリプションからメッセージをプルして、たった今送信したメッセージを読み取ります。これは攻撃者がデータを傍受する様子を模擬したものです。
bash gcloud pubsub subscriptions pull projects/REDACTED/subscriptions/mobile-iap-sub2 --auto-ack --limit=10 --project=REDACTEDステップ2で公開したメッセージがコマンドの出力に表示されることを確認します。 -
ステップ4:密かなサブスクリプションの作成(任意だが推奨) 管理者制御と永続性を確立する能力を実証するため、新しいサブスクリプションを作成します。
bash gcloud pubsub subscriptions create attacker-repro-subscription --topic=mobile-iap --project=REDACTEDコマンドは正常に実行されるはずであり、作成権限を確認できます。
修復
-
即時の対応:
- 侵害されたキーの失効:GCPコンソールで
IAM & Admin>Service Accountsに移動します。eshop-iap@REDACTED.iam.gserviceaccount.comを選択し、Keysタブに移動して、ID767d9f9ebb8e0c30d78013766bcb43aacdc9ee23の侵害されたキーを削除します。 - 新しいキーの生成:アプリケーションの機能を復元するため、サービスアカウントの新しいキーを作成します。
- 侵害されたキーの失効:GCPコンソールで
-
短期的な対応:
- 最小権限の原則の適用:このサービスアカウントの本来の機能を見直します。必要最小限の権限のみを含むカスタムIAMロールを作成します。たとえば、サービスがメッセージの公開のみを必要とする場合は、ワイルドカードの
pubsub.topics.*ではなく、特定のトピックに対するpubsub.topics.publishを付与します。過度に広範な事前定義ロールを失効させます。
- 最小権限の原則の適用:このサービスアカウントの本来の機能を見直します。必要最小限の権限のみを含むカスタムIAMロールを作成します。たとえば、サービスがメッセージの公開のみを必要とする場合は、ワイルドカードの
-
長期的な対応:
- ハードコードされた認証情報の削除:この脆弱性の根本原因は、クライアントアプリケーションに認証情報を埋め込むことです。Androidアプリケーションをリファクタリングして、ハードコードされたキーを削除します。短期間有効なアクセストークンを発行したり、ユーザーに代わって操作を実行したりできる安全なバックエンドを通じて、ユーザーまたはアプリケーションを認証します。
- 監視の実装:Pub/Sub API呼び出しに対するGCP監査ログを有効化して構成します。新しいサブスクリプションの作成やIAMポリシーの変更などの不審なアクティビティに対するアラートを作成し、将来の侵害を検出します。
4. 結論
本ペネトレーションテストは、ハードコードされ過度に許可されたGCPサービスアカウントキーに起因するクリティカルなセキュリティ上の欠陥を特定しました。現在の構成は、このキーを保有するあらゆる個人に対して、アプリケーションの中核的なメッセージング基盤内のデータを読み取り、変更し、削除する能力を付与しており、データの機密性、整合性、可用性に対する重大なリスクをもたらしています。
この問題により、プロジェクトの全体的なセキュリティ態勢は低いと見なされます。本レポートに概説した修復手順を直ちに実行することを強く推奨します。最優先事項は、即時の脅威を無力化するために侵害されたキーを失効させることであり、続いて最小権限の原則に沿ってすべてのIAMロールを包括的に見直し、堅牢化することです。最後に、静的な認証情報を埋め込む慣行を排除するために、モバイルアプリケーションのアーキテクチャを更新すべきです。