Hello there, ('ω')ノ
✅ 調査報告書の目的は「修正を促し、再発を防ぐこと」
報告書は「問題点をただ記録するもの」ではありません。 むしろ、関係者が正しく理解し、迅速に対応できることが重要です。
そのために必要な3つの視点:
- 誰が読むかを意識する(読者設計)
- 再現可能な形で記録する(技術的詳細)
- 対応が進むように整理する(優先度や対応期限)
✅ 報告書に含めるべき基本構成(テンプレート)
| セクション | 内容 |
|---|---|
| 概要(Executive Summary) | 診断の目的、対象、範囲、全体の所感(非技術者向け) |
| 対象アプリ情報 | アプリ名、バージョン、診断日時、APKハッシュなど |
| 診断手法 | 使用ツール(MobSF, Burp, Fridaなど)、環境構成 |
| 調査結果一覧 | 脆弱性の分類・内容・危険度・対象箇所・対応状況 |
| 各項目の詳細 | 再現手順、影響範囲、スクリーンショット付きで記録 |
| 推奨対策 | 修正案や公式ドキュメント、Lintルールの提案など |
| 付録 | 用語説明、ツールバージョン、参考リンクなど |
✅ 実践例:1つの脆弱性レポートの構成(例)
■ 脆弱性名
WebViewでの任意URL読み込みにより任意の外部サイトに遷移可能
■ 危険度
中(ユーザー誘導によるフィッシングリスクあり)
■ 対象箇所
MainActivity.java の loadUrl() メソッドにバリデーションなし
■ 再現手順
- アプリを起動
- 任意のアクションで
webview.loadUrl()が呼ばれる - インテントから
http://evil.example.comを指定して遷移可能
※ Fridaでインテントを書き換え、任意URLに遷移することを確認済
■ スクリーンショット
(画面遷移の証拠)
■ 推奨対策
- IntentからのURL入力には、許可されたドメインのみ許容するホワイトリスト方式の実装を推奨
- 参考実装リンク:Google Secure WebView Guide
✅ 報告書作成時のポイント
📌 ポイント1:読者ごとに伝え方を変える
| 読者 | 注目ポイント | 書き方のコツ |
|---|---|---|
| 開発者 | 再現方法と修正方法 | 技術的詳細とコード例を明確に |
| PM/マネージャー | 影響範囲と優先度 | 危険度・対応期限・担当者を明記 |
| 情報システム部 | 他システムとの関連 | 全体構成図やAPIの関係を補足 |
📌 ポイント2:再現性と証拠を残す
- 使用したツールのバージョン
- 端末機種、OSバージョン
- APKファイルのハッシュ
- スクリーンショットやログ出力
- Fridaスクリプトなども添付するとベター
📌 ポイント3:進捗管理できる構成にする
- ExcelやGoogleスプレッドシートで「対応状況一覧表」を併せて提出
- 対応状況:未対応/対応中/修正済/確認済 のステータス分け
- 優先度や期限も明記(例:高/中/低、1週間以内 など)
✅ 活用ツール例(テンプレート作成・共有)
| ツール | 用途 |
|---|---|
| Google Docs / Word | 報告書の本文作成 |
| Google Sheets / Excel | 対応ステータス一覧 |
| Notion / Confluence | 脆弱性ナレッジの共有 |
| Redmine / Backlog | 修正チケットの管理連携 |
✅ まとめ
- セキュリティ報告書は「開発を動かす文書」。読みやすさ・実用性が命
- 誰が読むのかを意識して、再現性と対策情報を明確に記載
- チームで改善を続けるための「ナレッジ」として残す
- スプレッドシートなどと併用して、進捗管理・報告の定型化が有効
Best regards, (^^ゞ