Hello there, ('ω')ノ
✅ そもそもセキュリティレビューとは?
Google PlayやAmazon Appstoreなどのストアでは、アプリの公開前に以下のようなチェックが行われます:
| 項目 | 内容 |
|---|---|
| マルウェアチェック | 不正コード(トロイの木馬やスパイウェア)が含まれていないか? |
| 動作の安全性 | 不正な通信やバッテリー異常消費がないか? |
| パーミッションの妥当性 | アプリの機能に対して過剰な権限要求をしていないか? |
| プライバシー対応 | ユーザーデータの扱いがポリシーに準拠しているか? |
| ポリシー準拠 | 賭博、性的表現、危険行為の助長などを含まないか? |
✅ Google Play独自のセキュリティ審査:Play Protect
Google Playには「Google Play Protect」というマルウェアスキャン機構があります。 これはストアでの審査だけでなく、ユーザーの端末上でも動作し続けてアプリを監視する仕組みです。
✔ 主な検査項目
- アプリに疑わしいコードや暗号化されたペイロードが含まれていないか?
- 難読化されすぎていて意味不明なアプリ構造はないか?
- 不審なリモート通信や広告挿入をしていないか?
ACCESS_FINE_LOCATIONなどのセンシティブな権限を不自然に要求していないか?
📌 開発者にとって重要な対策
① 権限は“必要最小限”に
過剰なパーミッション(例:連絡先、SMS、カメラ)はリジェクトの原因になります。 使っていない権限は manifestから削除 しましょう。
② プライバシーポリシーは必須
READ_PHONE_STATEやACCESS_COARSE_LOCATIONなどを使う場合- Google Play Console にプライバシーポリシーのURL登録が求められます
③ 暗号化通信を使用する(HTTPS)
- HTTP通信はNG(Android 9以降でブロックされる)
- SSLピンニングまでは求められないが、平文通信はセキュリティチェックで警告対象になります
④ 不正コードの混入に注意
- 外部の広告SDKや解析ツールに怪しい動作が含まれているケースも
- 公開前に
MobSFやGoogle Play Pre-launch Reportで静的解析しておくのが安心
🧪 実際にあったリジェクト事例(例)
| 内容 | 理由 |
|---|---|
| カメラとマイクを使うアプリ → ポリシー違反 | プライバシーポリシーのURLが登録されていなかった |
| 位置情報を常時取得する設計 → 拒否 | ユーザーに明確な説明が不足。バックグラウンド取得の理由が弱い |
| 動作しないActivityが存在 | テスト用コードを消し忘れ。リリースビルドでクラッシュの原因に |
| rootチェックを無効化するコードを含む | 動的解析で検出され、意図的なバイパスと誤解された |
✅ 診断者の視点で見る「ストア公開前チェックリスト」
- [ ] 権限は最小限か?(使っていない権限を除外)
- [ ] プライバシーポリシーが登録されているか?
- [ ] ユーザーから取得するデータに対して説明文があるか?
- [ ] サードパーティSDKは最新か?脆弱性がないか?
- [ ] 通信はすべてHTTPS化されているか?
- [ ] 不要なログ・デバッグコードを含んでいないか?
- [ ] 難読化や署名などでコード保護がされているか?
✅ まとめ
- アプリストアのセキュリティレビューは年々厳格になっており、“形式だけ”の対応では通用しない
- Google Playでは、コード・通信・パーミッション・プライバシー対策のすべてが対象になる
- 診断者は、開発者がストア審査を通過できるように**「安全性」と「ポリシー遵守」の両方をチェック**する支援が求められる
Best regards, (^^ゞ