NocoBase has SSRF in Workflow HTTP Request and Custom Request Plugins
Summary
NocoBase's workflow HTTP request plugin and custom request action plugin make server-side HTTP requests to user-provided URLs without any SSRF protection. An authenticated user can access internal network services, cloud metadata endpoints, and localhost.
Vulnerable Code
1. Workflow HTTP Request Plugin
packages/plugins/@nocobase/plugin-workflow-request/src/server/RequestInstruction.ts lines 117-128:
return axios.request({
url: trim(url), // User-controlled, no validation
method,
headers,
params,
timeout,
...(method.toLowerCase() !== 'get' && data != null
? { data: transformer ? await transformer(data) : data }
: {}),
});
The url at line 98 comes directly from user workflow configuration with only whitespace trimming.
2. Custom Request Action Plugin
packages/plugins/@nocobase/plugin-action-custom-request/src/server/actions/send.ts lines 172-198:
const axiosRequestConfig = {
baseURL: ctx.origin,
...options,
url: getParsedValue(url, variables), // User-controlled via template
headers: { ... },
params: getParsedValue(arrayToObject(params), variables),
data: getParsedValue(toJSON(data), variables),
};
const res = await axios(axiosRequestConfig); // No IP validation
Missing Protections
- No
request-filtering-agentor SSRF library (confirmed via grep across entire codebase) - No private IP range filtering
- No cloud metadata endpoint blocking
- No URL scheme validation
- No DNS rebinding protection
Attack Scenario
- Authenticated user creates a workflow with HTTP Request node
- Sets URL to
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - Triggers the workflow
- Server fetches AWS metadata and returns IAM credentials in workflow execution logs
Alternatively via Custom Request action:
- Create custom request with URL
http://127.0.0.1:5432orhttp://10.0.0.1:8080/admin - Execute the action
- Server makes request to internal service
Impact
- Cloud metadata theft: AWS/GCP/Azure credentials via metadata endpoints
- Internal network access: Scan and interact with services on private IP ranges
- Database access: Connect to localhost databases (PostgreSQL, Redis, etc.)
- Authentication required: Yes (authenticated user), but any workspace member can create workflows
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| npm package | @nocobase/plugin-workflow-request | < 2.0.37 | 2.0.37 |
References
- https://github.com/nocobase/nocobase/security/advisories/GHSA-mvvv-v22x-xqwp
- https://nvd.nist.gov/vuln/detail/CVE-2026-40346
- https://github.com/nocobase/nocobase/pull/9079
- https://github.com/nocobase/nocobase/commit/2853368243ed07339c62c548b7d475f4eeaada59
- https://github.com/nocobase/nocobase
- https://github.com/nocobase/nocobase/releases/tag/v2.0.37
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N- Weakness (CWE)
CWE-918- Platform
- npm
- Package
@nocobase/plugin-workflow-request- Disclosed
- 15.04.2026
- Updated
- 11.10.2026 10:22
Sources and licenses
OSV / GitHub Advisory Database - GHSA-mvvv-v22x-xqwp - CC BY 4.0
Vulnerability history: @nocobase/plugin-workflow-request
All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.
This is the only known vulnerability of this package.
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.