From 8af6faa44d13f713fd4ba42dbdb81e59eab36179 Mon Sep 17 00:00:00 2001 From: posimai Date: Sat, 25 Apr 2026 22:01:40 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=E3=82=BB=E3=82=AD=E3=83=A5=E3=83=AA?= =?UTF-8?q?=E3=83=86=E3=82=A3=E7=9B=A3=E6=9F=BB=E3=83=95=E3=82=A9=E3=83=AD?= =?UTF-8?q?=E3=83=BC=E3=82=A2=E3=83=83=E3=83=97=E3=82=92=20STATUS.md=20?= =?UTF-8?q?=E3=81=AB=E8=A8=98=E9=8C=B2=EF=BC=882026-04-26=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- STATUS.md | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) 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 を参照