Skip to content

[Bug]: 6 vulnerabilities found in bun audit via transitive dependencies (fast-uri, qs) #3313

Description

@agentHits

Client or integration

Codex App

Area

Installation or packaging

Summary

Running bun audit on the dev branch reports 6 vulnerabilities (4 High, 2 Moderate) coming from transitive dependencies of @modelcontextprotocol/sdk:

  1. fast-uri (High):
  • GHSA-5jgf-p345-68v8: Host confusion via skipped IDN canonicalization on scheme-relative references
  • GHSA-f65p-4m7j-42xc: SSRF via malformed IPv6 normalization
  • GHSA-fph4-wmhf-6fwf: SSRF via repeated hostname percent-decoding
  • GHSA-jqff-g426-hqxp: Host confusion via percent-encoded scheme normalization
    Current lockfile resolves to fast-uri@3.1.4 (due to "fast-uri": "^3.1.5" in overrides). Fixed in >=3.1.6.
  1. qs (Moderate):
  • GHSA-x5fp-wj9c-mxmx: qs array-limit bypass via bracket-key comma parsing
  • GHSA-4mjr-xmp4-gh2g: Denial of Service via Attacker Controlled isBuffer
    Current lockfile resolves to qs@6.14.2 via @modelcontextprotocol/sdk -> express -> body-parser -> qs. Fixed in >=6.15.4 / 6.16.0.

Reproduction

  1. Check out the latest dev branch: git checkout dev
  2. Run package manager audit: bun audit
  3. Observe 6 vulnerabilities reported (4 high in fast-uri, 2 moderate in qs).

Suggested remediation in package.json overrides:

"overrides": {
  "@hono/node-server": "2.1.0",
  "fast-uri": "^3.1.7",
  "hono": "4.13.1",
  "ip-address": "^10.4.0",
  "qs": "^6.16.0"
}

Version

2.41.0 (dev commit af314b0)

Operating system

macOS 15.5

Logs or error output

qs  >=6.14.2 <=6.15.3
  @modelcontextprotocol/sdk › express › body-parser › qs
  moderate: qs array-limit bypass via bracket-key comma parsing - https://github.com/advisories/GHSA-x5fp-wj9c-mxmx
  moderate: qs: Denial of Service via Attacker Controlled isBuffer - https://github.com/advisories/GHSA-4mjr-xmp4-gh2g

fast-uri  >=3.1.3 <3.1.6
  @modelcontextprotocol/sdk › ajv › fast-uri
  high: fast-uri vulnerable to host confusion via skipped IDN canonicalization on scheme-relative references - https://github.com/advisories/GHSA-5jgf-p345-68v8
  high: fast-uri vulnerable to server-side request forgery via malformed IPv6 normalization - https://github.com/advisories/GHSA-f65p-4m7j-42xc
  high: fast-uri vulnerable to server-side request forgery via repeated hostname percent-decoding - https://github.com/advisories/GHSA-fph4-wmhf-6fwf
  high: fast-uri vulnerable to host confusion via percent-encoded scheme normalization - https://github.com/advisories/GHSA-jqff-g426-hqxp

6 vulnerabilities (4 high, 2 moderate)

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Activity

  1. lidge-jun commented on Sep 2, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 62 / 80

    설명
    이 이슈는 지금 dev(HEAD af314b0a7, package 2.41.0)에서 bun audit를 돌리면 취약점 6건(High 4, Moderate 2)이 나온다는 제보입니다. 직접 의존성이 아니라 @modelcontextprotocol/sdk@1.30.0 아래로 들어오는 전이 패키지입니다. High 네 건은 ajv → fast-uri 경로이고, Moderate 두 건은 express → body-parser → qs 경로입니다. 이슈 본문의 재현 명령과 advisory 링크를 같은 checkout에서 다시 돌려 보면, 지금 lock도 fast-uri@3.1.5와 qs@6.15.3으로 잡혀 있고 bun audit 결과도 6건 그대로입니다. 제보의 버전 줄(af314b0)과 HEAD가 같습니다.

    package.json의 overrides를 보면 이미 "fast-uri": "^3.1.5"가 있습니다. 예전에 올려 둔 핀인데, 고정 하한이 취약 구간 안(>=3.1.3 <3.1.6)에 있어서 lock이 3.1.5로 멈춥니다. 고친 버전은 >=3.1.6이고, 이슈가 제안한 ^3.1.7이면 그 위로 올라갑니다. qs는 overrides에 아예 없습니다. lock은 6.15.3이고, advisory는 array-limit bypass가 >=6.14.2 <=6.15.3, DoS는 <6.16.0이라 ^6.16.0(또는 고정 6.16.0)이 필요합니다. @hono/node-server 2.1.0, hono 4.13.1, ip-address ^10.4.0 같은 기존 override는 이 이슈와 무관하니 건드리지 않는 게 맞습니다.

    영향 범위는 “앱이 지금 바로 뚫린다”보다 “감사/릴리스 위생이 빨간불”에 가깝습니다. fast-uri는 MCP SDK가 JSON Schema 검증용 ajv를 쓸 때 URI를 다루는 쪽이고, qs는 express body-parser가 쿼리/폼을 파싱할 때 씁니다. OpenCodex가 MCP SDK를 게이트웨이·툴 경로에 묶고 있으므로, 외부에서 넘어오는 URI·쿼리 입력이 있으면 advisory가 말하는 host confusion / SSRF / array-limit / isBuffer DoS가 이론상 닿을 수 있습니다. 그래도 제품 기능 회귀를 고치는 버그픽스라기보다, overrides + lock 재생성으로 끝내는 짧은 보안 패치 열차입니다. types.ts/config.ts 분할과도 무관하고, 지금 dev tip의 Cursor/Kiro/release 열차와도 파일이 겹치지 않습니다.

    고치는 방법은 이슈가 이미 적어 둔 그대로가 가장 싸습니다. package.json overrides에서 fast-uri를 ^3.1.7(최소 ^3.1.6)로 올리고, qs를 ^6.16.0으로 추가한 뒤 bun install로 bun.lock을 다시 만들고 bun audit가 0건이 되는지 확인하면 됩니다. SDK 메이저 업은 이 이슈 범위가 아닙니다. bun audit fix만 돌리면 override 의도(hono 핀 등)와 어긋날 수 있으니, 손으로 overrides를 고치고 lock만 맞추는 PR이 안전합니다. 테스트는 새 유닛이 거의 필요 없고, 기존 CI + audit 클린 출력이 충분합니다. 같은 내용의 열린 PR은 지금 스캔 기준으로 없습니다.

    우선순위 62는 “싸게 닫을 수 있는 감사 빨간불” 기준입니다. 사용자 대면 기능 장애(#3305 카탈로그 타임아웃 같은 것)보다 낮고, 릴리스 노트에 남기기 좋은 위생 패치보다는 높습니다. 2.41.0 라인에 바로 올려도 되고, preview 태그 전에만 넣어도 됩니다. 다만 overrides를 방치하면 다음 bun audit·의존성 봇·보안 스캔이 같은 6건을 계속 울립니다.

    package.json overrides - fast-uri가 지금 ^3.1.5라 lock이 취약 3.1.5에 고정된다. ^3.1.7(또는 최소 ^3.1.6)로 올려야 한다
    package.json overrides - qs 항목이 없다. ^6.16.0을 추가해야 GHSA-x5fp-wj9c-mxmx / GHSA-4mjr-xmp4-gh2g가 사라진다
    bun.lock fast-uri@3.1.5 - @modelcontextprotocol/sdk → ajv → fast-uri 경로. High 4건의 실제 해석 버전이다
    bun.lock qs@6.15.3 - @modelcontextprotocol/sdk → express → body-parser → qs 경로. Moderate 2건의 실제 해석 버전이다
    경로 @modelcontextprotocol/sdk@1.30.0 - 직접 의존성은 유지하고 overrides만 올리는 편이 안전하다. SDK 메이저 업은 이 이슈에 태우지 말 것

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

    • overrides만 올린 작은 PR로 바로 머지할지, 아니면 MCP SDK 업그레이드 열차에 묶어 한 번에 정리할지
    • fast-uri/qs를 ^로 둘지, 패치 버전을 고정(3.1.7, 6.16.0)할지
    • 2.41.0 안정 라인에 바로 넣을지, 다음 preview 전에만 넣을지

    너의 추천
    overrides에 fast-uri를 ^3.1.7로 올리고 qs ^6.16.0을 추가한 뒤 lock을 재생성해 bun audit 0건을 확인하는 PR을 열고 이 이슈를 그 PR로 닫으세요. SDK 업그레이드나 hono 핀 변경은 이 열차에 넣지 마세요.

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

  2. lidge-jun commented on Sep 3, 2026

    @lidge-jun
    Owner

    Fixed on dev by 2b5a38a (#3346), carrying @agentHits's overrides from #3314 with a Co-authored-by trailer. bun run audit:high is clean at both levels: 143 packages root, 81 GUI, no vulnerabilities. It ships in v2.41.0.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinginstallInstallation or packaging

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions