C:\Users\kawag\work 配下 全プロジェクト
| プロジェクト | 修正前 | 修正後 | 対応内容 |
|---|---|---|---|
| bento_order_web | 0件 | 0件 | 対応不要 |
| dementia-cf-suite | C:1 M:6 | 0件 | wrangler, jspdf, vite を最新版に更新 |
| dementia-risk-check | 0件 | 0件 | 対応不要 |
| dementia-risk-suite | H:1 | 0件 | npm audit fix (jspdf更新) |
| drawing-cognitive-test | C:1 M:6 | 0件 | wrangler, jspdf, vite を最新版に更新 |
| dysphagia-risk-check | H:3 | 0件 | npm audit fix (tar, brace-expansion更新) |
| endai-system | 0件 | 0件 | 対応不要 |
| hirakata-pt-hp | M:4 | 0件 | wrangler を最新版に更新 |
| productivity-health-survey | H:1 | H:1 | xlsx: 修正版なし(代替パッケージ要検討) |
| rehab-fee-calculator | 0件 | 0件 | 対応不要 |
| remotion-videos | L:4 | 0件 | npm audit fix (webpack更新) |
| rokomo-check-app | 0件 | 0件 | 対応不要 |
| suita-stroke-risk | 0件 | 0件 | 対応不要 |
| updrs-tracker | C:1 H:7 M:4 L:1 | H:2 M:1 | jspdf, vite, @vercel/node更新。残存は@vercel/node上流問題 |
| visitcare | 0件 | 0件 | 対応不要 |
修正: 36件の依存パッケージ脆弱性を解消。残存4件は上流パッケージの問題(修正版未リリース)。
4つの並列セキュリティスキャンエージェントで以下10項目を分析:
| # | スキャン項目 | 検出数 | 内訳 |
|---|---|---|---|
| 1 | ハードコードされた認証情報・シークレット | 13件 | C:8 H:5 |
| 2 | 安全でない暗号化の使用 | 6件 | H:1 M:5 |
| 3 | 安全でないデシリアライゼーション | 1件 | H:1 |
| 4 | 未検証のリダイレクト | 0件 | 検出なし(安全) |
| 5 | CSRF対策の欠如 | 2件 | H:2 |
| 6 | 安全でないファイルアップロード処理 | 1件 | M:1 |
| 7 | 過剰な権限付与 | 8件 | C:2 H:5 M:1 |
| 8 | 未使用・放置された管理者エンドポイント | 2件 | C:1 H:1 |
| 9 | デバッグモードの本番有効化 | 2件 | H:1 M:1 |
| 10 | ログへの機密情報出力 | 11件 | H:2 M:5 L:4 |
| 脆弱性 | 対象 | 修正内容 | 状態 |
|---|---|---|---|
| Firebase秘密鍵の平文保存 | bento_order_web | serviceAccountKey.json を personal_data に移動、.gitignore追加 | 修正済 |
| Google OAuth client_secret 平文保存 | work直下, rehab_monitoring | 2ファイルを personal_data に移動、.gitignore追加 | 修正済 |
| 実パスワードのハードコード(Git追跡) | endai-system scripts/ | 4つのテストスクリプトを完全削除 | 修正済 |
| APIエンドポイントに認証なし(患者データ公開) | drawing-cognitive-test | API Key認証ミドルウェア追加、タイミング攻撃対策 | 修正済 |
| ダミーデータ生成が本番で実行可能 | endai-system | NODE_ENV === 'production' ガード追加 | 修正済 |
| getRegistrations に権限チェックなし | endai-system | requireRole("organizer") を追加 | 修正済 |
| 脆弱性 | 対象 | 修正内容 | 状態 |
|---|---|---|---|
| HTMLメールのXSS(ユーザー入力未エスケープ) | endai-system | abstract.ts, revision-request.ts の全ユーザー入力に escapeHtml() 適用 | 修正済 |
| 管理画面 innerHTML XSS | hirakata-pt-hp | escapeHtml() 関数追加、renderNewsTable() で全フィールドをエスケープ | 修正済 |
| 管理者APIのワイルドカードCORS | hirakata-pt-hp(5ファイル) | ALLOWED_ORIGINS リスト方式に変更(本番ドメイン + localhost) | 修正済 |
| パスワードリセットトークンのconsole.log | endai-system | token_hash, code のログ出力を除去 | 修正済 |
| ユーザーPII(メール・名前)のconsole.log | bento_order_web | OrderPage.tsx, emailService.ts からPII出力を除去 | 修正済 |
| Firestoreルール: 未認証メール列挙 | bento_order_web | invited_users の read ルールに認証必須を追加 | 修正済 |
| Firestoreルール: 全注文が他ユーザーに公開 | bento_order_web | orders の read ルールにオーナー/管理者チェックを追加 | 修正済 |
| CSP に unsafe-eval | visitcare | unsafe-eval 除去、base-uri / form-action / frame-ancestors 追加 | 修正済 |
| 脆弱性 | 対象 | 修正内容 | 状態 |
|---|---|---|---|
| エラーメッセージでDB情報漏洩(11箇所) | endai-system | abstract.ts, registration.ts, auth.ts, timetable/pdf/route.tsx からerror.messageを除去、console.errorに変更 | 修正済 |
| Math.random() で決済用ID生成 | endai-system | crypto.getRandomValues() に置換(2箇所) | 修正済 |
| CSVアップロードにサイズ制限なし | endai-system | 5MB上限チェックを追加 | 修正済 |
| Stripe WebhookがRate Limit対象 | endai-system | /api/webhooks/stripe をRate Limit除外パスに追加 | 修正済 |
| 課題 | 対象 | 理由 | 推奨対応 |
|---|---|---|---|
| conference-app デフォルトシークレット | conference-app | Docker環境の運用設計が必要 | 本番デプロイ時に強力なランダム値に変更 |
| conference-app 過剰CORS + 認証なしRedis | conference-app | バックエンド全体のアーキテクチャ変更が必要 | 専門家によるPython/FastAPI セキュリティレビュー |
| hirakata-pt-hp ログイン Rate Limit なし | hirakata-pt-hp | Cloudflare Workers でのRate Limit実装は設計検討が必要 | Cloudflare Rate Limiting ルール(有料機能)の導入 |
| rehab_monitoring Firestore 全患者リスト可能 | rehab_monitoring | Flutter アプリのデータモデル変更が伴う | 担当患者IDリストによるフィルタリング実装 |
| xlsx パッケージ脆弱性(修正版なし) | productivity-health-survey | パッケージ自体に修正版が存在しない | SheetJS Pro または ExcelJS への移行を検討 |
| 課題 | 対象 | 理由 |
|---|---|---|
| In-memory Rate Limitがサーバーレスで無効 | endai-system | Redis/KV等の永続ストアへの移行が必要 |
| In-memory Stripe冪等性がサーバーレスで無効 | endai-system | 同上。Supabase/KV等への移行が必要 |
| dementia-cf-suite API認証がオプション | dementia-cf-suite | API_SECRET_KEY設定の運用確認が必要 |
| CF Workers CORS fallback to localhost | drawing-cognitive-test, dementia-cf-suite | 本番ドメイン確定後に設定変更が必要 |
| updrs-tracker @vercel/node上流脆弱性(3件) | updrs-tracker | 上流パッケージの修正待ち |
| conference-app OpenAPIドキュメント公開 | conference-app | 認証付きドキュメント公開の設計が必要 |
| bento_order_web localhost CORS許可 | bento_order_web | 開発環境と本番環境の分離設計が必要 |
| 課題 | 対象 |
|---|---|
| テストファイル内のハードコードパスワード(テスト専用) | bento_order_web, endai-system |
| Firebase公開APIキー(設計上公開)のソースコード内配置 | bento_order_web, rehab_monitoring |
| サーバーサイドの過剰console.log(Vercelログ) | endai-system webhook |
| visitcare toast console.log | visitcare |
| visitcare session cookie SameSite=lax | visitcare |
| localStorage JSON.parseにスキーマ検証なし | 複数プロジェクト |
| Math.random()(非セキュリティ用途: UI/テスト) | 複数プロジェクト |
| アーカイブフォルダ内MD5使用 | _archive_20260120 |
| ファイル | 修正内容 |
|---|---|
| src/lib/actions/generate-dummy-data.ts | NODE_ENV productionガード追加 |
| src/lib/actions/registration.ts | requireRole追加、error.message除去、Math.random→crypto |
| src/lib/actions/abstract.ts | escapeHtml適用、error.message除去 |
| src/lib/actions/revision-request.ts | escapeHtml適用(3テンプレート) |
| src/lib/actions/auth.ts | PII console.log除去、error.message除去 |
| src/lib/email.ts | escapeHtml をexport、単一引用符エスケープ追加 |
| src/app/(auth)/update-password/page.tsx | token_hash console.log除去 |
| src/app/api/admin/timetable/pdf/route.tsx | error.message除去 |
| src/components/admin/reviewer-csv-import.tsx | 5MBファイルサイズ制限追加 |
| src/middleware.ts | Stripe webhook Rate Limit除外 |
| ファイル | 修正内容 |
|---|---|
| public/admin/index.html | escapeHtml追加、innerHTML XSS修正 |
| functions/api/admin/session.js | CORS許可リスト方式に変更 |
| functions/api/admin/news.js | 同上 |
| functions/api/admin/news/[id].js | 同上 |
| functions/api/admin/publish.js | 同上 |
| functions/api/admin/init.js | 同上 |
| ファイル | 修正内容 |
|---|---|
| drawing-cognitive-test/src/worker/index.ts | API Key認証ミドルウェア追加 |
| bento_order_web/firestore.rules | 認証必須化 + オーナーチェック追加 |
| bento_order_web/src/pages/employee/OrderPage.tsx | PII console.log除去 |
| bento_order_web/src/services/emailService.ts | メールアドレス console.log除去 |
| visitcare/next.config.ts | CSP強化(unsafe-eval除去 + 3ディレクティブ追加) |
| 削除: endai-system/scripts/{test-login.js, test-e2e-login.mjs, test-auth-only.js, gen-password-hash.js} | |
| 移動: serviceAccountKey.json, credentials.json, client_secret*.json → personal_data/ | |
以下の項目はVibe Codingだけでは安全性を保証できません。セキュリティ専門家によるレビューを推奨します。
| # | 項目 | 理由 |
|---|---|---|
| 1 | conference-app 全体のセキュリティアーキテクチャ | Python/FastAPIバックエンドのデフォルトシークレット、CORS、Redis認証なし、OpenAPI公開など複合的な問題 |
| 2 | Git履歴からのシークレット完全除去 | 削除したファイル(テストスクリプト、秘密鍵)がGit履歴に残存。git filter-branchまたはBFG Repo-Cleanerによる履歴書き換えが必要 |
| 3 | シークレットのローテーション | 漏洩した可能性のあるキー(Firebase SA, Google OAuth, Slack Webhook, Supabase)の無効化・再発行が必要 |
| 4 | サーバーレス環境のRate Limit / 冪等性 | Vercel Functions のステートレス特性により、In-memory実装は無効。Redis/KV等の永続ストアへの移行設計が必要 |
| 5 | 医療データのアクセス制御監査 | rehab_monitoring, updrs-tracker のFirestoreルール / API認証が患者データ保護要件を満たしているか専門的な検証が必要 |
| 6 | ペネトレーションテスト | 本番環境での実際の攻撃シミュレーションによる検証。静的分析だけでは発見できない脆弱性の確認 |