CVE-2026-44373 Overview
CVE-2026-44373 is a path traversal vulnerability in Nitro, a server toolkit used to build web applications and APIs. Versions prior to 3.0.260429-beta fail to normalize percent-encoded traversal sequences before applying proxy route rules. An attacker can send a request containing ..%2f in the URL path to bypass the configured proxy scope. Nitro then forwards the request, and the upstream server resolves the path outside the intended boundary. The issue is tracked as [CWE-22] (Improper Limitation of a Pathname to a Restricted Directory) and is fixed in 3.0.260429-beta.
Critical Impact
Attackers can reach upstream resources that should be unreachable through the proxy, exposing data outside the configured route scope.
Affected Products
- Nitro server toolkit versions prior to 3.0.260429-beta
- Nitro 2.x branch fixed in v2.13.4
- Applications using Nitro proxy route rules to restrict upstream access
Discovery Timeline
- 2026-05-13 - CVE-2026-44373 published to NVD
- 2026-05-13 - Last updated in NVD database
Technical Details for CVE-2026-44373
Vulnerability Analysis
Nitro provides proxy route rules that forward incoming requests to upstream targets based on the request path. The framework evaluates these rules against the raw URL path before forwarding. When an attacker supplies a percent-encoded traversal sequence such as ..%2f, the path-matching logic does not decode the segment for comparison. The rule check treats the encoded value as a benign path component and permits the request. The HTTP client used for the upstream forward then decodes the segment, allowing the path to resolve to a location outside the configured proxy scope.
The vulnerability affects confidentiality only. Integrity and availability are not impacted because the attacker cannot modify upstream state through this flaw beyond what the upstream itself permits via GET-style retrievals.
Root Cause
The root cause is inconsistent URL normalization between the proxy rule matcher and the upstream forwarder. The matcher operates on the encoded path, while the forwarder decodes the path before resolving it. This mismatch creates a parser differential that breaks the scope boundary enforced by route rules. See GitHub Pull Request #4222 and GitHub Pull Request #4223 for the corrective changes.
Attack Vector
Exploitation requires only a network-reachable Nitro endpoint that exposes a proxy route rule. The attacker sends an HTTP request whose path begins inside an allowed proxy prefix and then includes one or more ..%2f segments to traverse upward. No authentication or user interaction is required. Refer to the GitHub Security Advisory GHSA-5w89-w975-hf9q for full advisory text.
The vulnerability manifests in the proxy route handler. No verified public exploit code is available; see the advisory for technical details.
Detection Methods for CVE-2026-44373
Indicators of Compromise
- HTTP request logs containing ..%2f, ..%2F, %2e%2e%2f, or double-encoded variants such as ..%252f in the URL path
- Upstream access logs showing requests originating from the Nitro proxy that resolve to paths outside the documented route scope
- Unexpected 200 responses from proxy endpoints for paths that should fall outside any configured route rule
Detection Strategies
- Inspect Nitro application access logs and reverse proxy logs for percent-encoded traversal patterns in request URIs
- Compare proxy route rule prefixes against upstream-resolved paths to identify scope escapes
- Apply web application firewall signatures that decode the URL path before matching against traversal patterns
Monitoring Recommendations
- Forward Nitro and upstream HTTP logs to a centralized logging platform and alert on encoded traversal sequences
- Baseline normal proxy request paths and flag deviations that include encoded .. segments
- Track outbound proxy requests by upstream target and alert when requests reach paths outside the declared rule prefix
How to Mitigate CVE-2026-44373
Immediate Actions Required
- Upgrade Nitro to 3.0.260429-beta or later for the 3.x branch, or to v2.13.4 for the 2.x branch
- Audit all routeRules proxy entries in your Nitro configuration and confirm the upstream targets cannot serve sensitive paths if accessed directly
- Review historical access logs for percent-encoded traversal attempts that may indicate prior exploitation
Patch Information
The fix is published in GitHub Release v3.0.260429-beta and backported in GitHub Release v2.13.4. The patches normalize and decode the request path before applying proxy route rule matching, closing the parser differential between the matcher and the forwarder.
Workarounds
- Place a reverse proxy or web application firewall in front of Nitro that rejects or normalizes requests containing encoded traversal sequences
- Restrict upstream targets so they cannot serve content above the intended proxy directory, even if the Nitro proxy forwards a traversal
- Disable proxy route rules entirely until the patched version is deployed if upstream targets host sensitive data
# Upgrade Nitro to the patched release
npm install nitropack@3.0.260429-beta
# or for the 2.x branch
npm install nitropack@2.13.4
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

