Summary
The cuid package used by @keystone-6/* and upstream dependencies is deprecated and marked as insecure by the author.
As reported by the author
Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.
What are doing about this?
- We are waiting on Prisma to add support for
cuid2 - Alternatively, we might default to a random string ourselves
What can I do about this?
We have added a work-around for users who want to provide custom identifiers in https://github.com/keystonejs/keystone/pull/8645
What if I need a cuid?
The features marked as a security vulnerability by @paralleldrive are sometimes actually needed (as written in the README of cuid) - the problem is the inherent risks that features like this can have.
You might actually want the features of a monotonically increasing (auto-increment, k-sortable), and timestamp-based id as part of your application, and keystone should support that - but you might not want them by default.
This is why this security advisory has been accepted by me (@dcousens), we currently use cuid identifiers by default, and that should change.
Impact
I have accepted this security advisory on the basis that we don't need this kind of identifier typically, and the need for them should be driven by an application's requirements, not a convenient default.
Affected versions
Security releases
Kodem intelligence
Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.
Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.
Remediation advice
Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.
Frequently Asked Questions
- What is GHSA-5FP6-4XW3-XQQ3? GHSA-5FP6-4XW3-XQQ3 is a low-severity security vulnerability in @keystone-6/core (npm), affecting versions <= 5.3.1. No fixed version is listed yet.
- Which versions of @keystone-6/core are affected by GHSA-5FP6-4XW3-XQQ3? @keystone-6/core (npm) versions <= 5.3.1 is affected.
- Is there a fix for GHSA-5FP6-4XW3-XQQ3? No fixed version is listed for GHSA-5FP6-4XW3-XQQ3 yet. Monitor the advisory for updates and apply mitigations in the interim.
- Is GHSA-5FP6-4XW3-XQQ3 exploitable, and should I be worried? Whether GHSA-5FP6-4XW3-XQQ3 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
- What actually determines whether GHSA-5FP6-4XW3-XQQ3 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.