背景
PR #1209 でセキュリティ脆弱性対応の依存アップデートを実施したが、以下のパッケージは破壊的変更を伴うため見送った。今後着手しやすいよう一覧にまとめる。
未対応のアップデート
🔴 Critical(要優先対応)
@fastify/express v2 → v4(認証バイパス脆弱性) ✅ PR #1213 で対応済み
protobufjs(任意コード実行・DoS)
修正版が存在しない(fixAvailable: false)
間接依存のため直接制御できない
🟠 High(fastify v5 アップグレードで一括解決)
fastify v4 → v5 ✅ PR #1213 で対応済み
🟠 High(個別対応)
cloudinary v1 → v2 ✅ PR #1217 で対応済み
puppeteer v18 → v25 ✅ PR #1217 で対応済み
直接依存 (puppeteer: ^18.0.5)
使用箇所: map-guessr/, nmpz/ など
注: v25 で page.setContent() の waitUntil: 'networkidle0' が廃止されたため map-guessr/index.ts を修正
dockerode v3 → v5
直接依存 (dockerode: ^3.3.4)
使用箇所: procon/ など
google-tts-api v2 → (最新)
直接依存 (google-tts-api: ^2.0.2)
isSemVerMajor: true の更新あり
japanese v1 → v1.1.0 (isSemVerMajor扱い)
sqlite3 v5 → v6
直接依存 (sqlite3: ^5.1.7)
Node.js v22 環境での better-sqlite3 ビルド問題あり(要確認)
🟡 Moderate(個別対応)
firebase-admin v13 → v14
@octokit/webhooks v10 → v14 ✅ PR #1216 で対応済み
直接依存 (@octokit/webhooks: ^10.9.2)
ts-trueskill v4 → v5 ✅ PR #1212 で対応済み
scrape-it v5 → v6 ✅ PR #1212 で対応済み
microsoft-cognitiveservices-speech-sdk → v1.13.1+
直接依存 (microsoft-cognitiveservices-speech-sdk: ^1.23.0)
download v8 → v3 (isSemVerMajor扱い)
aws-sdk v2 → v3(EOL)
直接依存 (aws-sdk: ^2.1354.0)
AWS SDK v2 は EOL
🔴 修正不可(固定対応が必要)
パッケージ
重要度
理由
@slack/interactive-messages
high
修正版なし・非推奨
amae-koromo
high
GitHub 依存のため制御不可
axios
high
修正版なし
mackerel
moderate
修正版なし
推奨する対応順序
fastify v5 + @fastify/express v4 ✅ PR fix: fastify v5へのアップグレードと@fastify/expressのCritical脆弱性を修正 #1213 で対応済み
firebase-admin v14 — v13.10.0 への更新(PR fix: セキュリティ脆弱性対応 - firebase-admin, pm2, @octokit/webhooks アップグレード #1216 )で critical 脆弱性は解消済み。v14 への完全移行は引き続き対応
cloudinary v2 ✅ PR fix: cloudinary v2・puppeteer v25へのセキュリティアップデート (#1211) #1217 で対応済み
puppeteer v25 ✅ PR fix: cloudinary v2・puppeteer v25へのセキュリティアップデート (#1211) #1217 で対応済み
その他は都度対応
注意事項
npm audit fix を実行すると better-sqlite3 のビルドが Node.js v22 で失敗するため、パッケージは個別に手動更新すること
npm audit fix --force は使用しないこと(大量の破壊的変更が一括適用される)
背景
PR #1209 でセキュリティ脆弱性対応の依存アップデートを実施したが、以下のパッケージは破壊的変更を伴うため見送った。今後着手しやすいよう一覧にまとめる。
未対応のアップデート
🔴 Critical(要優先対応)
✅ PR #1213 で対応済み@fastify/expressv2 → v4(認証バイパス脆弱性)脆弱性: GHSA-g6q3-96cp-5r5m, GHSA-hrwm-hgmj-7p9c, GHSA-6hw5-45gm-fj88URL エンコーディングや duplicate slash を使った認証バイパスが可能条件:fastifyv5 へのアップグレードが前提(@fastify/express v4は fastify v5 専用)対応: 下記fastifyv5 アップグレードとセットで実施することprotobufjs(任意コード実行・DoS)fixAvailable: false)🟠 High(fastify v5 アップグレードで一括解決)
✅ PR #1213 で対応済みfastifyv4 → v5影響パッケージ:fast-json-stringify,fast-uri,@fastify/ajv-compiler,@fastify/fast-json-stringify-compilerなど多数参考: https://fastify.dev/docs/latest/Guides/Migration-Guide-V5/@fastify/expressv4 への更新も同時に実施すること🟠 High(個別対応)
✅ PR #1217 で対応済みcloudinaryv1 → v2直接依存 (cloudinary: ^1.31.0)v2 では API が大幅変更。使用箇所:cloudinary/ディレクトリ参考: https://cloudinary.com/documentation/node_migration_guide注: cloudinary v2 は v1 のcloudinary.v2.*API を後方互換として維持しているため、コード変更なし✅ PR #1217 で対応済みpuppeteerv18 → v25直接依存 (puppeteer: ^18.0.5)使用箇所:map-guessr/,nmpz/など注: v25 でpage.setContent()のwaitUntil: 'networkidle0'が廃止されたためmap-guessr/index.tsを修正dockerodev3 → v5dockerode: ^3.3.4)procon/などgoogle-tts-apiv2 → (最新)google-tts-api: ^2.0.2)isSemVerMajor: trueの更新ありjapanesev1 → v1.1.0 (isSemVerMajor扱い)japanese: ^1.2.0)sqlite3v5 → v6sqlite3: ^5.1.7)better-sqlite3ビルド問題あり(要確認)🟡 Moderate(個別対応)
firebase-adminv13 → v14fast-xml-parserの critical 脆弱性は解消)✅ PR #1216 で対応済み@octokit/webhooksv10 → v14直接依存 (@octokit/webhooks: ^10.9.2)✅ PR #1212 で対応済みts-trueskillv4 → v5✅ PR #1212 で対応済みscrape-itv5 → v6microsoft-cognitiveservices-speech-sdk→ v1.13.1+microsoft-cognitiveservices-speech-sdk: ^1.23.0)downloadv8 → v3 (isSemVerMajor扱い)download: ^8.0.0)aws-sdkv2 → v3(EOL)aws-sdk: ^2.1354.0)🔴 修正不可(固定対応が必要)
@slack/interactive-messagesamae-koromoaxiosmackerel推奨する対応順序
✅ PR fix: fastify v5へのアップグレードと@fastify/expressのCritical脆弱性を修正 #1213 で対応済みfastifyv5 +@fastify/expressv4firebase-adminv14 — v13.10.0 への更新(PR fix: セキュリティ脆弱性対応 - firebase-admin, pm2, @octokit/webhooks アップグレード #1216)で critical 脆弱性は解消済み。v14 への完全移行は引き続き対応✅ PR fix: cloudinary v2・puppeteer v25へのセキュリティアップデート (#1211) #1217 で対応済みcloudinaryv2✅ PR fix: cloudinary v2・puppeteer v25へのセキュリティアップデート (#1211) #1217 で対応済みpuppeteerv25注意事項
npm audit fixを実行するとbetter-sqlite3のビルドが Node.js v22 で失敗するため、パッケージは個別に手動更新することnpm audit fix --forceは使用しないこと(大量の破壊的変更が一括適用される)