Shikata Ga Nai

Private? There is no such things.

第66回:アプリストアのセキュリティレビューとは?

Hello there, ('ω')ノ

✅ そもそもセキュリティレビューとは?

Google PlayやAmazon Appstoreなどのストアでは、アプリの公開前に以下のようなチェックが行われます:

項目 内容
マルウェアチェック 不正コード(トロイの木馬やスパイウェア)が含まれていないか?
動作の安全性 不正な通信やバッテリー異常消費がないか?
パーミッションの妥当性 アプリの機能に対して過剰な権限要求をしていないか?
プライバシー対応 ユーザーデータの扱いがポリシーに準拠しているか?
ポリシー準拠 賭博、性的表現、危険行為の助長などを含まないか?

✅ Google Play独自のセキュリティ審査:Play Protect

Google Playには「Google Play Protect」というマルウェアスキャン機構があります。 これはストアでの審査だけでなく、ユーザーの端末上でも動作し続けてアプリを監視する仕組みです。

✔ 主な検査項目

  • アプリに疑わしいコードや暗号化されたペイロードが含まれていないか?
  • 難読化されすぎていて意味不明なアプリ構造はないか?
  • 不審なリモート通信や広告挿入をしていないか?
  • ACCESS_FINE_LOCATION などのセンシティブな権限を不自然に要求していないか?

📌 開発者にとって重要な対策

① 権限は“必要最小限”に

過剰なパーミッション(例:連絡先、SMS、カメラ)はリジェクトの原因になります。 使っていない権限は manifestから削除 しましょう。


② プライバシーポリシーは必須

  • READ_PHONE_STATEACCESS_COARSE_LOCATION などを使う場合
  • Google Play Console にプライバシーポリシーのURL登録が求められます

③ 暗号化通信を使用する(HTTPS)

  • HTTP通信はNG(Android 9以降でブロックされる)
  • SSLピンニングまでは求められないが、平文通信はセキュリティチェックで警告対象になります

④ 不正コードの混入に注意

  • 外部の広告SDKや解析ツールに怪しい動作が含まれているケース
  • 公開前に MobSFGoogle Play Pre-launch Report で静的解析しておくのが安心

🧪 実際にあったリジェクト事例(例)

内容 理由
カメラとマイクを使うアプリ → ポリシー違反 プライバシーポリシーのURLが登録されていなかった
位置情報を常時取得する設計 → 拒否 ユーザーに明確な説明が不足。バックグラウンド取得の理由が弱い
動作しないActivityが存在 テスト用コードを消し忘れ。リリースビルドでクラッシュの原因に
rootチェックを無効化するコードを含む 動的解析で検出され、意図的なバイパスと誤解された

✅ 診断者の視点で見る「ストア公開前チェックリスト」

  • [ ] 権限は最小限か?(使っていない権限を除外)
  • [ ] プライバシーポリシーが登録されているか?
  • [ ] ユーザーから取得するデータに対して説明文があるか?
  • [ ] サードパーティSDKは最新か?脆弱性がないか?
  • [ ] 通信はすべてHTTPS化されているか?
  • [ ] 不要なログ・デバッグコードを含んでいないか?
  • [ ] 難読化や署名などでコード保護がされているか?

✅ まとめ

  • アプリストアのセキュリティレビューは年々厳格になっており、“形式だけ”の対応では通用しない
  • Google Playでは、コード・通信・パーミッション・プライバシー対策のすべてが対象になる
  • 診断者は、開発者がストア審査を通過できるように**「安全性」と「ポリシー遵守」の両方をチェック**する支援が求められる

Best regards, (^^ゞ