Strapi is an open source headless content management system. In versions on the 4.x branch prior to 4.26.1 and on the 5.x branch prior to 5.33.2, a database-query injection vulnerability existed in the Strapi Content-Type Builder write API. An authenticated administrator could inject arbitrary database statements through the `column.defaultTo` attribute when creating or modifying a content type. Setting `defaultTo` as a tuple `[value, { isRaw: true }]` caused the value to be passed directly into Knex's `db.connection.raw()` during schema migration without sanitization, allowing arbitrary statement execution at the database layer. Depending on the database engine, this enabled arbitrary file read via database utility functions, denial of service via forced server crash on schema-migration error, and on engines that permit external program execution, remote code execution against the database server. The patch in versions 4.26.1 and 5.33.2 addresses this by restricting all Content-Type Builder write APIs to development mode only. Production deployments running v5.33.2 or later return 404 for requests against `/content-type-builder/content-types` and related endpoints, removing the network-reachable attack surface entirely.
The vulnerability results from lack of sanitization of the `column.defaultTo` attribute value during content type creation or modification. Passing a value as a tuple `[value, { isRaw: true }]` caused the value to be passed directly to the `db.connection.raw()` function of the Knex library during schema migration, without any verification. In this way, an attacker could execute arbitrary SQL commands at the database engine level. On engines offering file reading features or running external programs, the attack scope extends respectively to server file disclosure and remote code execution (RCE).
An attacker with administrator privileges can execute arbitrary SQL commands, which in practice enables reading server files through built-in database functions, causing server failure (DoS) through schema migration error, and on some database engines — remote code execution (RCE) on the database server.
Strapi must be updated to version 4.26.1 (4.x branch) or 5.33.2 (5.x branch). The patch restricts access to all Content-Type Builder write APIs exclusively to developer mode; production environments running version 5.33.2 or newer return a 404 response to requests to `/content-type-builder/content-types` and related endpoints, eliminating the vulnerable attack surface.
Strapi in the 4.x branch in all versions before 4.26.1 and in the 5.x branch in all versions before 5.33.2
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XStrapi
APPStrapi4.0.0 – 4.26.1 (excl.)5.0.0 – 5.33.2 (excl.)
Related vulnerabilities
Strapi: Path Traversal w filtrach relacyjnych umożliwia przejęcie konta admina
Arbitrary file upload umożliwiający RCE w Strapi v4.1.5
Nieautoryzowany endpoint proxy w Strapi — podatność SSRF/proxy
Błędna obsługa resetowania hasła w Strapi przed v3.0.0-beta.17.5
Strapi is an open-source headless content management system. In versions from 5.0.0 to before 5.5.2, the looku...