Vulnerabilities in pkg:npm/@strapi/strapi

PACKAGE
Advisory Identifier: GHSA-rjg2-95x7-8qmx
Advisory Summary

CVE-2026-27886 is a CRITICAL strapi may leak sensitive data vulnerability (CWE-200: Exposure of Sensitive Information to an Unauthorized Actor) affecting @strapi/strapi libraries in the npm ecosystem. The issue involves strapi may leak sensitive data via relational filtering due to lack of query sanitization. Remediation is available by upgrading affected packages to version 5.37.0.

11 Known Advisory Record(s)
Package Vulnerability Intelligence

pkg:npm/@strapi/strapi

11 Known Advisory Record(s)

Vulnerability advisories affecting package pkg:npm/@strapi/strapi. Select an advisory below to view technical details or fixes.

Advisory ID CVE / NVD Severity Summary
GHSA-rjg2-95x7-8qmx CVE-2026-27886 CRITICAL Strapi may leak sensitive data via relational filtering due to lack of query sanitization
GHSA-4r8w-3jww-m2rp CVE-2025-3930 MODERATE Strapi is vulnerable to Insufficient Session Expiration
GHSA-p9ff-j98v-p435 CVE-2024-37818 HIGH Strapi Server-Side Request Forgery (SSRF)
GHSA-4vm8-j95f-j6v5 CVE-2022-32114 MODERATE Strapi 4.1.12 Cross-site Scripting via crafted file
GHSA-gc7p-j5xm-xxh2 CVE-2023-39345 HIGH Unauthorized Access to Private Fields in User Registration API
GHSA-chmr-rg2f-9jmf CVE-2023-34093 MODERATE Making all attributes on a content-type public without noticing it
GHSA-jjqf-j4w7-92w8 CVE-2023-22894 HIGH Strapi leaking sensitive user information by filtering on private fields
GHSA-4phg-hpqm-c3j4 CVE-2022-31367 HIGH Strapi mishandles hidden attributes within admin API responses
GHSA-vgj7-895j-gpr6 CVE-2022-30618 HIGH Improper Removal of Sensitive Information Before Storage or Transfer in Strapi
GHSA-f6fm-r26q-p747 CVE-2022-30617 HIGH Improper Removal of Sensitive Information Before Storage or Transfer in Strapi
GHSA-85vg-grr5-pw42 CVE-2021-46440 HIGH Insecure password handling vulnerability in Strapi

CVE-2026-27886 at a Glance

CVE Identifier CVE-2026-27886
GHSA Identifier GHSA-rjg2-95x7-8qmx
Severity CRITICAL
CVSS v3.1 Base Score N/A
CWE Classification CWE-200: Exposure of Sensitive Information to an Unauthorized Actor
Affected Product @strapi/strapi
Package Ecosystem npm
Published Date
Last Updated

How to Fix CVE-2026-27886

To remediate this vulnerability, upgrade all affected @strapi/strapi dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

@strapi/strapi fixed: 5.37.0
npm install @strapi/strapi@5.37.0
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls @strapi/strapi

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2026-27886, inspect your project dependencies using npm:

npm ls @strapi/strapi

Analyze the terminal output to locate any version of @strapi/strapi in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 5.37.0), your application is affected.

Note: The npm ls @strapi/strapi command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor, where the product exposes sensitive information to an actor that is not explicitly authorized to have access to that information. In @strapi/strapi, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary of CVE-2026-27886 Vulnerability Details - CVE: CVE-2026-27886 - CVSS v3.1 Vector: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N` (9.3 — Critical) - Affected Versions: `@strapi/strapi` <=5.36.1 - How to Patch: Immediately update your Strapi to >=5.37.0 ### Description of CVE-2026-27886 Strapi versions prior to 5.37.0 did not sufficiently sanitize query parameters when filtering content via relational fields. An unauthenticated attacker could use the `where` query parameter on any publicly-accessible content-type with an `updatedBy` (or other admin-relation) field to perform a boolean-oracle attack against private fields on the joined `admin_users` table, including the `resetPasswordToken` field. Extracting an admin reset token via this oracle made full administrative account takeover possible without authentication. When a filter such as `where[updatedBy][resetPasswordToken][$startsWith]=a` was applied to a public Content API endpoint, the underlying query generation performed a `LEFT JOIN` against the `admin_users` table and emitted a `WHERE` clause referencing the joined column. The query parameter sanitization layer did not block operator chains that traversed into relational target schemas the caller had no read permission on, allowing the response count to be used as a one-bit oracle on any admin-table field. The patch introduces explicit query-parameter sanitization at the controller and service boundary via three new primitives: `strictParam`, `addQueryParams`, and `addBodyParams`. Operator chains that traverse into restricted relational targets are now rejected before reaching the database. ### IoC's for CVE-2026-27886 Indicators that an instance running an unpatched version may have been exploited: - Server access logs containing query strings traversing into admin-relation private fields. Regex: `\?(.*&)?where\[(updatedBy|createdBy|publishedBy)\]\[(email|password|resetPasswordToken|confirmationToken|firstname|lastname|preferedLanguage)\]\[\$(startsWith|contains|eq|gt|lt|ge|le|in|notIn|notNull|null)\]=` - High volume of public Content API requests from a single IP iterating through a hex alphabet (`0`-`9`, `a`-`f`) on the same content-type endpoint with progressively-longer filter values - Subsequent `POST /admin/reset-password` calls using a reset token that the legitimate admin did not request - Successful admin password change immediately following a burst of public Content API requests with `where[updatedBy]` query parameters - Sustained burst of identical-shape requests with only the trailing character of the filter value varying ### Credit Discovered by: James Doll - WildWest CyberSecurity Contact: cve+2026-27886@wildwestcyber.com Website: https://wildwestcyber.com LinkedIn: https://www.linkedin.com/in/james-doll-273a61243

CVE-2026-27886 Affected @strapi/strapi Versions

1 component(s)
Fixed Versions:
5.37.0
Product / Package Ecosystem Affected Versions Fixed Version
@strapi/strapi
npm
≥ 4.0.0
< 5.37.0
5.37.0

References

Frequently Asked Questions

What is CVE-2026-27886?
CVE-2026-27886 is a security vulnerability in @strapi/strapi involving Strapi may leak sensitive data via relational filtering due to lack of query sanitization under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor.
Which @strapi/strapi versions are affected?
Affected versions include releases prior to 5.37.0 across affected packages: @strapi/strapi.
What version fixes CVE-2026-27886?
Upgrading to 5.37.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is @strapi/strapi affected?
Yes, @strapi/strapi is affected in releases prior to 5.37.0. Upgrade your dependency to 5.37.0 or later.
What CWE is associated with CVE-2026-27886?
CVE-2026-27886 is classified under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor (The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.).
How can I check npm dependencies for CVE-2026-27886?
Run the dependency tree command: 'npm ls @strapi/strapi'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-rjg2-95x7-8qmx",
  "modified" : "2026-05-15T23:44:50Z",
  "published" : "2026-05-14T13:17:58Z",
  "aliases" : [ "CVE-2026-27886" ],
  "summary" : "Strapi may leak sensitive data via relational filtering due to lack of query sanitization",
  "details" : "### Summary of CVE-2026-27886 Vulnerability Details\n\n- CVE: CVE-2026-27886\n- CVSS v3.1 Vector: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N` (9.3 — Critical)\n- Affected Versions: `@strapi/strapi` <=5.36.1\n- How to Patch: Immediately update your Strapi to >=5.37.0\n\n### Description of CVE-2026-27886\n\nStrapi versions prior to 5.37.0 did not sufficiently sanitize query parameters when filtering content via relational fields. An unauthenticated attacker could use the `where` query parameter on any publicly-accessible content-type with an `updatedBy` (or other admin-relation) field to perform a boolean-oracle attack against private fields on the joined `admin_users` table, including the `resetPasswordToken` field. Extracting an admin reset token via this oracle made full administrative account takeover possible without authentication.\n\nWhen a filter such as `where[updatedBy][resetPasswordToken][$startsWith]=a` was applied to a public Content API endpoint, the underlying query generation performed a `LEFT JOIN` against the `admin_users` table and emitted a `WHERE` clause referencing the joined column. The query parameter sanitization layer did not block operator chains that traversed into relational target schemas the caller had no read permission on, allowing the response count to be used as a one-bit oracle on any admin-table field.\n\nThe patch introduces explicit query-parameter sanitization at the controller and service boundary via three new primitives: `strictParam`, `addQueryParams`, and `addBodyParams`. Operator chains that traverse into restricted relational targets are now rejected before reaching the database.\n\n### IoC's for CVE-2026-27886\n\nIndicators that an instance running an unpatched version may have been exploited:\n\n- Server access logs containing query strings traversing into admin-relation private fields. Regex: `\\?(.*&)?where\\[(updatedBy|createdBy|publishedBy)\\]\\[(email|password|resetPasswordToken|confirmationToken|firstname|lastname|preferedLanguage)\\]\\[\\$(startsWith|contains|eq|gt|lt|ge|le|in|notIn|notNull|null)\\]=`\n- High volume of public Content API requests from a single IP iterating through a hex alphabet (`0`-`9`, `a`-`f`) on the same content-type endpoint with progressively-longer filter values\n- Subsequent `POST /admin/reset-password` calls using a reset token that the legitimate admin did not request\n- Successful admin password change immediately following a burst of public Content API requests with `where[updatedBy]` query parameters\n- Sustained burst of identical-shape requests with only the trailing character of the filter value varying\n\n### Credit\nDiscovered by: James Doll - WildWest CyberSecurity\nContact: cve+2026-27886@wildwestcyber.com\nWebsite: https://wildwestcyber.com\nLinkedIn: https://www.linkedin.com/in/james-doll-273a61243",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@strapi/strapi"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "4.0.0"
      }, {
        "fixed" : "5.37.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/strapi/strapi/security/advisories/GHSA-rjg2-95x7-8qmx"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-27886"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/strapi/strapi"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-200", "CWE-22", "CWE-943" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-05-14T13:17:58Z",
    "nvd_published_at" : "2026-05-14T19:16:31Z"
  }
}