{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","feed_url":"https://feed.craftedsignal.io/products/axios--1.16.1/feed.json","home_page_url":"https://feed.craftedsignal.io/","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["axios (\u003c 1.16.1)"],"_cs_severities":["high"],"_cs_tags":["prototype-pollution","information-disclosure","axios","nodejs"],"_cs_type":"advisory","_cs_vendors":["Axios"],"content_html":"\u003cp\u003eA critical vulnerability (GHSA-gcfj-64vw-6mp9) has been identified in the Axios Node.js HTTP adapter, affecting versions \u003ccode\u003e1.15.2\u003c/code\u003e and \u003ccode\u003e1.16.0\u003c/code\u003e. This flaw allows an attacker to bypass Axios's built-in prototype pollution hardening mechanisms, leading to sensitive information disclosure. The vulnerability occurs when a Node.js application uses Axios with a request interceptor that, through common immutable cloning patterns like \u003ccode\u003e{...config}\u003c/code\u003e or \u003ccode\u003eObject.assign({}, config)\u003c/code\u003e, re-materializes the request configuration from a null-prototype object back into a regular object. This re-materialized object then inherits from a polluted \u003ccode\u003eObject.prototype.proxy\u003c/code\u003e, effectively routing all subsequent HTTP requests through an attacker-controlled proxy. The attack requires a separate, initial prototype pollution vulnerability within the Node.js process. This enables the attacker to intercept and exfiltrate credentials such as \u003ccode\u003eAuthorization\u003c/code\u003e headers, \u003ccode\u003eBasic auth\u003c/code\u003e details, request metadata, and full request body content, posing a significant risk of data exfiltration and authentication bypass in affected server-side applications.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker exploits a separate vulnerability (e.g., deserialization, input validation bypass) to achieve arbitrary prototype pollution within a Node.js process.\u003c/li\u003e\n\u003cli\u003eThe attacker specifically pollutes \u003ccode\u003eObject.prototype.proxy\u003c/code\u003e with details of an attacker-controlled proxy server (e.g., \u003ccode\u003e{ protocol: 'http', host: 'attacker_ip', port: attacker_port }\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eA Node.js application makes an HTTP request using Axios (versions \u003ccode\u003e1.15.2\u003c/code\u003e or \u003ccode\u003e1.16.0\u003c/code\u003e), and a request interceptor clones the configuration using a plain object copy (e.g., \u003ccode\u003e{...config}\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAxios's \u003ccode\u003emergeConfig\u003c/code\u003e initially creates a null-prototype configuration object to prevent prototype pollution from \u003ccode\u003eObject.prototype\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe request interceptor's cloning action (e.g., \u003ccode\u003e{...config}\u003c/code\u003e) converts this null-prototype object back into a regular object, causing it to inherit from \u003ccode\u003eObject.prototype\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAxios dispatches this re-materialized configuration to the Node.js HTTP adapter without re-hardening or re-normalizing it.\u003c/li\u003e\n\u003cli\u003eThe Node.js HTTP adapter attempts to read \u003ccode\u003econfig.proxy\u003c/code\u003e, which now resolves to the attacker-controlled proxy server's details from the polluted \u003ccode\u003eObject.prototype.proxy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eOutgoing HTTP requests, including sensitive data such as \u003ccode\u003eAuthorization\u003c/code\u003e headers, \u003ccode\u003eHost\u003c/code\u003e, and request body content, are routed through the attacker's proxy, enabling information disclosure.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation allows an attacker to intercept and exfiltrate sensitive data from affected Node.js HTTP requests. This includes explicit \u003ccode\u003eAuthorization\u003c/code\u003e headers, axios-generated \u003ccode\u003eBasic auth\u003c/code\u003e credentials, full absolute URLs, \u003ccode\u003eHost\u003c/code\u003e headers, and request body content. The attacker's proxy can also return its own response to the Axios client, potentially leading to further compromise or manipulation of application logic. The impact is limited to Node.js deployments using the HTTP adapter and does not affect browser environments or guarantee HTTPS header/body disclosure under normal TLS validation. This can lead to unauthorized access, data breaches, and service disruption.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Axios to version \u003ccode\u003e1.16.1\u003c/code\u003e or later immediately to apply the patch addressing GHSA-gcfj-64vw-6mp9.\u003c/li\u003e\n\u003cli\u003eReview all Axios request interceptors to ensure they do not return regular object clones of the configuration; instead, return the original null-prototype config or clone into a null-prototype object to prevent the bypass.\u003c/li\u003e\n\u003cli\u003eIf proxy support is not required for specific requests or Axios instances, explicitly set \u003ccode\u003eproxy: false\u003c/code\u003e in the configuration to prevent unintended proxy usage.\u003c/li\u003e\n\u003cli\u003eConsider using the Node fetch adapter for affected requests if compatible with your application's requirements.\u003c/li\u003e\n\u003cli\u003eImplement robust input validation and sanitization across your application to prevent the initial prototype pollution vulnerability that is a prerequisite for this attack.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-07-20T22:41:05Z","date_published":"2026-07-20T22:41:05Z","id":"https://feed.craftedsignal.io/briefs/2026-07-axios-prototype-pollution-bypass/","summary":"A vulnerability in Axios's Node.js HTTP adapter, affecting versions 1.15.2 and 1.16.0, allows an attacker to bypass prototype pollution hardening, enabling redirection of HTTP requests through an attacker-controlled proxy to achieve sensitive information disclosure.","title":"Axios Node.js HTTP Adapter Vulnerable to Proxy Redirection via Prototype Pollution Bypass","url":"https://feed.craftedsignal.io/briefs/2026-07-axios-prototype-pollution-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed - Axios (\u003c 1.16.1)","version":"https://jsonfeed.org/version/1.1"}