Vulnerability advisory

CVE-2024-29041

Express.js Open Redirect in malformed URLs

Published Updated OSV record ↗

Also known as GHSA-rv95-896h-c2vc

Severity
  • CVSS 3.xCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Affected versions

Repository

Affected commitsFixed by commit
GIT github.com/expressjs/express ↗
9375a9afa9d7baa814b454c7a6818a7471aaef00 to before 084e36506a18774f85206a65d8da04dc1107fc1b084e36506a18774f85206a65d8da04dc1107fc1b
4052c15c7f10b79fb7c54f3837ffe118f7a99811 to before cd7d79f92a7209b09aa9b065b0643c1bec55ed1dcd7d79f92a7209b09aa9b065b0643c1bec55ed1d
Not specified0867302ddbde0e9463d0564fea5861feb708c2dd
Not specified0b746953c4bd8e377123527db11f9cd866e39f94
Also listed as affected (31)
  • 5.0.0-beta.2
  • 4.18.3
  • 4.18.2
  • 4.18.1
  • 4.18.0
  • 4.17.3
  • v5.0.0-beta.1
  • 4.17.2
  • 5.0.0-alpha.8
  • 4.17.1
  • 5.0.0-alpha.7
  • 4.17.0
  • 4.16.4
  • 4.16.3
  • 4.16.2
  • 5.0.0-alpha.6
  • 4.16.1
  • 4.16.0
  • 4.15.5
  • 4.15.4
  • 5.0.0-alpha.5
  • 4.15.3
  • 4.15.2
  • 5.0.0-alpha.4
  • 4.15.1
  • 5.0.0-alpha.3
  • 4.15.0
  • 4.14.1
  • 4.14.0
  • 5.0.0-alpha.2
  • 5.0.0-alpha.1

Description

Express.js minimalist web framework for node. Versions of Express.js prior to 4.19.0 and all pre-release alpha and beta versions of 5.0 are affected by an open redirect vulnerability using malformed URLs. When a user of Express performs a redirect using a user-provided URL Express performs an encode using encodeurl on the contents before passing it to the location header. This can cause malformed URLs to be evaluated in unexpected ways by common redirect allow list implementations in Express applications, leading to an Open Redirect via bypass of a properly implemented allow list. The main method impacted is res.location() but this is also called from within res.redirect(). The vulnerability is fixed in 4.19.2 and 5.0.0-beta.3.

References

  • Codex
  • Claude Code
  • VS Code
  • GitHub Copilot
  • Cursor
  • Cline
  • Windsurf
  • Google Anti-gravity
  • OpenCode
  • Pi
  • Gemini CLI
  • Hermes Agent
  • Zed
  • Junie
  • Qwen Code
  • Kiro
  • Kilo Code
  • Factory Droid

Set up GitHits for your agents

Run this command:

<> bash
npx githits@latest init

What happens next:

  1. Opens your browser to authorize GitHits
  2. Asks whether to set up GitHits at the user or project level
  3. Detects your supported AI coding tools
  4. Lets you choose which tools to configure
  5. Configures the selected tools