Lookup for vulnerable packages by Package URL.
| Purl | pkg:npm/%40keystone-6/core@0.0.0-rc-20240429035832 |
| Type | npm |
| Namespace | @keystone-6 |
| Name | core |
| Version | 0.0.0-rc-20240429035832 |
| Qualifiers |
|
| Subpath | |
| Is_vulnerable | true |
| Next_non_vulnerable_version | 6.5.2 |
| Latest_non_vulnerable_version | 6.5.2 |
| Affected_by_vulnerabilities |
| 0 |
| url |
VCID-5kdx-3r3z-nye2 |
| vulnerability_id |
VCID-5kdx-3r3z-nye2 |
| summary |
@keystone-6/core: `isFilterable` bypass via `cursor` parameter in findMany (CVE-2025-46720 incomplete fix)
# Summary
`{field}.isFilterable` access control can be bypassed in `findMany` queries by passing a `cursor`. This can be used to confirm the existence of records by protected field values.
The fix for [CVE-2025-46720](https://github.com/keystonejs/keystone/security/advisories/GHSA-hg9m-67mm-7pg3) (field-level `isFilterable` bypass for update and delete mutations) added checks to the `where` parameter in `update` and `delete` mutations however the `cursor` parameter in `findMany` was not patched and accepts the same `UniqueWhere` input type.
# Impact
This affects any project relying on `isFilterable` behaviour (at the list or field level) to prevent external users from using the filtering of fields as a discovery mechanism. `isFilterable` access control using a function can be bypassed by using the `cursor` input.
This has no impact on projects using `isFilterable: false` or `defaultIsFilterable: false` for sensitive fields, or if you have otherwise omitted filtering by these fields from your GraphQL schema. (See workarounds)
# Patches
This issue has been patched in `@keystone-6/core` version 6.5.2.
# Workarounds
To mitigate this issue in older versions where patching is not a viable pathway.
- Set `{field}.isFilterable: false` statically for relevant fields to prevent filtering by them earlier in the access control pipeline (that is, don't use functions)
- Set `{field}.graphql.omit.read: true` for relevant fields, which implicitly removes filtering by these fields your GraphQL schema |
| references |
| 0 |
| reference_url |
https://api.first.org/data/v1/epss?cve=CVE-2026-33326 |
| reference_id |
|
| reference_type |
|
| scores |
| 0 |
| value |
0.00013 |
| scoring_system |
epss |
| scoring_elements |
0.02293 |
| published_at |
2026-06-06T12:55:00Z |
|
| 1 |
| value |
0.00013 |
| scoring_system |
epss |
| scoring_elements |
0.02245 |
| published_at |
2026-06-08T12:55:00Z |
|
| 2 |
| value |
0.00013 |
| scoring_system |
epss |
| scoring_elements |
0.02261 |
| published_at |
2026-06-07T12:55:00Z |
|
| 3 |
| value |
0.00013 |
| scoring_system |
epss |
| scoring_elements |
0.02287 |
| published_at |
2026-06-05T12:55:00Z |
|
|
| url |
https://api.first.org/data/v1/epss?cve=CVE-2026-33326 |
|
| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
|
| fixed_packages |
|
| aliases |
CVE-2026-33326, GHSA-cgcg-q9jh-5pr2
|
| risk_score |
3.1 |
| exploitability |
0.5 |
| weighted_severity |
6.2 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-5kdx-3r3z-nye2 |
|
| 1 |
| url |
VCID-gxmq-8d4q-xqdm |
| vulnerability_id |
VCID-gxmq-8d4q-xqdm |
| summary |
Keystone has an unintended `isFilterable` bypass that can be used as an oracle to match hidden fields
`{field}.isFilterable` access control can be bypassed in `update` and `delete` mutations by adding additional unique filters. These filters can be used as an oracle to probe the existence or value of otherwise unreadable fields.
Specifically, when a mutation includes a `where` clause with multiple unique filters (e.g. `id` and `email`), Keystone will attempt to match records even if filtering by the latter fields would normally be rejected by `field.isFilterable` or `list.defaultIsFilterable`. This can allow malicious actors to infer the presence of a particular field value when a filter is successful in returning a result. |
| references |
| 0 |
| reference_url |
https://api.first.org/data/v1/epss?cve=CVE-2025-46720 |
| reference_id |
|
| reference_type |
|
| scores |
| 0 |
| value |
0.00062 |
| scoring_system |
epss |
| scoring_elements |
0.19561 |
| published_at |
2026-06-05T12:55:00Z |
|
| 1 |
| value |
0.00062 |
| scoring_system |
epss |
| scoring_elements |
0.19444 |
| published_at |
2026-06-08T12:55:00Z |
|
| 2 |
| value |
0.00062 |
| scoring_system |
epss |
| scoring_elements |
0.19513 |
| published_at |
2026-06-07T12:55:00Z |
|
| 3 |
| value |
0.00062 |
| scoring_system |
epss |
| scoring_elements |
0.19556 |
| published_at |
2026-06-06T12:55:00Z |
|
|
| url |
https://api.first.org/data/v1/epss?cve=CVE-2025-46720 |
|
| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
|
| fixed_packages |
|
| aliases |
CVE-2025-46720, GHSA-hg9m-67mm-7pg3
|
| risk_score |
1.4 |
| exploitability |
0.5 |
| weighted_severity |
2.8 |
| resource_url |
http://public2.vulnerablecode.io/vulnerabilities/VCID-gxmq-8d4q-xqdm |
|
|
| Fixing_vulnerabilities |
|
| Risk_score | 3.1 |
| Resource_url | http://public2.vulnerablecode.io/packages/pkg:npm/%2540keystone-6/core@0.0.0-rc-20240429035832 |