CVE-2024-29041 Information
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.
Reference
https://github.com/expressjs/express/security/advisories/GHSA-rv95-896h-c2vc
https://github.com/koajs/koa/issues/1800
https://github.com/expressjs/express/pull/5539
https://github.com/expressjs/express/commit/0867302ddbde0e9463d0564fea5861feb708c2dd
https://github.com/expressjs/express/commit/0b746953c4bd8e377123527db11f9cd866e39f94
https://expressjs.com/en/4x/api.html#res.location
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***](https://github.com/pillarjs/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.