CVE-2025-27152
Noneaxios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL
CVSS
—
EPSS
0.8%
Published
Mar 7, 2025
CISA due date
—
Cloudanix analysis
A widely used web request library could send sensitive application requests to the wrong destination if attackers can control the URL.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- SSRF
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Axios request construction can allow an absolute URL supplied to a request call to override the configured baseURL. Code that assumes all requests are constrained to a trusted base URL may instead send traffic to an attacker-controlled or internal URL. In server-side applications this can become SSRF, allowing requests to cloud metadata services, loopback services, private network addresses, or internal APIs reachable from the application server. In both server-side and browser contexts, headers, cookies, API keys, bearer tokens, or other credentials configured on the axios instance may be sent to the unintended destination, causing credential leakage.
Why it matters to the business
Applications that use axios to call trusted back-end services may be tricked into contacting untrusted or internal systems, which can expose secrets, cloud credentials, internal data, or privileged service responses. Although this issue is not listed in CISA KEV, has no confirmed mature public exploit in the provided data, and has a relatively low EPSS score of 0.00763, axios is widely used in JavaScript applications, so vulnerable dependency usage can be widespread across web front ends, Node.js services, serverless functions, and internal automation. The reported association with payroll-themed threat activity increases concern for applications that process employee, finance, identity, or payment workflows.
How an attack unfolds
An attacker first identifies an application feature that accepts, derives, or forwards a URL or path into an axios request. The application may create an axios instance with a trusted baseURL and security-sensitive default headers, such as Authorization, X-API-Key, session cookies, or service credentials. Instead of providing a relative path, the attacker supplies a fully qualified absolute URL such as an attacker-controlled HTTPS endpoint or an internal address. In vulnerable axios behavior, the absolute URL is used as the request target despite baseURL being configured. If the target is attacker controlled, the attacker receives the outbound request and any credentials attached by the application. If the target is internal, the attacker may use the application as a network pivot to query loopback services, cloud metadata endpoints, private APIs, or administrative interfaces. Follow-on activity may include replaying stolen credentials, enumerating internal services, retrieving cloud role credentials, or using exposed tokens for account takeover or data access. Threat reporting referencing Storm-2755 Payroll Pirate Attacks should prompt added scrutiny of payroll, HR, identity, and payment-related applications that combine user-influenced URLs with axios instances carrying privileged credentials.
How to fix it
Upgrade axios to a fixed version. For source builds, use axios/axios commit a9f7689b0c4b6d68c7f587c3aa376860da509d94 or later. For package-managed JavaScript projects, upgrade to the patched axios release corresponding to that fix, commonly axios 1.8.2 or later where available, and regenerate lockfiles. Audit direct and transitive dependency trees for bundled or pinned axios copies. As defense in depth, validate any URL passed to axios, reject absolute URLs where only relative paths are expected, enforce an allowlist of destination schemes and hostnames, block link-local, loopback, multicast, and private network ranges for server-side URL fetches, and avoid placing sensitive default credentials on axios instances that process user-influenced request targets. Apply outbound egress controls so application workloads cannot directly reach cloud metadata endpoints or arbitrary internal networks unless explicitly required.
How to confirm the fix worked
Confirm that dependency manifests and lockfiles resolve axios to a patched version or to source including commit a9f7689b0c4b6d68c7f587c3aa376860da509d94 or later. Use software composition analysis, npm/yarn/pnpm lockfile review, and container image scans to identify stale axios copies. Add unit or integration tests that create an axios instance with baseURL set to a trusted host and then attempt a request using an absolute URL; the test should verify that the request is rejected, blocked by application validation, or does not leak sensitive default headers to the attacker-controlled destination. Review code for axios calls where request URL values come from request parameters, webhook payloads, import files, redirect targets, tenant configuration, integration settings, or database-stored URLs. Validate network controls by attempting to reach cloud metadata and loopback addresses from application runtimes and confirming those requests are denied unless explicitly required.
Typical attack path
- Find an application endpoint, background job, webhook handler, proxy feature, import function, or integration that passes user-controlled input into axios.
- Provide an absolute URL instead of the expected relative path.
- Cause vulnerable axios behavior to send the request to the supplied absolute URL despite a configured baseURL.
- Receive leaked headers or tokens on an attacker-controlled host, or direct the request toward internal network resources.
- Use SSRF to probe loopback, link-local, cloud metadata, private RFC1918 addresses, or internal APIs reachable from the application runtime.
- Replay captured credentials or use retrieved metadata/API responses for privilege escalation, data access, or lateral movement.
How to detect it
To determine whether this was already exploited, correlate application access logs, API gateway logs, WAF events, reverse proxy logs, application debug/error logs, DNS resolver logs, outbound proxy logs, firewall flow logs, cloud VPC flow logs, and endpoint/container telemetry. Look for requests where user-supplied fields contain full URLs instead of expected relative paths, especially URLs pointing to loopback, link-local, private IP ranges, cloud metadata services, or unfamiliar external domains. On servers, investigate outbound HTTP requests from Node.js processes to 169.254.169.254, metadata.google.internal, localhost, 127.0.0.1, ::1, RFC1918 address ranges, or unexpected internet hosts shortly after inbound requests containing url, uri, redirect, callback, webhook, endpoint, path, target, next, returnUrl, or import parameters. Review outbound HTTP headers captured by egress proxies for Authorization, Cookie, X-API-Key, X-Amz-Security-Token, or other secrets being sent to non-allowlisted hosts. In cloud environments, inspect cloud audit logs for unusual metadata credential use, new API calls from application instance roles, anomalous STS token usage, or access from unexpected source IPs after suspicious outbound requests. For payroll or finance-facing applications, pay special attention to URL manipulation attempts, credential replay, account changes, payment destination changes, or identity events that align with reported Storm-2755 Payroll Pirate Attacks activity.
- 169.254.169.254
- http://169.254.169.254
- https://169.254.169.254
- /latest/meta-data/
- /latest/meta-data/iam/security-credentials/
- 169.254.169.254/latest/meta-data/iam/security-credentials
- metadata.google.internal
- http://metadata.google.internal
- /computeMetadata/v1/
- Metadata-Flavor: Google
- 169.254.169.254/metadata/instance
- Metadata: true
- http://127.0.0.1
- https://127.0.0.1
- http://localhost
- https://localhost
- http://[::1]
- http://0.0.0.0
- http://10.
- http://172.16.
- http://172.17.
- http://172.18.
- http://172.19.
- http://172.20.
- http://172.21.
- http://172.22.
- http://172.23.
- http://172.24.
- http://172.25.
- http://172.26.
- http://172.27.
- http://172.28.
- http://172.29.
- http://172.30.
- http://172.31.
- http://192.168.
- axios/
- baseURL
- Authorization: Bearer
- X-API-Key:
- X-Amz-Security-Token
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_SESSION_TOKEN
What your security team should do
- Prioritize inventory of all applications, containers, serverless functions, and front-end bundles using axios, including transitive and vendored copies.
- Upgrade axios to a patched release or source revision containing commit a9f7689b0c4b6d68c7f587c3aa376860da509d94; verify lockfiles and deployed artifacts, not just package manifests.
- Search code for axios instances with baseURL plus default Authorization, Cookie, X-API-Key, or similar sensitive headers, especially where request URLs can be influenced by users or external integrations.
- Implement application-level URL validation that rejects absolute URLs when relative paths are expected and enforces strict destination allowlists for legitimate outbound fetch features.
- Deploy egress restrictions to block application workloads from reaching 169.254.169.254, cloud metadata hostnames, localhost, private address ranges, and unapproved external domains.
- Review proxy, webhook, import, integration, payroll, HR, finance, and identity workflows for SSRF exposure and credential leakage risk.
- Monitor outbound HTTP logs, DNS logs, WAF/API logs, and application logs for absolute URL payloads, metadata-service access attempts, and requests to attacker-controlled or unusual destinations.
- Rotate credentials if logs show sensitive headers were sent to untrusted domains or if metadata endpoints or internal APIs were accessed unexpectedly.
The record
A previously reported issue in axios demonstrated that using protocol-relative URLs could lead to SSRF (Server-Side Request Forgery). Reference: axios/axios#6463 A similar problem that occurs when passing absolute URLs rather than protocol-relative URLs to axios has been identified. Even if `baseURL` is set, axios sends the request to the specified absolute URL, potentially causing SSRF and credential leakage. This issue impacts both server-side and client-side usage of axios.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | axios | 0 | 0.30.0 |
| npm | axios | 1.0.0 | 1.8.2 |
| Chainguard | airflow-2 | 0 | 2.11.0-r15 |
| Chainguard | airflow-2-compat | 0 | 2.11.0-r15 |
| Chainguard | airflow-2-iamguarded-compat | 0 | 2.11.0-r15 |
| Chainguard | jitsucom-jitsu | 0 | 2.8.6-r2 |
| Chainguard | jitsucom-jitsu-console | 0 | 2.8.6-r2 |
| Chainguard | jitsucom-jitsu-rotor | 0 | 2.8.6-r2 |
| Chainguard | kibana-7 | 0 | 7.17.29-r5 |
| Chainguard | kubeflow-centraldashboard | 0 | 1.9.2-r5 |
| Chainguard | kubeflow-pipelines | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-apiserver | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-cache-deployer | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-cache-deployer-compat | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-cache_server | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-frontend | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-metadata-envoy-config | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-metadata-writer | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-metadata-writer-compat | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-persistence_agent | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-scheduledworkflow | 0 | 2.4.0-r5 |
| Chainguard | kubeflow-pipelines-viewer-crd-controller | 0 | 2.4.0-r5 |
| Chainguard | lerna | 0 | 8.2.1-r1 |
| Chainguard | opensearch-dashboards-2 | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-alerting-dashboards-plugin | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-anomaly-detection-dashboards-plugin | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-config | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-maps | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-notifications | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-observability | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-query-workbench | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-reporting | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-search-relevance | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-dashboards-visualizations | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-fips | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-alerting-dashboards-plugin | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-anomaly-detection-dashboards-plugin | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-config | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-maps | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-notifications | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-observability | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-query-workbench | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-reporting | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-search-relevance | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-dashboards-visualizations | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-fips-index-management-dashboards-plugin | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-ml-commons-dashboards | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-security-analytics-dashboards-plugin | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-fips-security-dashboards-plugin | 0 | 2.19.2-r4 |
| Chainguard | opensearch-dashboards-2-index-management-dashboards-plugin | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-ml-commons-dashboards | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-security-analytics-dashboards-plugin | 0 | 2.19.4-r0 |
| Chainguard | opensearch-dashboards-2-security-dashboards-plugin | 0 | 2.19.4-r0 |
| Chainguard | prism | 0 | 5.12.1-r4 |
| Chainguard | tileserver-gl | 0 | 5.1.3-r2 |
| Chainguard | tileserver-gl-compat | 0 | 5.1.3-r2 |
| Chainguard | tileserver-gl-fips | 0 | 5.1.3-r2 |
| Chainguard | tileserver-gl-fips-compat | 0 | 5.1.3-r2 |
| Debian:11 | node-axios | 0 | No fix |
| Debian:12 | node-axios | 0 | No fix |
| Debian:13 | node-axios | 0 | No fix |
| Debian:14 | node-axios | 0 | 1.8.4+dfsg-1 |
| SUSE:Enterprise Storage 7.1 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | pgadmin4 | 0 | 8.5-150600.3.9.1 |
| SUSE:Linux Enterprise Module for Python 3 15 SP6 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Manager Proxy 4.3 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| SUSE:Manager Server 4.3 | pgadmin4 | 0 | 4.30-150300.3.18.1 |
| Wolfi | jitsucom-jitsu | 0 | 2.8.6-r2 |
| Wolfi | jitsucom-jitsu-console | 0 | 2.8.6-r2 |
| Wolfi | jitsucom-jitsu-rotor | 0 | 2.8.6-r2 |
| Wolfi | kubeflow-centraldashboard | 0 | 1.9.2-r5 |
| Wolfi | kubeflow-pipelines | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-apiserver | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-cache-deployer | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-cache-deployer-compat | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-cache_server | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-frontend | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-metadata-envoy-config | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-metadata-writer | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-metadata-writer-compat | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-persistence_agent | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-scheduledworkflow | 0 | 2.4.0-r5 |
| Wolfi | kubeflow-pipelines-viewer-crd-controller | 0 | 2.4.0-r5 |
| Wolfi | lerna | 0 | 8.2.1-r1 |
| Wolfi | opensearch-dashboards-2 | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-alerting-dashboards-plugin | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-anomaly-detection-dashboards-plugin | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-config | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-maps | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-notifications | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-observability | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-query-workbench | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-reporting | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-search-relevance | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-dashboards-visualizations | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-index-management-dashboards-plugin | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-ml-commons-dashboards | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-security-analytics-dashboards-plugin | 0 | 2.19.4-r0 |
| Wolfi | opensearch-dashboards-2-security-dashboards-plugin | 0 | 2.19.4-r0 |
| Wolfi | prism | 0 | 5.12.1-r4 |
| Wolfi | tileserver-gl | 0 | 5.1.3-r2 |
| Wolfi | tileserver-gl-compat | 0 | 5.1.3-r2 |
| openSUSE:Leap 15.6 | pgadmin4 | 0 | 8.5-150600.3.9.1 |
| openSUSE:Tumbleweed | velociraptor | 0 | 0.7.0.4.git163.87ee3570-1.1 |
Related vulnerabilities
- CVE-2026-44496 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44490 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44492 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44494 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44495 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44486 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44487 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44488 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios