nanoid: custom generators can loop indefinitely when size is zero
Published 29 Jul 2026 · Updated 10 Sept 2026
Affected packages
- Affected
- <3.3.18
- Fixed in
- 3.3.18
npm install nanoid@3.3.18- Affected
- >=4.0.0 <5.1.6
- Fixed in
- 5.1.6
npm install nanoid@5.1.6Details
nanoid (Nano ID) before 5.1.6 contains an infinite loop in the customAlphabet and customRandom functions. When these functions are configured with a size of 0, the internal generation loop never satisfies its exit condition and spins indefinitely, hanging the calling thread. An application that passes an unvalidated, attacker-controlled size of 0 to these functions is exposed to a denial-of-service condition.
Is GHSA-2v37-7h3g-55p8 in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected nanoid, and gives you the command that fixes it.
References
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-67213
- Linkgithub.com/ai/nanoid/commit/cb3626d0f3342fdf179cd425fd9c4fbb92c7d0e7
- Linkgithub.com/ai/nanoid/commit/e10f8d40ce9d1ab47f66d65a16b48086432730d0
- Linkgithub.com/ai/nanoid/commit/f9d13f150847d117877adee3460a46eceb0cf49b
- Packagegithub.com/ai/nanoid
- Linkgithub.com/ai/nanoid/releases/tag/3.3.17
- Linkgithub.com/ai/nanoid/releases/tag/3.3.18
- Linkgithub.com/ai/nanoid/releases/tag/5.1.6
- Linkwww.vulncheck.com/advisories/nanoid-before-infinite-loop-via-zero-size-in-customalphabet-and-customrandom
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.