0Pricing
Ethical Hacking Academy · レッスン

安全でないストレージと通信

よくある欠陥

「安全でないストレージと通信」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。

2つの典型的な脆弱性

モバイルで最も一般的な脆弱性のうち、特に代表的なものが安全でないデータストレージと安全でない通信です。これらはOWASP Mobile Top 10にも含まれています。

どちらも、開発者がデバイスを過度に信頼し、データを適切に保護していないことに起因します。

アプリがデータを保存する場所

アプリは/data/data/<package>/にデータを保存します。

  • SharedPreferences:XML形式のキーと値のファイル
  • SQLiteデータベース
  • 内部ファイルと外部ファイル

ペネトレーションテスターは、それぞれを調べて平文で保存されたシークレットがないか確認します。

/data/data/com.app/shared_prefs/prefs.xml

平文のシークレット

よくある問題は、SharedPreferencesやデータベースにパスワード、トークン、PIIを平文で保存することです。

root化されたデバイス、バックアップ経由、またはObjectionを使うことで、攻撃者はこれらを直接読み取れます。機密データは暗号化するか、安全なハードウェアに保持する必要があります。

<string name="auth_token">eyJhbGci...plaintext...</string>

外部ストレージのリスク

外部ストレージ(SDカード領域)に書き込まれたデータは、古いAndroidでは全ユーザーから読み取り可能であり、ストレージ権限を持つすべてのアプリからアクセスできます。

機密ファイルをそこに保存すると、他のアプリにさらされます。ディスクに書き込まれるログも、同様の情報漏えいにつながります。

シークレットを安全に保存する方法

安全な選択肢には、Android Keystore(鍵をハードウェアに保存し、アプリに公開しない)やEncryptedSharedPreferencesがあります。

Keystoreでは、鍵を明らかにせずに暗号処理を実行できます。コード内にハードコードした鍵よりもはるかに安全です。

安全でない通信

安全でない通信とは、適切に保護されていない状態でデータが送信されることです。最悪のケースは平文HTTPで、ネットワーク上の誰もが通信を読み取ったり変更したりできます。

すべての機密通信にはHTTPS/TLSを使用する必要があります。

http://api.app.com/login   # cleartext, credentials exposed

通信の傍受

通信を調査するには、デバイスをBurp Suiteなどのインターセプトプロキシ経由で接続します。HTTPSを読み取れるように、デバイスにBurpのCA証明書をインストールします。

これにより、APIエンドポイント、パラメーター、通信中の機密データが明らかになります。

証明書ピンニング

適切に構築されたアプリは証明書ピンニングを使用し、正規の証明書以外を拒否することで、単純なプロキシを無効化します。

学習したように、FridaによるSSLピンニング回避を使うとこれを無効化でき、実際のAPIセキュリティを引き続き傍受・評価できます。

脆弱なTLSと検証

HTTPSを使用していても、すべての証明書を信頼する、期限切れの証明書を受け入れる、ホスト名検証を無効にするといった問題があります。これらは開発を容易にするために実装されることがよくあります。

その結果、TLSが使用されていても、攻撃者は中間者攻撃を実行できます。

バックアップとログ

さらに2つの情報漏えいがあります。

  • android:allowBackup="true"にすると、デバイスにアクセスできる誰もがadb backup経由でアプリデータを抽出できます。
  • 詳細なlogcat出力にトークンやPIIが表示されることがあります。

本番環境では、どちらも無効化するか、情報をサニタイズする必要があります。

adb backup -f data.ab com.app

クリップボードとスクリーンショット

見落とされがちな情報漏えいが2つあります。機密データをクリップボードにコピーすること(古いAndroidでは他のアプリから読み取り可能)と、アプリがバックグラウンドに移行した際にシステムがスクリーンショットを撮影することです。

バンキングアプリは、スクリーンショットとタスク切り替え画面のプレビューをブロックするFLAG_SECUREウィンドウフラグで、これらを軽減しています。

クイックチェック

Androidで暗号鍵を保管する最も安全な場所を思い出してください。

まとめ

これで、安全でないストレージと通信について理解できました。

  • アプリはSharedPreferences、データベース、外部ストレージ、ログに平文のシークレットを残し、情報を漏えいさせます。
  • シークレットはAndroid KeystoreまたはEncryptedSharedPreferencesに保存します。
  • 安全でない通信には、平文HTTPからTLS検証の不備までが含まれます。Burpで傍受してください。
  • Fridaで証明書ピンニングを回避し、allowBackupを無効化してログをサニタイズします。

Mobile App Pentestingコースを修了しました。

よくある質問

「安全でないストレージと通信」レッスンは無料ですか?

はい。「安全でないストレージと通信」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。

「安全でないストレージと通信」で何を学びますか?

よくある欠陥 ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ethical Hacking Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「安全でないストレージと通信」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このEthical Hacking Academyレッスンでコードを書いて実行できますか?

はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Androidアプリの構造
  2. APKの静的解析
  3. Fridaによる動的解析
  4. 安全でないストレージと通信
← Ethical Hacking Academyに戻る