Skip to content

harden(tauri): desktop/mobile の WebView に CSP 未設定(security.csp: null) #409

Open

Description

@mashfromband

概要(Tauri ハードニング / desktop + mobile 両方)

両 Tauri アプリの WebView に Content-Security-Policy が未設定(csp: null)。秘密(refresh/Connect token、平文パスワード)を扱うクライアントとして、万一バンドル済みフロントに XSS 相当の注入経路(サプライチェーン汚染された依存、反射値等)が生じた場合、CSP による外部送信(exfiltration)先の制限が一切効かない。防御多重化(defense-in-depth)の欠落。

根拠(ファイル:行)

  • apps/mobile/src-tauri/tauri.conf.json:21-23
    "security": { "csp": null }
  • apps/desktop/src-tauri/tauri.conf.json:22
    "csp": null

両アプリとも connect-src 等の制限がないため、注入されたスクリプトは任意オリジンへ fetch 可能。Tauri 公式のセキュリティガイダンスでも本番では制限的 CSP の設定を推奨。

影響 / 失敗シナリオ

推奨

  • frontendDist のローカル資産 + backend API に限定した制限的 CSP を設定:
    • default-src 'self'; connect-src 'self' <backend origin(s)>; img-src 'self' data:; style-src 'self' 'unsafe-inline'(必要最小); script-src 'self' 等。
    • 環境ごと(dev/stg/prd)の backend オリジン差分は Tauri の CSP テンプレート/ビルド時注入で吸収。
  • インライン script/style を洗い出し、CSP に適合するようビルドを調整(Vite の inline 化設定確認)。
  • desktop / mobile 双方に適用しパリティを取る。

重大度

Low〜Medium(能動的な穴ではなく防御多重化の欠落。ただし secrets を扱うアプリで CSP 完全不在は明確に是正対象)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions