Skip to content

fix(deps): override fast-uri to ^3.1.7 and qs to ^6.16.0 to resolve CVEs (#3313) - #3346

Merged
lidge-jun merged 1 commit into
devfrom
codex/audit-cve-overrides-3314
Sep 3, 2026
Merged

fix(deps): override fast-uri to ^3.1.7 and qs to ^6.16.0 to resolve CVEs (#3313)#3346
lidge-jun merged 1 commit into
devfrom
codex/audit-cve-overrides-3314

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • fast-uri@3.1.5 carries four high-severity advisories, all reachable through @modelcontextprotocol/sdk > ajv > fast-uri: host confusion via skipped IDN canonicalization (GHSA-5jgf-p345-68v8), SSRF via malformed IPv6 normalization (GHSA-f65p-4m7j-42xc), SSRF via repeated hostname percent-decoding (GHSA-fph4-wmhf-6fwf), and host confusion via percent-encoded scheme normalization (GHSA-jqff-g426-hqxp). qs@6.15.3 carries two moderate ones.
  • This is not a latent finding. The v2.41.0-preview.20260903 publish dispatched today failed in release.yml's own dependency-audit step (run 33738740649) — the gate working as designed. The release train cannot move until this lands on dev.

Carried from #3314 by @agentHits, who found it and wrote the overrides. Landed directly because the release is blocked on it and that PR's contributor readiness gate cannot clear from a fork. Co-author trailer on the commit.

Closes #3313

Verification

  • bun install then bun run audit:highNo vulnerabilities found at both levels (143 packages root, 81 packages GUI). Same command and same step the release workflow failed on.
  • bun test tests/repo-hygiene.test.ts — 12 pass, 0 fail.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Summary by CodeRabbit

  • Chores
    • Updated dependency versions to incorporate newer fixes and improvements.
    • Added a dependency override for qs.

…VEs (#3313)

fast-uri 3.1.5 carries four high-severity advisories, all reachable through
@modelcontextprotocol/sdk > ajv > fast-uri: host confusion via skipped IDN
canonicalization, SSRF via malformed IPv6 normalization, SSRF via repeated
hostname percent-decoding, and host confusion via percent-encoded scheme
normalization. qs 6.15.3 carries two moderate ones.

This is not a latent finding. The v2.41.0-preview publish dispatched today
failed in release.yml's own dependency-audit step (run 33738740649), which is
the gate working as designed: a release cannot go out carrying four high
advisories. The fix has to land on dev before the release train can move.

Carried from #3314 by agentHits, who found it and wrote the overrides. Landed
directly because the release is blocked on it and that PR's contributor
readiness gate cannot clear from a fork.

Verification: bun run audit:high clean at both levels (143 and 81 packages);
bun test tests/repo-hygiene.test.ts passes.

Closes #3313

Co-authored-by: agentHits <zvercombat26rus@icloud.com>
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 3, 2026 09:27
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the bug Something isn't working label Sep 3, 2026
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: de1c6c1a-cd8a-4edf-8381-7399cb13aaa1

📥 Commits

Reviewing files that changed from the base of the PR and between 81a1fc1 and 63595d2.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • package.json

Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The package override configuration updates fast-uri to ^3.1.7 and adds qs at ^6.16.0. Existing hono and ip-address overrides remain unchanged.

Changes

Dependency vulnerability overrides

Layer / File(s) Summary
Update dependency overrides
package.json:77-80
The fast-uri override changes from ^3.1.5 to ^3.1.7. The qs override is added at ^6.16.0. The hono and ip-address overrides remain unchanged.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 63595

The dependency overrides update fast-uri and qs to patched versions, with no remaining identified merge risk.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Linked Issues check ❓ Inconclusive The package.json overrides block updates fast-uri to ^3.1.7 and adds qs at ^6.16.0, which matches the remediation requirements in issue #3313. However, bun.lock is excluded by the !**/*.lock path filt… Include bun.lock in the review evidence, or provide an auditable report that confirms fast-uri and qs resolve to fixed versions and that bun audit reports no remaining vulnerabilities. The package.json override changes already satisfy the d…
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the dependency override changes for fast-uri and qs and states their security purpose. It accurately reflects the primary change.
Out of Scope Changes check ✅ Passed The reported change is limited to dependency overrides in package.json. The fast-uri and qs updates directly address the six vulnerabilities described in issue #3313. No unrelated code or configuratio…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Full details: Linked Issues check

Explanation

The package.json overrides block updates fast-uri to ^3.1.7 and adds qs at ^6.16.0, which matches the remediation requirements in issue #3313. However, bun.lock is excluded by the !**/*.lock path filter, so the resolved dependency versions and the reported bun audit result cannot be independently verified from the reviewable evidence.

Resolution

Include bun.lock in the review evidence, or provide an auditable report that confirms fast-uri and qs resolve to fixed versions and that bun audit reports no remaining vulnerabilities. The package.json override changes already satisfy the directly visible coding requirements from issue #3313.

Full details: Out of Scope Changes check

Explanation

The reported change is limited to dependency overrides in package.json. The fast-uri and qs updates directly address the six vulnerabilities described in issue #3313. No unrelated code or configuration changes are reported.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/audit-cve-overrides-3314

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.

@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 76 / 80

이 PR은 제품 코드를 한 줄도 안 바꿉니다. 바꾸는 곳은 루트 package.jsonoverrides와 그걸 따라간 bun.lock뿐입니다. 지금 dev HEAD(81a1fc1cc, package 2.41.0)에는 이미 fast-uri: ^3.1.5 오버라이드가 있는데, 잠긴 실제 버전은 여전히 fast-uri@3.1.5입니다. advisory 범위가 >=3.1.3 <3.1.6이라 그 값이 그대로 고위험 네 건(GHSA-5jgf-p345-68v8, GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp)을 남깁니다. qs는 오버라이드조차 없어서 @modelcontextprotocol/sdkexpress / body-parser 경로로 qs@6.15.3이 풀리고, moderate 두 건(GHSA-x5fp-wj9c-mxmx, GHSA-4mjr-xmp4-gh2g)이 남습니다.

왜 지금이냐면, 이건 “나중에 고치면 되는 잠복 감사”가 아닙니다. 오늘 돌린 v2.41.0-preview.20260903 배포가 .github/workflows/release.ymlbun run audit:high 단계에서 이미 막혔습니다(run 33738740649). 루트와 gui 둘 다 --audit-level=high를 도는 audit:high 스크립트, 그리고 prepublishOnly가 그 앞에 붙어 있어서, 이 오버라이드가 dev에 오기 전에는 muse_release_train / 손으로 올리는 v2.41.0 경로가 다시 같은 문에 걸립니다. 게이트가 설계대로 일한 것이고, 풀어야 할 열쇠가 이 PR입니다.

고치는 방식도 기존 관례와 같습니다. overridesfast-uri^3.1.7로 올리고 qs^6.16.0으로 새로 넣었고, lock이 각각 3.1.7 / 6.16.0으로 갱신됐습니다. 경로도 이슈 #3313이 짚은 그대로입니다. @modelcontextprotocol/sdk(루트 의존성 ^1.30.0) → ajvfast-uri, 그리고 같은 SDK → express/body-parserqs. gui/package.json의 별도 overrides(brace-expansion / nanoid / postcss)는 건드리지 않았고, 본문 검증대로 audit:high가 루트 143·GUI 81 패키지 모두 깨끗하다고 하니 릴리스 스크립트와 맞습니다. tests/repo-hygiene.test.ts는 추적 금지 경로용 테스트라 이 변경과 직접 관련은 없지만, 본문이 돌렸다고 한 회귀 확인으로는 충분합니다.

원본은 포크 PR #3314(agentHits)입니다. 내용이 이 PR과 사실상 동일하고, 컨트리뷰터 readiness 게이트가 포크에서 안 열려서 메인테이너가 그대로 가져와 Co-authored-by를 남긴 케이스입니다. types.ts/config.ts 분할과도 무관하고, 다른 열린 기능 PR을 무효화하지 않습니다. Closes #3313도 본문에 이미 걸려 있습니다.

package.json overrides.fast-uri - 예전 값이 ^3.1.5였는데도 lock이 3.1.5에 머물렀고, 그게 advisory 상한(<3.1.6) 안에 있었다. 이번 ^3.1.7 + lock 3.1.7은 그 구멍을 직접 막는다. 다만 caret이라 나중에 3.1.x 안에서 다시 풀릴 수 있으니, 릴리스 직전엔 lock SHA가 기대한 패치인지 한 번 더 보면 안전하다.
package.json overrides.qs - 새로 ^6.16.0을 넣었고 lock은 6.16.0이다. 이슈가 말한 수정선(>=6.15.4 / 6.16.0)을 만족한다. 루트에만 넣고 gui 쪽 별도 override는 안 건드린 선택은 맞다. gui audit가 같이 통과했다는 전제가 유지돼야 한다.
bun.lock packages.fast-uri / packages.qs - 잠긴 버전이 본문과 일치한다. ajv@8.20.0이 여전히 fast-uri ^3.0.1을 요구해도 override가 위를 덮는 구조라 정상이다.
#3314 - 같은 diff의 포크 원본이 아직 OPEN이다. 이 PR이 머지되면 Landed via #3346 at <commit> + landed-via-maintainer로 닫는 게 기존 leftover 정리 규칙이다.
.github/workflows/release.yml audit:high 단계 - 이 PR 자체는 워크플로를 안 바꾸지만, 머지 직후 preview/main 재시도 전에 dev에서 bun run audit:high 한 번 더 확인하는 게 릴리스 열차 비용을 줄인다.

메인테이너의 판단이 필요한 지점

  • #3346을 먼저 머지한 뒤 #3314를 landed-via로 닫을지(추천), 아니면 포크 쪽 readiness를 억지로 살릴지
  • override를 caret(^3.1.7 / ^6.16.0)으로 둘지, 릴리스 열차 동안만 정확 핀(3.1.7 / 6.16.0)으로 굳힐지
  • 이 PR 머지 직후 v2.41.0-preview를 바로 재시도할지, test(semver): measure the ReDoS guard as best-of-N, not one sample #3345(ReDoS 가드 best-of-N) 등 다른 승격 블로커와 묶을지

너의 추천
CI(특히 audit:high를 타는 경로와 test shards)가 초록이면 바로 머지한다. 범위가 overrides+lock뿐이고, 오늘 preview 배포를 실제로 막은 고위험 네 건을 푸는 열쇠다. 머지 커밋 SHA로 #3314에 landed-via 댓글을 남기고 라벨 붙여 닫고, #3313은 Closes로 같이 닫히게 두면 된다. 그다음 dev에서 bun run audit:high 확인 후 muse_release_train preview 재시도로 이어가면 된다.

이 댓글은 grok-bot이 작성했습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant