Shikata Ga Nai

Private? There is no such things.

第85回:バージョン差異と脆弱性の再現性の考え方

Hello there, ('ω')ノ

✅ アプリのバージョンが変わると何が変わる?

変更箇所
コードのロジック 認証処理の変更、バリデーションの強化・弱体化
使用ライブラリ 新しいSDKの導入、古いライブラリの置き換え
設定ファイル AndroidManifest.xml のパーミッション変更
UI/UXの導線 設定画面の場所が変わり、特定の操作がしづらくなる
ビルド構成 debug/releaseの設定、Proguard(難読化)の有無

👉 つまり、「前に診断した結果が、最新版にもそのまま当てはまるとは限らない」ということです。


✅ よくあるバージョン関連の“再現性トラブル”

状況 原因
テストでは再現できたが、本番ではできない テスト端末のアプリが旧バージョンだった
昔の脆弱性報告に対し「再現しない」と開発者に言われる 診断時と異なる最新版を参照していた
修正されたはずの脆弱性が再発していた 別のブランチや古いビルドから派生したコードで復活していた

✅ 再現性を保つために必要なチェックポイント

📦 1. APKのバージョン情報を記録する

# ADBを使った確認例
adb shell dumpsys package com.example.app | grep version
  • versionName / versionCode を必ず記録
  • 診断報告書にも明記しておく(例:「診断対象:v1.4.2(code: 142)」)

📑 2. 診断時のAPKハッシュ値を残す

sha256sum app-release.apk
  • APKの内容が変更されていないことを保証するため
  • 開発チームと同一ファイルを見ていることを確認できる

🧾 3. 変更履歴(changelog)を開発側から取得する

  • 何が変わったのか(コード?SDK?設定?)
  • 脆弱性関連の変更が含まれているか

👉 小さな修正に見えて、セキュリティ上は大きな影響があることも!


✅ 診断観点:過去バージョンも含めたアプローチ

観点 内容
リリース済みの旧バージョンの診断 まだインストール中のユーザーがいる可能性
バージョン別に脆弱性が変わる場合 修正済と思ったら、旧バージョンだけ修正漏れという例も
継続診断時に差分チェック CI/CDで自動検出できる仕組みが望ましい

✅ MobSFなどを使ったバージョン差異の可視化(応用編)

  • MobSFでは、APK単位で脆弱性スコアを比較可能
  • 過去バージョンと新バージョンの診断結果差分をレポートで出すこともできる
  • バージョンごとに 危険度の上下をグラフ化 → レビューに活用可能

Best regards, (^^ゞ