chore(deps): bump transitive nanoid to 3.3.18 (GHSA-2v37-7h3g-55p8) - #431
Merged
Conversation
nanoid 3.3.17 is vulnerable to CVE-2026-67213 (high): customAlphabet and customRandom loop indefinitely when called with size 0, hanging the calling thread. Patched in 3.3.18, which is the highest 3.x release. nanoid enters the tree only as a transitive dependency of postcss, and all three postcss copies already ask for a range that admits the patched version (^3.3.16 / ^3.3.17), so re-resolving the lockfile entry is the whole fix — no resolutions pin needed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
JosephSamirL
approved these changes
Aug 24, 2026
JosephSamirL
left a comment
Contributor
There was a problem hiding this comment.
Approved via /convert:approve. An independent code review ran through /convert:review, and this issues the B-G4 human marker at 36ee225.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Clears the only open Dependabot alert on
main— #458, high severity.The advisory
GHSA-2v37-7h3g-55p8 / CVE-2026-67213: in nanoid before 3.3.18,
customAlphabetandcustomRandomnever satisfy their loop exit condition when called withsize: 0, so the calling thread spins forever. Denial of service for any caller that passes an unvalidated size through.The lockfile had nanoid 3.3.17.
The fix
Three lines in
yarn.lock— nanoid re-resolved from 3.3.17 to 3.3.18, the highest 3.x release (legacydist-tag).No
package.jsonchange and noresolutionspin. nanoid enters the tree only as a transitive dependency of postcss, and all three postcss copies already ask for a range that admits the patched version (^3.3.16and^3.3.17), so re-resolving the single lockfile entry is the whole fix. Produced withyarn up -R nanoid.Blast radius
None on anything we publish.
yarn why postcssshows it reaches the tree exclusively through demo-app build tooling — Next 16, Vite 7, Tailwind,@vue/compiler-sfc— so no@convertcom/js-sdk-*package ships nanoid at any version.Verified
qa.ymlreproduced command-for-command, including its job-level env so theliveandlive-secretintegration modes actually ran rather than silently skipping:yarn install --immutable— passes, so the committed lockfile is complete and CI will not try to rewrite it.packages/js-sdk: lint clean, build clean,169 passing(Mocha),81 passed(Playwright — 17 full-chain tests in each of the three auth modes).qa.ymldoes not cover, run as well: 377 passing, 0 failing.v12copy (sha2569993d0e6…).yarn why nanoidshows all three postcss dependents resolving to it.650 tests, 0 failures, 0 skips.
Two standing issues found while verifying — deliberately not touched here
Neither is caused by this change and both are out of scope for a security bump, but they are worth their own tickets:
yarn lintcannot pass. It exits 1 with 1,676prettier/prettiererrors inpackages/types/src/config/index.tsand the generatedtypes.gen.ts. Both files are byte-identical tomain, andqa.ymlonly lintspackages/js-sdk, so CI never sees it.yarn buildmutates a tracked source file.generate-rollup-config.mjswritespackages/js-sdk/package.jsonon every build, rewritingpeerDependenciesto current workspace versions and dropping the trailing newline.mainhas the stale>=2.xranges committed, so any local build leaves a 24-line dirty diff nobody asked for.🤖 Generated with Claude Code