セキュリティスキャン&脆弱性修正レポート

C:\Users\kawag\work 配下 全プロジェクト

実施日: 2026-02-14 対象: 15 Node.js プロジェクト 3フェーズ完了

Executive Summary

40 修正完了
0 CRITICAL 残存
5 HIGH 残存
7 MEDIUM 残存
8 LOW / 情報

Phase 1: 依存パッケージ脆弱性チェック (npm audit)

npm audit 結果 & 修正

プロジェクト修正前修正後対応内容
bento_order_web0件0件対応不要
dementia-cf-suiteC:1 M:60件wrangler, jspdf, vite を最新版に更新
dementia-risk-check0件0件対応不要
dementia-risk-suiteH:10件npm audit fix (jspdf更新)
drawing-cognitive-testC:1 M:60件wrangler, jspdf, vite を最新版に更新
dysphagia-risk-checkH:30件npm audit fix (tar, brace-expansion更新)
endai-system0件0件対応不要
hirakata-pt-hpM:40件wrangler を最新版に更新
productivity-health-surveyH:1H:1xlsx: 修正版なし(代替パッケージ要検討)
rehab-fee-calculator0件0件対応不要
remotion-videosL:40件npm audit fix (webpack更新)
rokomo-check-app0件0件対応不要
suita-stroke-risk0件0件対応不要
updrs-trackerC:1 H:7 M:4 L:1H:2 M:1jspdf, vite, @vercel/node更新。残存は@vercel/node上流問題
visitcare0件0件対応不要

修正: 36件の依存パッケージ脆弱性を解消。残存4件は上流パッケージの問題(修正版未リリース)。

Phase 2: 静的コード解析(10項目スキャン)

4つの並列セキュリティスキャンエージェントで以下10項目を分析:

#スキャン項目検出数内訳
1ハードコードされた認証情報・シークレット13件C:8 H:5
2安全でない暗号化の使用6件H:1 M:5
3安全でないデシリアライゼーション1件H:1
4未検証のリダイレクト0件検出なし(安全)
5CSRF対策の欠如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

Phase 3: 脆弱性修正の実施

C

CRITICAL 修正(即時対応) 8件修正

脆弱性対象修正内容状態
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") を追加 修正済
H

HIGH 修正(当日中対応) 14件修正

脆弱性対象修正内容状態
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 追加 修正済
M

MEDIUM 修正(1週間以内対応) 14件修正

脆弱性対象修正内容状態
エラーメッセージで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除外パスに追加 修正済

残存課題(専門家への相談を推奨)

HIGH残存(5件)

課題対象理由推奨対応
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 への移行を検討

MEDIUM残存(7件)

課題対象理由
In-memory Rate Limitがサーバーレスで無効endai-systemRedis/KV等の永続ストアへの移行が必要
In-memory Stripe冪等性がサーバーレスで無効endai-system同上。Supabase/KV等への移行が必要
dementia-cf-suite API認証がオプションdementia-cf-suiteAPI_SECRET_KEY設定の運用確認が必要
CF Workers CORS fallback to localhostdrawing-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開発環境と本番環境の分離設計が必要

LOW / 情報(8件)

課題対象
テストファイル内のハードコードパスワード(テスト専用)bento_order_web, endai-system
Firebase公開APIキー(設計上公開)のソースコード内配置bento_order_web, rehab_monitoring
サーバーサイドの過剰console.log(Vercelログ)endai-system webhook
visitcare toast console.logvisitcare
visitcare session cookie SameSite=laxvisitcare
localStorage JSON.parseにスキーマ検証なし複数プロジェクト
Math.random()(非セキュリティ用途: UI/テスト)複数プロジェクト
アーカイブフォルダ内MD5使用_archive_20260120

修正ファイル一覧(全プロジェクト)

endai-system(10ファイル)

ファイル修正内容
src/lib/actions/generate-dummy-data.tsNODE_ENV productionガード追加
src/lib/actions/registration.tsrequireRole追加、error.message除去、Math.random→crypto
src/lib/actions/abstract.tsescapeHtml適用、error.message除去
src/lib/actions/revision-request.tsescapeHtml適用(3テンプレート)
src/lib/actions/auth.tsPII console.log除去、error.message除去
src/lib/email.tsescapeHtml をexport、単一引用符エスケープ追加
src/app/(auth)/update-password/page.tsxtoken_hash console.log除去
src/app/api/admin/timetable/pdf/route.tsxerror.message除去
src/components/admin/reviewer-csv-import.tsx5MBファイルサイズ制限追加
src/middleware.tsStripe webhook Rate Limit除外

hirakata-pt-hp(6ファイル)

ファイル修正内容
public/admin/index.htmlescapeHtml追加、innerHTML XSS修正
functions/api/admin/session.jsCORS許可リスト方式に変更
functions/api/admin/news.js同上
functions/api/admin/news/[id].js同上
functions/api/admin/publish.js同上
functions/api/admin/init.js同上

その他プロジェクト(5ファイル + 削除4ファイル)

ファイル修正内容
drawing-cognitive-test/src/worker/index.tsAPI Key認証ミドルウェア追加
bento_order_web/firestore.rules認証必須化 + オーナーチェック追加
bento_order_web/src/pages/employee/OrderPage.tsxPII console.log除去
bento_order_web/src/services/emailService.tsメールアドレス console.log除去
visitcare/next.config.tsCSP強化(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だけでは安全性を保証できません。セキュリティ専門家によるレビューを推奨します。

#項目理由
1conference-app 全体のセキュリティアーキテクチャPython/FastAPIバックエンドのデフォルトシークレット、CORS、Redis認証なし、OpenAPI公開など複合的な問題
2Git履歴からのシークレット完全除去削除したファイル(テストスクリプト、秘密鍵)が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ペネトレーションテスト本番環境での実際の攻撃シミュレーションによる検証。静的分析だけでは発見できない脆弱性の確認