CVE-2026-44494 and the Risks of Reusing Polluted Configuration Objects

The object-model problem

CVE-2026-44494 is a useful case study in JavaScript configuration handling. Axios can merge request settings into a configuration object that is later consumed by its HTTP adapter. The proxy setting is absent from the default object, so a lookup for config.proxy may find a value on the prototype chain.

Attackers often look for ways to add properties such as __proto__, constructor, or prototype to nested input. If an application copies those keys into shared objects without safeguards, an inherited value can affect code that never explicitly received the property. The Axios advisory turns that general risk into a concrete network proxy behavior.

Why reuse increases the blast radius

A newly created object is not always safe just because its visible keys look normal. The vulnerable behavior appears when a code path uses ordinary property access after a shared prototype has been changed. Reused configuration objects and long-lived processes can carry the polluted state into later requests, including calls made by libraries unrelated to the original input.

The CVE advisory demonstrates the pattern with an Object.prototype.proxy assignment and a hardcoded Axios request. The application may not read attacker input at the moment of the request. It only needs to be running in a process whose prototype was altered earlier.

Affected scope and severity

Axios versions 1.0.0 through 1.15.x are affected. The fixed release is 1.16.0. Red Hat and CVE.org assign CVSS 3.1 score 8.7, while the advisory's disclosure text presents a 9.4 argument. The difference does not change the remediation decision because the vulnerable property path is present in every affected version range.

Red Hat lists OpenShift Container Platform among affected products and says fixes are delivered through errata. The vulnerability can exist in an application image that a platform team does not build, so image-level dependency review remains necessary.

Defensive design

Treat untrusted object keys as input data, not as configuration instructions. Reject __proto__, constructor, and prototype at the boundary where JSON, query parameters, or configuration maps enter the application. Use null-prototype objects or explicit allowlists where the language permits them. Review merge functions that recurse without checking property ownership.

Add tests that set a suspicious inherited property in a controlled test process and verify that configuration lookups do not consume it. Test the actual Axios version shipped in the image, not only the version in a source tree. A unit test that mocks the HTTP client may miss the adapter behavior that creates the gadget.

Exposure context

The ZoomEye Search title="OpenShift" returned 5,443 product-title matches on 2026-11-03 UTC. The separate vul.cve="CVE-2026-44494" query returned 0. The external count provides general product context; it cannot show whether a service accepts polluted objects or whether the relevant request carries sensitive credentials.

Remediation

Upgrade Axios to 1.16.0 or later and rebuild affected images. Apply the relevant Red Hat errata for OpenShift Container Platform and other affected products. Keep the defensive object-handling work even after the update because the underlying prototype-pollution issue may still exist in another component.

When reviewing the application, record which code owns the proxy decision for each outbound request. Explicit configuration is easier to audit than an inherited value. That design change also makes future investigations clearer because the effective destination does not depend on hidden shared state.

References