Skip to content

(janitor/dependencies): patch fast-uri normalization vulnerabilities - #8890

Open
kilo-code-bot[bot] wants to merge 1 commit into
mainfrom
kilo/able-jaguar-h1i
Open

kilo-code-bot[bot] wants to merge 1 commit into
mainfrom
kilo/able-jaguar-h1i

Conversation

@kilo-code-bot

@kilo-code-bot kilo-code-bot Bot commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Changes by use

Shared JSON-schema URI resolution (MCP runtime and build/CLI tooling): bump the existing exact fast-uri override 3.1.8 → 3.1.9 and regenerate pnpm-lock.yaml with pinned pnpm 11.1.2. One PR because all consumers share this override and lockfile. No unrelated package changes.

fast-uri is not directly declared or catalogued. Its only installed parent is ajv@8.20.0 (fast-uri: ^3.0.1). Paths include MCP SDK → extension/harness/OpenClaw, EAS CLI, Vercel static-config and webpack/schema-utils/addons-linter tooling. Existing AJV override remains unchanged. Node 24.22.1 satisfies repository >=24 <25; fast-uri declares no engine or peers. Same-major patch, no export/API migration. 3.1.9 is the smallest version on the installed major outside every applicable advisory range; 2.4.8 would downgrade the parent out of range and 4.2.3 would require a major override.

3.1.9 was published 2026-10-19T23:05:26.357Z and clears the 6842-minute release-age window. Policy, exclusions, catalog, other pins, and patches are unchanged. No lockfile entries were hand-edited.

Complete open-alert inventory

Enumerated every open alert using paginated REST (explicit per_page=2 verified four pages, seven alerts). All affect pnpm-lock.yaml. No alerts dismissed; GitHub closes addressed alerts only after scanning merged main.

Exact alert URL Package Severity Vulnerable range First fixed Disposition
https://github.com/Kilo-Org/cloud/security/dependabot/597 fast-uri medium >=3.0.0 <3.1.9 3.1.9 Addressed
https://github.com/Kilo-Org/cloud/security/dependabot/596 fast-uri low >=3.0.0 <3.1.9 3.1.9 Addressed by same update
https://github.com/Kilo-Org/cloud/security/dependabot/595 fast-uri medium >=3.1.3 <3.1.9 3.1.9 Addressed
https://github.com/Kilo-Org/cloud/security/dependabot/594 fast-uri low >=3.0.0 <3.1.9 3.1.9 Addressed by same update
https://github.com/Kilo-Org/cloud/security/dependabot/593 body-parser 2.3.0 high >=2.0.0 <2.4.0 2.4.0 Deferred: published Oct 22 11:39 UTC, still inside unchanged release-age policy (eligible Oct 27 05:41 UTC). No exception added. Existing global 2.3.0 override via Express remains; 1.20.9 also newly published and not compatible with Express 5's major.
https://github.com/Kilo-Org/cloud/security/dependabot/591 ts-deepmerge 6.2.0 medium <8.0.0 8.0.0 Deferred: EAS CLI 24.13.0 exact-pins 6.2.0 and build/commandUtils/new/projectFiles.js uses its default export. v7 removed that export; overriding to v8 breaks eas project:new. Latest EAS 25.3.0 still pins 6.2.0 with the same import. Needs upstream migration or a separately reviewed EAS patch, not an unsafe major override. Only mobile dev tooling; no runtime app dependency.
https://github.com/Kilo-Org/cloud/security/dependabot/467 node-forge 1.4.0 high <=1.4.0 None No published fixed version; npm latest remains 1.4.0. Preserve intentional override used by Expo signing/adbkit tooling; not claimed fixed.

Alternate fast-uri affected lines (<2.4.8, >=4.0.0 <4.2.3; host-confusion starts at 2.4.2/4.0.1) have no installed copies. Complete lockfile review confirms only 3.1.9 remains.

Checked all open PRs with pagination, matching titles/bodies against packages and alert URLs. No existing PR addresses the new fast-uri/body-parser/ts-deepmerge alerts. #8745/#8547/#8393/#7327/#7083 cover earlier findings and mention unresolved node-forge, not these fast-uri fixes.

Validation

All commands from /workspace/app, Node 24.22.1, pnpm 11.1.2, bounded to 210s. PostgreSQL/Redis were not started.

Exact command Result
git fetch origin main Initial main 02992e9; final refresh 44dc837. Incoming mobile localization patch touches different sections of shared YAML; no conflict with the fast-uri hunks. No history rewrite or merge required.
gh api --paginate 'repos/Kilo-Org/cloud/dependabot/alerts?state=open&per_page=2' All seven alerts enumerated over four pages
gh api --paginate 'repos/Kilo-Org/cloud/pulls?state=open&per_page=100' All open PR descriptions checked for existing fixes
pnpm view ajv@8.20.0 dependencies engines peerDependencies --json fast-uri ^3.0.1 allows 3.1.9
pnpm why -r fast-uri Traced AJV consumers (run before frozen install, so installed graph initially reported 3.1.8)
NODE_OPTIONS=--max-old-space-size=4096 pnpm install --lockfile-only PASS; transient registry resets retried successfully; peer warnings reported. Full diff: only fast-uri override, package integrity, AJV reference and snapshot changed.
NODE_OPTIONS=--max-old-space-size=4096 pnpm install --frozen-lockfile PASS, resolution skipped; prepare and WXT postinstall succeeded. Rollup emitted unresolved-external and unused-import warnings.
pnpm --filter kilo-extension verify PASS: typecheck including tRPC build, strict type-aware lint, format check; 102 files / 1652 tests passed
pnpm format pnpm-workspace.yaml pnpm-lock.yaml PASS; generated lockfile excluded by formatter
pnpm exec oxfmt --list-different pnpm-workspace.yaml PASS
git diff --check PASS

Exact additional smoke/audit commands (both PASS):

node -e 'const a=require("node:assert/strict"),{createRequire}=require("node:module"),r=createRequire(process.cwd()+"/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/package.json"),u=r("fast-uri"),Ajv=r("ajv"); a.equal(r("fast-uri/package.json").version,"3.1.9"); for(const x of ["%6Aavascript:alert(1)","%u006Aavascript:alert(1)"]) a.notEqual(u.parse(x).scheme,"javascript"); a.equal(u.equal("%68ttp://a/","http://a/"),false); for(const x of ["http://a@b@evil.example/","http://ex\tample.com/","http://ex\rample.com/","http://ex\nample.com/"]) a.ok(u.parse(x).error); a.equal(u.normalize("../x"),"../x"); a.equal(u.resolve("https://example.com/a/","../x"),"https://example.com/x"); const ajv=new Ajv(); ajv.addSchema({$id:"https://example.com/schemas/value.json",type:"string",minLength:1}); const v=ajv.compile({$id:"https://example.com/schemas/root.json",type:"object",properties:{value:{$ref:"value.json"}},required:["value"],additionalProperties:false}); a.equal(v({value:"ok"}),true); a.equal(v({value:""}),false); a.equal(v({value:123}),false); console.log("PASS: patched URI security regressions and AJV relative refs/validation");'
node -e 'const a=require("node:assert/strict"),fs=require("node:fs"),cp=require("node:child_process"),yaml=require("js-yaml"),s=fs.readFileSync("pnpm-lock.yaml","utf8"),lock=yaml.load(s),base=yaml.load(cp.execFileSync("git",["show","origin/main:pnpm-lock.yaml"],{encoding:"utf8",maxBuffer:20*1024*1024})); a.deepEqual(Object.keys(lock.packages).filter(x=>x.startsWith("fast-uri@")),["fast-uri@3.1.9"]); a.equal(s.includes("fast-uri: 3.1.8"),false); a.deepEqual(Object.keys(lock.packages).filter(x=>!base.packages[x]),["fast-uri@3.1.9"]); a.deepEqual(Object.keys(base.packages).filter(x=>!lock.packages[x]),["fast-uri@3.1.8"]); a.deepEqual(lock.patchedDependencies,base.patchedDependencies); for(const f of ["pnpm-workspace.yaml","pnpm-lock.yaml"]) a.equal(/^([<]{7}|={7}|[>]{7})/m.test(fs.readFileSync(f,"utf8")),false); console.log("PASS: only fast-uri changed, no vulnerable version, patches preserved, no conflict markers");'

Audit passed against initial fetched main before final refresh; first attempt hit execFileSync's default output-buffer limit, corrected with maxBuffer above. Latest-main patch/lockfile difference was inspected separately and is unrelated to these hunks.

Not verified: PostgreSQL/Redis-dependent integration/E2E, live MCP/CLI services, browser/native E2E, full-repository checks or production builds. This is a narrowly scoped patch with real AJV smoke coverage and extension validation, not full-system verification. Ready for review; auto-merge requested subject to approval and required checks.

@kilo-code-bot kilo-code-bot Bot added the janitor Automated dead-code/duplication cleanup label Oct 25, 2026
@kilo-code-bot
kilo-code-bot Bot enabled auto-merge October 25, 2026 05:15
@kilo-code-bot

kilo-code-bot Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor Author

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The change is a narrow, internally consistent dependency bump: fast-uri 3.1.8 → 3.1.9 is applied identically to the workspace override and the generated lockfile, with no stale 3.1.8 entries and no other consumers affected.

Assumptions: [INFERENCE] The 3.1.9 tarball integrity hash and the advisory fix ranges were not independently verifiable offline; they rely on the PR's documented --frozen-lockfile install and the referenced Dependabot alerts. The minimumReleaseAge: 6842 window is respected per the PR's publication timestamp.

Files Reviewed (2 files)
  • pnpm-workspace.yaml - verified override value updated; release-age policy unaffected
  • pnpm-lock.yaml - verified override entry, packages resolution, ajv@8.20.0 dependency reference, and snapshots entry all moved to 3.1.9 with no remaining 3.1.8 references

Reviewed by deepseek-flash-latest · Input: 31.1K · Output: 4.5K · Cached: 367.9K

Review guidance: REVIEW.md from base branch main

This branch has not been deployed

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

Labels

janitor Automated dead-code/duplication cleanup

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants