Skip to content

fix(security): patch 4 fast-uri CVEs and stop tag interpolation in release.yml - #47

Merged
imran-siddique merged 1 commit into
mainfrom
sec/fast-uri-cve-sweep
Sep 5, 2026
Merged

fix(security): patch 4 fast-uri CVEs and stop tag interpolation in release.yml#47
imran-siddique merged 1 commit into
mainfrom
sec/fast-uri-cve-sweep

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

Part of a proactive security sweep across agentrust-io.

fast-uri: 4 high-severity CVEs

packages/typescript pinned fast-uri 3.1.5 transitively through ajv. All four open Dependabot alerts on this repo are that one package:

Advisory Class
GHSA-f65p-4m7j-42xc SSRF via malformed IPv6 normalization
GHSA-fph4-wmhf-6fwf SSRF via repeated hostname percent-decoding
GHSA-5jgf-p345-68v8 Host confusion via skipped IDN canonicalization
GHSA-jqff-g426-hqxp Host confusion via percent-encoded scheme normalization

Lockfile moves to 3.1.7, past the 3.1.6 fix line for all four. npm audit goes from 1 high to zero. Lockfile-only, no package.json change, no API surface touched.

release.yml tag interpolation

Two run: blocks substituted github.event.release.tag_name directly into the shell. ${{ }} expands before the shell parses the line, so the tag name is shell input rather than an argument. Both now pass it through env:. Same for github.repository on the upload line.

This one is defence in depth, not a live hole: creating a release already requires write access. It removes the primitive.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t

…lease.yml

fast-uri 3.1.5 is vulnerable to four high-severity advisories reachable
through the ajv chain in packages/typescript. Two are SSRF via malformed
IPv6 normalization (GHSA-f65p-4m7j-42xc) and repeated hostname
percent-decoding (GHSA-fph4-wmhf-6fwf); two are host confusion via
skipped IDN canonicalization (GHSA-5jgf-p345-68v8) and percent-encoded
scheme normalization (GHSA-jqff-g426-hqxp). Lockfile moves to 3.1.7,
which is past the 3.1.6 fix for all four. npm audit now reports zero.

release.yml also substituted github.event.release.tag_name directly into
two run: blocks. ${{ }} expansion happens before the shell parses the
line, so a crafted tag name is shell input, not an argument. Both now
pass the value through env.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XbDBXDWWvMFa7c2jGgyq9t
@imran-siddique
imran-siddique merged commit cc7d2d3 into main Sep 5, 2026
8 checks passed
@imran-siddique
imran-siddique deleted the sec/fast-uri-cve-sweep branch September 5, 2026 21:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant