From d71821cc090604751a2b0a84e2ba5662b793552a Mon Sep 17 00:00:00 2001 From: Wada Yusuke Date: Tue, 21 Jul 2026 15:10:16 +0900 Subject: [PATCH] =?UTF-8?q?fix(ci):=20js-yaml=20=E3=81=AE=20advisory=20?= =?UTF-8?q?=E3=82=92=20audit=20allowlist=20=E3=81=AB=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=EF=BC=88GHSA-52cp-r559-cp3m=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新規公開された js-yaml の advisory(YAML merge-key チェーンによる二次的 CPU 消費 / high)が npm audit ゲートで CI を落とすようになった。この依存は openapi-typescript(dev) → @redocly/openapi-core 経由の推移的依存で、自前の backend OpenAPI スキーマ(信頼済み)を codegen する時だけ使う。本番バンドルに 非到達で攻撃者制御の YAML を parse しないため到達不能。@redocly/openapi-core は 全バージョンが脆弱な js-yaml に依存し npm audit fix でも解消できないため、既存の esbuild 2 件と同じく理由・見直し期限付きで allowlist に時限的に追加する。 Co-Authored-By: Claude Opus 4.8 --- web/scripts/audit-check.mjs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/scripts/audit-check.mjs b/web/scripts/audit-check.mjs index 6d64fb16..31d361c7 100644 --- a/web/scripts/audit-check.mjs +++ b/web/scripts/audit-check.mjs @@ -24,6 +24,15 @@ const frontendDir = resolve(dirname(fileURLToPath(import.meta.url)), ".."); // 許容する advisory。GHSA ID をキーに、理由と見直し期限を残す。 // 恒久対応 (vite 8 / Rolldown 移行) 完了時にエントリを削除すること。 const ALLOWLIST = { + "GHSA-52cp-r559-cp3m": { + reason: + "js-yaml の YAML merge-key チェーンによる二次的 CPU 消費 (DoS)。" + + "openapi-typescript(dev 依存) → @redocly/openapi-core 経由の推移的依存で、" + + "自前 backend の OpenAPI スキーマ (信頼済み) を codegen する時だけ使用。" + + "本番バンドル非到達・攻撃者制御の YAML を parse しない。@redocly/openapi-core は" + + "全バージョンが脆弱な js-yaml に依存し npm audit fix でも解消不可のため時限的に許容。", + reviewBy: "2026-09-30 (openapi-typescript / @redocly の js-yaml>4.2.0 対応を待つ)", + }, "GHSA-gv7w-rqvm-qjhr": { reason: "esbuild の Deno モジュール install-time RCE (NPM_CONFIG_REGISTRY 経由)。" +