🔐 全国防災ナビ|セキュリティー監査・評価資料

第三者のセキュリティー技術者向け/2026年11月11日現在の開発版に基づく自己申告

← アプリへ戻る

監査状況と利用上の注意

第三者によるセキュリティー監査・ペネトレーションテストは未実施です。この資料は安全性の認証・保証ではありません。ソースと配信設定に基づく設計情報であり、実際のレスポンスヘッダー、通信、端末での挙動は要検証です。

本資料は develop ブランチの変更を対象とします。公開中の本番版と内容が異なる場合があります。許可のない侵入試験、負荷試験、第三者データの取得は行わないでください。

1. 対象・構成・信頼境界

要素実装・確認事項
配信Netlify 上の HTML・JavaScript・CSS と、AI・標高などに使うサーバー関数。HTTPS の本番配信は公開前に確認します。
アプリインストール可能な PWA。Service Worker sw.js がアプリシェルをキャッシュ。
保存安否・危険メモ・帰宅計画・画面設定などは localStorage、地域地図・GPX 経路は IndexedDB。ブラウザ内保存であり暗号化なし。
外部サービスGoogle マップ等の外部地図・公的情報へのリンク、国土地理院の地名検索、地図関連配信元。実際の通信先・パラメーターはブラウザのネットワークログで棚卸しすること。
権限GPS は利用者操作で取得。共有は端末の共有機能またはクリップボード。外部への自動救助通報や記録同期は行わない設計。
認証一般利用者のアカウントは設けていません。防災ナビAIは設定により、共用または本人用の接続コードで利用できます。端末を共用する際は保存した情報に注意してください。

利用者ごとの独立利用・情報共有について

同じ防災ナビのURLを複数人が利用しても、基本的に各利用者がそれぞれ独立して使えます。 AI会話履歴・AIの振る舞い設定・家族の安否記録・徒歩帰宅班の記録などは、利用している端末のブラウザー内に保存されます。ほかの利用者の端末へ自動的に共有・同期される仕組みはありません。

利用者のアカウントやクラウド同期機能は設けていません。したがって、同じURLを別のスマホやブラウザーで開いても、通常は以前の記録は引き継がれません。ブラウザーのデータ削除や端末の故障・交換で記録を失う可能性があります。

注意:同じ端末・同じブラウザープロファイルを複数人で使用すると、そのブラウザーに保存された記録が見える場合があります。ブラウザー内の保存データは暗号化されていません。端末のロックを利用し、共用端末では個人情報の入力を避けてください。

AI会話や安否情報などは、利用者が共有・コピー操作を行った場合に限り、選択した外部アプリなどへ渡せます。共有操作をしなくても、AIへの質問内容は回答生成のためサーバーおよび外部AIサービスへ送信されます。「他の利用者と共有されない」ことと「外部に一切送信されない」ことは異なります。

家族・職場のメンバー間で安否情報をリアルタイム同期する機能は、現時点ではありません。複数端末でのデータ分離は設計とコード上の確認であり、第三者によるセキュリティー監査で保証されたものではありません。

AI検索の送信先と会話履歴

個人情報や機密情報は入力・添付しないでください。 氏名、住所、連絡先、会社の内部資料などが、写真やPDFにも入っていないか送信前に確認してください。

防災ナビAIは Cloudflare Workers AI を通じて、中国のAlibabaが開発した Qwen 3.8 27B を利用します。文字と画像を扱える無料枠があり、CloudflareはWorkers AIで処理した顧客コンテンツをモデルの学習に使わないと説明しています。処理が行われる国・地域は当アプリで確認できていません。

GoogleのGemini API無料枠は、個人情報・機密情報等を送信しないよう規約に定め、送信内容を製品の改善等に利用すると説明しています。写真や資料を扱う標準機能には、Cloudflareを選びました。AI設定で利用者が別のAIサービスを開く場合は、そのサービスの利用条件が適用されます。

検索時に質問、選んだ画像またはファイルから読み取った内容を送ります。続けて質問すると、直近のやり取りを送ります。添付内容は最初の回答を得た後に破棄し、次の質問へ自動で再送信しない設計です。PDFはブラウザーで読み取り、送る範囲を画面に表示します。

チャットの「ウェブ ON」で、検索に必要な現在の質問を外部検索サービスへ送ります。会話履歴、添付、GPS座標はウェブ検索には渡しません。現在地は明示的にONにしたときに取得し、周辺の地図検索に使います。AIには施設候補と直線距離を渡します。

帰宅中の相談では、現在地をONにしている場合、丸めた座標を国土地理院の地名検索に送ります。ウェブや公開SNSの検索には、得られた地名と「通行止め」などの検索語を使います。おすすめの使い方相談では、端末のルート・地図の保存状況を端末内で確認します。

会話の質問と回答は、使っているブラウザー内に暗号化せず保存します。履歴はAIのタブから削除できます。元の添付ファイルと読み取りデータは履歴に保存しません。回答に引用された内容は履歴に残ります。

Cloudflareのデータ取り扱い / Gemini APIの利用規約 / 利用モデルの詳細

2. 現在の防御策と制約

項目現状監査ポイント
セキュリティーヘッダー_headers に X-Content-Type-Options、X-Frame-Options、Referrer-Policy、Permissions-Policy、COOP、HSTS を記載本番の HTTP レスポンスに反映されているか確認
CSPframe-ancestors、base-uri、object-src、form-action 等の部分的制限のみscript-src を強制できていない。インラインスクリプトとイベント属性の移行が必要
入力表示主な動的 UI は textContent / DOM API を利用。現地記録の一部は HTML 文字列にエスケープして挿入DOM XSS、属性エスケープ、外部データ・保存データの汚染を検査
個人情報ローカル保存。共有は明示操作。安否記録の共有時は確認ダイアログあり保存データは暗号化されない。端末紛失・共用端末・XSS を評価
Service Worker同一オリジンのアプリシェルをキャッシュ。版番号を更新して切替古い画面の残留、キャッシュ更新失敗、オフライン時の信頼性、キャッシュ改ざん・配信侵害時の影響
地名検索外部 API から候補を取得し、利用者が推定地点を選択API の可用性・CORS・入力の漏えい・レスポンス検証・誤認位置の表示
依存関係地図データ生成用に Node.js パッケージを使用。ブラウザ側は外部地図関連の依存・配信を確認要SBOM、依存バージョン、ライセンス、脆弱性スキャン、サプライチェーン

3. 優先リスク(監査前の暫定評価)

  1. 高優先:スクリプト実行制限が不十分な状態で、個人情報を localStorage に保持する。XSS 発生時の情報漏えい影響が大きい。
  2. 高優先:公開前に CSP 強化と入力経路の DOM XSS 検査が必要。
  3. 中優先:共有操作で氏名・居場所・連絡内容を外部アプリへ渡す際のプレビューと誤送信対策。
  4. 中優先:地図・施設データの鮮度、更新失敗時の表示、推定地点と確認済み地点の区別。
  5. 中優先:Service Worker の更新・オフライン復帰・ブラウザデータ削除時の動作。

上記は確定した脆弱性の診断結果ではなく、実装状況から抽出した検証対象です。CVSS スコアや「安全」判定は付与していません。

4. 第三者監査チェックリスト

5. 公開可否の判定記録

専門家は次の観点で「合格/条件付き/不合格/未確認」を記録してください。現在の判定はすべて未確認です。

判定項目現時点
不正スクリプト実行対策未確認
個人情報保護と共有制御未確認
外部 API・外部送信未確認
更新・オフライン・データ整合性未確認
依存関係・配信基盤未確認
総合公開可否未判定

監査者名・所属、対象コミット SHA、対象 URL、実施日、試験環境、発見事項、再現手順、重大度、修正コミット、再検証結果を別途記録してください。公開判定は監査実施者と運用責任者が行うものです。

6. 参照ファイルと検証手順

主要ファイル:index.html(画面・帰宅計画)、field-guide.js(現地記録)、share.js(共有)、offline.js(オフライン地図)、handbook.js(手帳)、sw.js(キャッシュ)、_headers(ヘッダー)、tools/build-regions.mjs(地図データ生成)。

推奨:対象ブランチとコミットを固定 → ソースレビュー → テスト環境で動的診断 → Android の PWA とブラウザで動作検証 → 発見事項を修正 → 再診断 → 公開判定。検証対象には実在の家族情報を使わず、テストデータを使用してください。

アプリへ戻る