chore: セキュリティ監査フォローアップを STATUS.md に記録(2026-04-26)

This commit is contained in:
posimai 2026-04-25 22:01:40 +09:00
parent cd5237b19c
commit 8af6faa44d
1 changed files with 21 additions and 15 deletions

View File

@ -6,30 +6,36 @@
- 特になし - 特になし
## 全アプリ セキュリティ監査2026-04-25 完了 ## 全アプリ セキュリティ監査2026-04-25 実施 / 2026-04-26 追加修正
### このセッションで修正・デプロイ済み ### デプロイ済みの修正一覧
| 修正 | 場所 | 内容 | | 修正 | 場所 | 内容 | 日付 |
|------|------|------| |------|------|------|------|
| XSS修正 | posimai-digest/index.html | escHtml()追加・AIレスポンスとユーザー入力のinnerHTML挿入前エスケープ | | XSS修正 | posimai-digest/index.html | escHtml()追加 | 2026-04-25 |
| エラー情報露出 | server.js:2067 | chronicle/activityのe.message→汎用メッセージ | | エラー情報露出 | server.js:2067 | chronicle/activityのe.message→汎用メッセージ | 2026-04-25 |
| エラー情報露出 | server.js:3290 | atlas-scanのcode:e.code除去 | | エラー情報露出 | 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さん手動** **即時対応必要maiさん手動**
- `ponshu_room_lite/.env``.env.local` に Gemini APIキー(×2)・Giteaトークンが平文。GCPコンソールとGiteaで今すぐローテーション - `ponshu_room_lite/.env``.env.local` に Gemini APIキー(×2)・Giteaトークンが平文。GCPコンソールとGiteaで今すぐローテーション
**コード修正が必要(次チャットで対応)** **コード修正が必要(優先度 High**
1. journal/togetherの innerHTML XSSescHtmlで解決・Eijiへの影響なし 1. H-7: CSP の `unsafe-inline` 除去 → インラインイベントハンドラを addEventListener に置換が必要。工数大
2. Guard APIルートの認証scan-claude/enrich/fix-issueがOriginチェックのみ 2. H-5: redirect_uri 正規表現 → `posimai-evil.vercel.app` マッチ可能。絞り込みは小さい修正で可能
3. Ponshuライセンス認証のIDORroutes/ponshu.js:16-90
4. CSP整備unsafe-inline削除・未設定アプリへの追加
**設計上の妥協点(意図的・変更不要)** **設計上の妥協点(意図的・変更不要)**
- JWTをURL経由で渡す: クロスドメインSSO設計のため必要。historyReplaceStateは全アプリ実装済み - JWTをURL経由で渡す: クロスドメインSSO設計のため必要
- Together認証なし: EijiがJWT非保有のため意図的設計。レートリミット・invite_code強度で対策済み - Together認証なし: EijiがJWT非保有のため意図的設計
詳細は memory/project_security_audit.md を参照 詳細は memory/project_security_audit.md を参照