Skip to content

Move fast-uri to 3.1.7, clearing the audit gate - #140

Merged
gvonnessi merged 1 commit into
mainfrom
fix/135-fast-uri
Sep 5, 2026
Merged

gvonnessi merged 1 commit into
mainfrom
fix/135-fast-uri

Conversation

@gvonnessi

Copy link
Copy Markdown
Collaborator

Closes #135.

npm audit --audit-level=high is a CI step and has been red on every branch with no repository change behind it — the third time it has gone red on a new fast-uri advisory.

It is a lockfile move, not a dependency bump

ajv@8.20.0 declares "fast-uri": "^3.0.1", and 3.1.7 is published — above the vulnerable 3.0.0 - 3.1.5 range and inside that caret. The lockfile simply pinned 3.1.5. package.json is untouched, and ajv@latest is still 8.20.0, so there is no ajv release to move to.

npm audit fix did not take it. npm update fast-uri does. The entire diff:

-      "version": "3.1.5",
+      "version": "3.1.7",

plus its resolved and integrity lines. Three lines.

Verified, not assumed

ajv validates every schema, fixture and example in this repository, so a resolution change is not free. The full CI gate list was re-run under the new resolution:

  • 32/32 gates pass — tsc, npm test, test:canonicalize, test:document-verdict, test:container-reader, every check:*, and generate:template --preset all.
  • npm audit --audit-level=high now reports 0 vulnerabilities.

On severity

Practical exposure here was low in either direction, and the issue says so rather than overselling it: fast-uri is reached only through ajv's format: "uri" handling of this repository's own committed schemas. There is no runtime — the package ships spec/, schemas/ and conformance/ — and the advisories concern a consumer that resolves the parsed URI, which nothing here does.

The reason to fix it is that a permanently red CI step trains everyone to ignore CI. It was about to mask the audit result on #139 and on everything after it.

`npm audit --audit-level=high` is a CI step and has been red on every branch,
with no repository change behind it. Four high advisories against fast-uri
3.0.0-3.1.5, reached through the direct devDependency `ajv`:

  GHSA-5jgf-p345-68v8  host confusion via skipped IDN canonicalization
  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

This is a lockfile move inside an already-satisfied range, not a dependency
bump: ajv@8.20.0 declares `"fast-uri": "^3.0.1"` and 3.1.7 is published, above
the vulnerable range and inside that caret. `package.json` is untouched and
`ajv@latest` is still 8.20.0, so there is no ajv release to move to. `npm
audit fix` did not take it; `npm update fast-uri` does.

ajv validates every schema, fixture and example here, so the resolution change
was not assumed free: the whole CI gate list was re-run under it. All 32 gates
pass, and `npm audit --audit-level=high` now reports 0 vulnerabilities.

Practical exposure was low either way — fast-uri is reached only through ajv's
`format: "uri"` handling of this repository's own committed schemas, and the
advisories concern a consumer that resolves the parsed URI, which nothing here
does. The reason to fix it is that a permanently red CI step trains everyone
to ignore CI.

Closes #135.
@gvonnessi
gvonnessi merged commit 43f7f26 into main Sep 5, 2026
2 checks passed
@gvonnessi
gvonnessi deleted the fix/135-fast-uri branch September 5, 2026 00:34
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.

CI: npm audit --audit-level=high red on four fast-uri advisories; the lockfile pins 3.1.5 while ajv permits 3.1.7

1 participant