Skip to content

chore(deps): bump transitive nanoid to 3.3.18 (GHSA-2v37-7h3g-55p8) - #431

Merged
JosephSamirL merged 1 commit into
mainfrom
chore/bump-nanoid-3.3.18
Aug 24, 2026
Merged

chore(deps): bump transitive nanoid to 3.3.18 (GHSA-2v37-7h3g-55p8)#431
JosephSamirL merged 1 commit into
mainfrom
chore/bump-nanoid-3.3.18

Conversation

@abbaseya

Copy link
Copy Markdown
Collaborator

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, customAlphabet and customRandom never satisfy their loop exit condition when called with size: 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 (legacy dist-tag).

No package.json change and no resolutions pin. 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 and ^3.3.17), so re-resolving the single lockfile entry is the whole fix. Produced with yarn up -R nanoid.

Blast radius

None on anything we publish. yarn why postcss shows 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.yml reproduced command-for-command, including its job-level env so the live and live-secret integration 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).
  • The nine packages qa.yml does not cover, run as well: 377 passing, 0 failing.
  • Cross-SDK parity, asserted against JS as a consumer: 23 contract-conformance tests plus 60 golden-vector, 9 mutual-exclusion-fixture and 2 UMD-bundle parity tests, both completeness guards firing. The shared anchored vector set is byte-identical to the published v12 copy (sha256 9993d0e6…).
  • One nanoid copy on disk, at 3.3.18; yarn why nanoid shows all three postcss dependents resolving to it.
  • Dependabot has no other open alert on this repo.

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:

  1. Root yarn lint cannot pass. It exits 1 with 1,676 prettier/prettier errors in packages/types/src/config/index.ts and the generated types.gen.ts. Both files are byte-identical to main, and qa.yml only lints packages/js-sdk, so CI never sees it.
  2. yarn build mutates a tracked source file. generate-rollup-config.mjs writes packages/js-sdk/package.json on every build, rewriting peerDependencies to current workspace versions and dropping the trailing newline. main has the stale >=2.x ranges committed, so any local build leaves a 24-line dirty diff nobody asked for.

🤖 Generated with Claude Code

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>
@abbaseya abbaseya self-assigned this Aug 24, 2026
@abbaseya
abbaseya requested a review from JosephSamirL August 24, 2026 12:29
@sonarqubecloud

Copy link
Copy Markdown

@JosephSamirL JosephSamirL left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved via /convert:approve. An independent code review ran through /convert:review, and this issues the B-G4 human marker at 36ee225.

@JosephSamirL
JosephSamirL merged commit e94d164 into main Aug 24, 2026
6 checks passed
@JosephSamirL
JosephSamirL deleted the chore/bump-nanoid-3.3.18 branch August 24, 2026 13:36
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.

2 participants