diff --git a/STATUS.md b/STATUS.md index 469c0b7d..67581be2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -6,30 +6,36 @@ - 特になし -## 全アプリ セキュリティ監査(2026-04-25 完了) +## 全アプリ セキュリティ監査(2026-04-25 実施 / 2026-04-26 追加修正) -### このセッションで修正・デプロイ済み +### デプロイ済みの修正一覧 -| 修正 | 場所 | 内容 | -|------|------|------| -| XSS修正 | posimai-digest/index.html | escHtml()追加・AIレスポンスとユーザー入力のinnerHTML挿入前エスケープ | -| エラー情報露出 | server.js:2067 | chronicle/activityのe.message→汎用メッセージ | -| エラー情報露出 | server.js:3290 | atlas-scanのcode:e.code除去 | +| 修正 | 場所 | 内容 | 日付 | +|------|------|------|------| +| XSS修正 | posimai-digest/index.html | escHtml()追加 | 2026-04-25 | +| エラー情報露出 | server.js:2067 | chronicle/activityのe.message→汎用メッセージ | 2026-04-25 | +| エラー情報露出 | server.js:3290 | atlas-scanのcode:e.code除去 | 2026-04-25 | +| Guard CSRF トークン | posimai-guard | HMAC-SHA256(GEMINI_API_KEY, UTC日) を meta タグで注入、enrich/fix-issue に x-guard-token 必須化 | 2026-04-26 | -### 監査で判明した残課題(未対応) +### 批判的コードレビューで「既修正」と判明した項目 + +- journal/together innerHTML XSS: 全箇所に escHtml/escapeHTML 適用済み。前回監査の誤検知 +- Ponshu IDOR/TOCTOU: `UPDATE ... WHERE device_id IS NULL` 原子的実装で解消済み。前回監査の誤検知 +- H-8 CSP未設定: 全31アプリに CSP + HSTS 設定済み(2026-04-20) +- Together URL `javascript:` 注入: `isSsrfSafe()` が protocol チェックで遮断済み + +### 残課題(未対応) **即時対応必要(maiさん手動)** - `ponshu_room_lite/.env` と `.env.local` に Gemini APIキー(×2)・Giteaトークンが平文。GCPコンソールとGiteaで今すぐローテーション -**コード修正が必要(次チャットで対応)** -1. journal/togetherの innerHTML XSS(escHtmlで解決・Eijiへの影響なし) -2. Guard APIルートの認証(scan-claude/enrich/fix-issueがOriginチェックのみ) -3. Ponshuライセンス認証のIDOR(routes/ponshu.js:16-90) -4. CSP整備(unsafe-inline削除・未設定アプリへの追加) +**コード修正が必要(優先度 High)** +1. H-7: CSP の `unsafe-inline` 除去 → インラインイベントハンドラを addEventListener に置換が必要。工数大 +2. H-5: redirect_uri 正規表現 → `posimai-evil.vercel.app` マッチ可能。絞り込みは小さい修正で可能 **設計上の妥協点(意図的・変更不要)** -- JWTをURL経由で渡す: クロスドメインSSO設計のため必要。historyReplaceStateは全アプリ実装済み -- Together認証なし: EijiがJWT非保有のため意図的設計。レートリミット・invite_code強度で対策済み +- JWTをURL経由で渡す: クロスドメインSSO設計のため必要 +- Together認証なし: EijiがJWT非保有のため意図的設計 詳細は memory/project_security_audit.md を参照