---
generated_at: 2026-01-30 12:30:00
metrics:
  claims_total: 42
  claims_with_evidence: 40
  claims_without_evidence: 2
confidence_derived: 0.95
---

# 根拠レポート：セキュリティ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：40 / 42、根拠なし：2
- 優先レビュー（高）
  1. **HSTS設定**: 明示的な実装なしの確認
  2. **CSP設定**: 明示的な実装なしの確認

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/sync-server/src/accounts/password.js` - パスワード認証実装
- E-02: `packages/sync-server/src/accounts/openid.js` - OpenID認証実装
- E-03: `packages/sync-server/src/util/validate-user.ts` - セッション検証・HTTPヘッダー認証
- E-04: `packages/sync-server/src/util/middlewares.js` - 認証ミドルウェア・ログ記録
- E-05: `packages/sync-server/src/services/user-service.js` - ユーザーサービス・ロール定義
- E-06: `packages/sync-server/src/account-db.js` - アカウントDB操作・権限チェック
- E-07: `packages/sync-server/src/app-admin.js` - 管理者APIエンドポイント
- E-08: `packages/sync-server/src/app-sync/validation.js` - ファイル同期バリデーション
- E-09: `packages/sync-server/src/app-cors-proxy.js` - CORSプロキシ実装
- E-10: `packages/sync-server/src/app.ts` - メインアプリケーション設定
- E-11: `packages/sync-server/src/load-config.js` - 設定ローダー
- E-12: `packages/desktop-electron/security.ts` - Electronセキュリティ設定
- E-13: `packages/sync-server/package.json` - 依存ライブラリ定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | パスワード認証でbcrypt v6.0.0、ソルトラウンド12を使用 | E-01, E-13 | ○ |
| C-02 | OpenID認証でPKCEフローを使用 | E-02 | ○ |
| C-03 | OpenIDのstate有効期限は5分 | E-02 | ○ |
| C-04 | HTTPヘッダー認証でx-actual-passwordヘッダーを使用 | E-03 | ○ |
| C-05 | セッショントークンはUUID v4で生成 | E-01 | ○ |
| C-06 | セッションはSQLiteのsessionsテーブルに保存 | E-06 | ○ |
| C-07 | トークン有効期限はnever/openid-provider/分数で設定可能 | E-11 | ○ |
| C-08 | 期限切れセッションは1時間後に自動削除 | E-03 | ○ |
| C-09 | ロールはADMINとBASICの2種類 | E-05 | ○ |
| C-10 | 初回登録ユーザーにowner=1が設定される | E-05 | ○ |
| C-11 | ユーザー作成・削除はADMINのみ可能 | E-07 | ○ |
| C-12 | ファイルアクセス権はuser_accessテーブルで管理 | E-06 | ○ |
| C-13 | HTTPSは証明書・秘密鍵設定で有効化可能 | E-10, E-11 | ○ |
| C-14 | X-Powered-Byヘッダーは削除済み | E-10 | ○ |
| C-15 | Cross-Origin-Opener-Policy: same-origin | E-10 | ○ |
| C-16 | Cross-Origin-Embedder-Policy: require-corp | E-10 | ○ |
| C-17 | HSTSの明示的な実装なし | E-10 | △ |
| C-18 | CSPの明示的な実装なし | E-10 | △ |
| C-19 | パスワードはbcryptでハッシュ化して保存 | E-01 | ○ |
| C-20 | ファイルはクライアント側でエンドツーエンド暗号化 | E-08 | ○ |
| C-21 | 暗号化メタデータはfilesテーブルに保存 | E-08 | ○ |
| C-22 | Electronでwebviewは完全無効化 | E-12 | ○ |
| C-23 | ElectronでnodeIntegration: false | E-12 | ○ |
| C-24 | ElectronでwebSecurity: true | E-12 | ○ |
| C-25 | SQLインジェクション対策でパラメータ化クエリを使用 | E-06 | ○ |
| C-26 | CSRF対策でトークンベース認証を使用 | E-03, E-04 | ○ |
| C-27 | CORSプロキシでプライベートIPをブロック | E-09 | ○ |
| C-28 | CORSプロキシでGET/HEADのみ許可 | E-09 | ○ |
| C-29 | ファイル同期時にバージョン・暗号化キー一貫性チェック | E-08 | ○ |
| C-30 | OpenIDリダイレクトURLのホスト名検証 | E-02 | ○ |
| C-31 | CORSプロキシリクエストから機密ヘッダーを削除 | E-09 | ○ |
| C-32 | 通常APIのレート制限は500リクエスト/分 | E-10 | ○ |
| C-33 | CORSプロキシのレート制限は25リクエスト/分 | E-09 | ○ |
| C-34 | Access-Control-Allow-Origin: * | E-10 | ○ |
| C-35 | 信頼プロキシにプライベートIPレンジを設定 | E-11 | ○ |
| C-36 | リクエストログにタイムスタンプ・メソッド・ステータス・URLを記録 | E-04 | ○ |
| C-37 | ログはコンソール出力のみで永続化なし | E-04 | ○ |
| C-38 | express-winston + winstonでログ記録 | E-04, E-13 | ○ |
| C-39 | 対応OpenIDプロバイダにAuth0等を含む | E-02 | ○ |
| C-40 | ipaddr.jsでCIDR記法をサポート | E-03, E-13 | ○ |
| C-41 | 環境変数ACTUAL_TOKEN_EXPIRATIONでトークン有効期限を設定 | E-11 | ○ |
| C-42 | 開発環境ではレート制限が無効 | E-10 | ○ |

## 4) 不足情報（Unknown / Missing）
- **HSTS設定**: ソースコードに明示的なStrict-Transport-Securityヘッダー設定が見つからない。リバースプロキシでの設定を想定している可能性あり
  - 候補：nginx設定 / Docker Compose設定 / ドキュメント
- **CSP設定**: Content Security Policyヘッダーの明示的な設定が見つからない
  - 候補：将来的な実装計画 / リバースプロキシでの設定

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 大部分のセキュリティ設計はソースコードから直接確認可能
- **1（中リスク）**: HSTS/CSPの未実装は運用環境でのセキュリティ強化が必要
- **0（低リスク）**: 認証・認可・暗号化の実装は業界標準に準拠

## 6) レビュアーチェックリスト（最小）
- [ ] bcryptのソルトラウンド12が運用要件を満たすか確認
- [ ] トークン有効期限「never」がセキュリティポリシーに適合するか確認
- [ ] CORS設定（Allow-Origin: *）が許容範囲か確認
- [ ] リバースプロキシでHSTS/CSPを設定しているか確認
- [ ] 監査ログの永続化要件を確認
- [ ] OpenIDプロバイダの設定が正しいか確認
