HighGHSA-28wg-ghj8-5hjvCVE-2026-67214

nanoid: non-secure generators can loop indefinitely with negative size

Published 29 Jul 2026 · Updated 10 Sept 2026

Affected packages

Affected
<3.3.16
Fixed in
3.3.16
Update to the fixed version for your release line, for example:npm install nanoid@3.3.16
Affected
>=4.0.0 <5.1.16
Fixed in
5.1.16
Update to the fixed version for your release line, for example:npm install nanoid@5.1.16

Details

nanoid (Nano ID) before 5.1.16 contains an infinite loop in the customAlphabet and nanoid functions of its non-secure module (nanoid/non-secure). When these functions are given a negative size, the loop counter is decremented from a negative value and never reaches its termination condition, spinning indefinitely and hanging the calling thread. An application that passes an unvalidated, attacker-controlled negative size to these functions is exposed to a denial-of-service condition.

Is GHSA-28wg-ghj8-5hjv 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

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.