fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml) - #594

Merged
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high
Aug 13, 2026
Merged

fix(deps): High 脆弱性 3 件を解消し Renovate PR のブロックを解除(pypdf / nanoid / js-yaml)#594
yusuke0610 merged 1 commit into
mainfrom
fix/deps-audit-high

Conversation

@yusuke0610

@yusuke0610yusuke0610 commented Aug 13, 2026

Copy link
Copy Markdown
Owner

背景

Renovate の PR 8 件(#586#593)が 全件tests / test-backendtests / test-web で落ちてマージできない状態だった。

原因はバンプ内容ではなく、main に残っていた未対応の High 脆弱性。GitHub Actions の digest 更新しかしていない #587 でも同じ 2 チェックが落ちることから切り分けた。この PR が先にマージされれば Renovate PR 8 件のブロックが解除される。

変更内容

脆弱性対象対応
CVE-2026-71852 / CVE-2026-71870pypdf 6.14.2(backend 直接依存)6.15.0 へ更新
GHSA-2v37-7h3g-55p8nanoid 3.3.16(postcss 経由)3.3.18 へ更新(lockfile のみ)
GHSA-5p4m-2wfm-xmqjjs-yaml 4.2.0(openapi-typescript → @Redocly 経由)overrides で 4.3.1 を強制

js-yaml に overrides を使った理由

@redocly/openapi-core が js-yaml を exact pin(4.2.0 しており、通常の更新では上がらない。web/package.jsonoverridesjs-yaml: ^4.3.1 を追加して解決した。

codegen を壊すリスクがあるため make codegen-types を実行し、web/src/api/generated.ts に drift が出ないことを確認済み。

allowlist の死んだエントリを削除

js-yaml が 4.3.1 になったことで GHSA-52cp-r559-cp3m(脆弱範囲 >=4.0.0 <4.3.0)も恒久解消となったため、web/scripts/audit-check.mjs の allowlist から削除した。

audit-check.mjsreviewBy 期限強制は advisory が検出されたときにしか走らない(未マッチのエントリは expired 判定に到達しない)ため、残したままだと死に設定になり、別経路で js-yaml 4.2.x が再混入した際に期限切れ後も静かに握り潰される fail-open になる。

随伴する SSoT 更新

  • THIRD_PARTY_LICENSES.md — 依存バージョン更新に伴い make licenses で再生成
  • .claude/rules/common/review.md — RV で検出した観点を SSoT カテゴリに 1 行追記

検証

  • make ci: pass(EXIT=0。backend/web lint・test 51 files 383 tests・build)
  • pip-audit(CI と同一手順): No known vulnerabilities found
  • node web/scripts/audit-check.mjs: High/Critical の未許容 advisory はありません。
  • make codegen-types: generated.ts に drift なし
  • RV ループ: Round 2 で High/Medium ゼロ(レポート: report/RV_20260813_0810.md

レビュー観点

  • ロジック変更は一切なく、依存バージョンと監査設定のみ
  • pypdf の利用箇所 app/services/agent/resume_import/text_extract.pyPdfReader / PyPdfError)は tests/test_resume_import_text_extract.py でカバーされ pass 済み
  • js-yaml / nanoid はいずれも dev 依存(codegen・build のみで本番バンドル非到達)

マージ後

Renovate PR 8 件(#586#593)を rebase すれば CI が通る想定。

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Updated the bundled PDF-handling dependency to version 6.15.0.
    • Added a package version override for improved dependency consistency.
  • Security

    • Removed an obsolete vulnerability exception from dependency auditing.
    • Added guidance to remove outdated warning suppressions once issues are permanently resolved.

…yaml)
Renovate の PR 8 件(#586#593)が全件 tests/test-backend と tests/test-web で
落ちていた。GitHub Actions の digest 更新だけの #587 でも落ちるため原因はバンプ内容
ではなく、main に残っていた未対応の High 脆弱性だった。
- pypdf 6.14.2 → 6.15.0
CVE-2026-71852 / CVE-2026-71870 を解消。pip-audit が「No known vulnerabilities
found」になることを CI と同一手順で確認。
- nanoid 3.3.16 → 3.3.18(lockfile 更新のみ)
GHSA-2v37-7h3g-55p8 を解消。postcss の要求が ^3.3.16 なので override 不要。
- js-yaml 4.2.0 → 4.3.1(overrides で強制)
GHSA-5p4m-2wfm-xmqj を解消。@redocly/openapi-core が js-yaml を exact pin
しており通常の更新では上がらないため overrides を追加した。make codegen-types で
生成物に drift が出ないことを確認済み。
あわせて、js-yaml が 4.3.1 になったことで恒久解消となった allowlist の
GHSA-52cp-r559-cp3m を削除した。audit-check.mjs の reviewBy 期限強制は advisory が
検出されたときにしか走らず、未マッチのエントリは死に設定として残り続けるため
(別経路で 4.2.x が再混入した場合に fail-open になる)。
依存バージョン更新に伴い THIRD_PARTY_LICENSES.md を make licenses で再生成。
RV で検出した観点を .claude/rules/common/review.md の SSoT カテゴリに追記した。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added bug バグ修正 dependencies documentation Improvements or additions to documentation backend バックエンド web フロントエンド (web) labels Aug 13, 2026
@coderabbitai

coderabbitaiBot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a13c9ebb-dded-467d-b38f-7d802ed46f2c

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff5d83 and df5f318.

⛔ Files ignored due to path filters (2)
  • backend/uv.lock is excluded by !**/*.lock
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .claude/rules/common/review.md
  • THIRD_PARTY_LICENSES.md
  • backend/pyproject.toml
  • web/package.json
  • web/scripts/audit-check.mjs
💤 Files with no reviewable changes (1)
  • web/scripts/audit-check.mjs

📝 Walkthrough

Walkthrough

The PR updates pypdf, adds a js-yaml package override, removes a resolved audit allowlist entry, and adds review guidance for removing obsolete suppressions.

Changes

Dependency and audit updates

Layer / File(s)Summary
Dependency versions and overrides
backend/pyproject.toml, THIRD_PARTY_LICENSES.md, web/package.json
Updates pypdf to 6.15.0 in the backend dependency pin and license inventory. Adds a js-yaml^4.3.1 override.
Audit suppression guidance
.claude/rules/common/review.md, web/scripts/audit-check.mjs
Adds guidance to remove obsolete vulnerability or warning suppressions. Removes the GHSA-52cp-r559-cp3m audit allowlist entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Mergeability Score:⚪ Minimal · up to df5f3

This PR updates vulnerable dependencies and audit configuration without changing application logic, and the reported checks pass; no actionable merge-blocking risk remains beyond normal review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly identifies the dependency fix, three High vulnerabilities, Renovate PR unblocking, and the affected packages.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/deps-audit-high

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yusuke0610
yusuke0610 merged commit 0ebf717 into mainAug 13, 2026
25 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backendバックエンドbugバグ修正dependenciesdocumentationImprovements or additions to documentationwebフロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@yusuke0610