# 脅威モデル: SaaS マルチテナント帳票ジェネレータ 本ドキュメントは、SaaS マルチテナント帳票(ドキュメント)ジェネレータの PDF エンジンとして fulgur を導入する際の脅威モデルを記述します。主要ユースケースは: **エンドユーザーが WYSIWYG エディタで HTML テンプレートを設計し、ドキュメント ごとに JSON データを供給し、サーバーがバッチで PDF をレンダリングする**ものです。 本分析は HTML サニタイザ (fulgur-me2) と MiniJinja サンドボックス (fulgur-q1z) の設計を駆動します。 English version: [threat-model.md](threat-model.md) ## アーキテクチャ概要 ```text エンドユーザー (ブラウザ) │ ├─ WYSIWYG エディタ ──► HTML テンプレート ──┐ │ ▼ └─ フォーム / API ──► JSON データ ──► fulgur Engine ──► PDF ▲ SaaS 運用者 (フォント, CSS, 画像) ``` エンジンには 3 つの入力チャネルがあります: | チャネル | 制御者 | 信頼レベル | |---|---|---| | HTML テンプレート | エンドユーザー (WYSIWYG 経由) | **信頼できない** | | JSON データ | エンドユーザー (API / フォーム経由) | **信頼できない** | | アセットバンドル (フォント, CSS, 画像) | SaaS 運用者 | 信頼できる | ## 脅威アクター ### A1 — 悪意あるテンプレート作者 WYSIWYG エディタ(または API インターセプト)を通じて HTML テンプレートを 細工・改変するエンドユーザー。目的: - レンダリングパイプラインでの JavaScript 実行 - 外部リソース参照 (SSRF) - アセットサンドボックスからの脱出によるサーバーファイル読み取り (パストラバーサル) - 他テナントのデータ漏洩 - サービス拒否 (DoS) ### A2 — 悪意ある JSON データ提供者 細工した JSON ペイロードを送信するエンドユーザー。目的: - テンプレート変数展開を通じた HTML/JS インジェクション - テンプレートエンジンでの過剰なループ反復・深い再帰の誘発 - 非常に大きな値によるメモリ枯渇 ### A3 — 侵害された SaaS 運用者 運用者(または運用者アセットを侵害したサプライチェーン攻撃者)。 共有アセットバンドルに悪意ある CSS やフォントを注入する。 運用者アセットは設計上信頼されるため、このアクターは**優先度が低い**です。 防御はアクセス防止ではなく、影響範囲の限定に焦点を当てます。 ## 脆弱性カテゴリと緩和策 ### V1 — スクリプトインジェクション (XSS 相当) **脅威:** テンプレートに `