🚨 [security] Update express 4.17.1 → 4.19.2 (minor)
🚨 Your current dependencies have known security vulnerabilities 🚨
This dependency update fixes known security vulnerabilities. Please see the details below and assess their impact carefully. We recommend to merge and deploy this as soon as possible!
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request.
What changed?
✳️ express (4.17.1 → 4.19.2) · Repo · Changelog
Security Advisories 🚨
🚨 Express.js Open Redirect in malformed URLs
Impact
Versions of Express.js prior to 4.19.2 and pre-release alpha and beta versions before 5.0.0-beta.3 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
encodeurlon the contents before passing it to thelocationheader. 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 withinres.redirect().Patches
An initial fix went out with
[email protected], we then patched a feature regression in4.19.1and added improved handling for the bypass in4.19.2.Workarounds
The fix for this involves pre-parsing the url string with either
require('node:url').parseornew URL. These are steps you can take on your own before passing the user input string tores.locationorres.redirect.References
#5539
koajs/koa#1800
https://expressjs.com/en/4x/api.html#res.location
🚨 qs vulnerable to Prototype Pollution
qs before 6.10.3, as used in Express before 4.17.3 and other products, allows attackers to cause a Node process hang for an Express application because an __ proto__ key can be used. In many typical Express use cases, an unauthenticated remote attacker can place the attack payload in the query string of the URL that is used to visit the application, such as a[proto]=b&a[proto]&a[length]=100000000. The fix was backported to qs 6.9.7, 6.8.3, 6.7.3, 6.6.1, 6.5.3, 6.4.1, 6.3.3, and 6.2.4 (and therefore Express 4.17.3, which has "deps: [email protected]" in its release description, is not vulnerable).
Release Notes
4.19.2
What's Changed
Full Changelog: 4.19.1...4.19.2
4.19.0
What's Changed
- fix typo in release date by @UlisesGascon in #5527
- docs: nominating @wesleytodd to be project captian by @wesleytodd in #5511
- docs: loosen TC activity rules by @wesleytodd in #5510
- Add note on how to update docs for new release by @crandmck in #5541
- Prevent open redirect allow list bypass due to encodeurl
- Release 4.19.0 by @wesleytodd in #5551
New Contributors
Full Changelog: 4.18.3...4.19.0
4.18.3
Main Changes
- Fix routing requests without method
- deps: [email protected]
- Fix strict json error message on Node.js 19+
- deps: content-type@~1.0.5
- deps: [email protected]
Other Changes
- Use https: protocol instead of deprecated git: protocol by @vcsjones in #5032
- build: [email protected] and [email protected] by @abenhamdine in #5034
- ci: update actions/checkout to v3 by @armujahid in #5027
- test: remove unused function arguments in params by @raksbisht in #5124
- Remove unused originalIndex from acceptParams by @raksbisht in #5119
- Fixed typos by @raksbisht in #5117
- examples: remove unused params by @raksbisht in #5113
- fix: parameter str is not described in JSDoc by @raksbisht in #5130
- fix: typos in History.md by @raksbisht in #5131
- build : add [email protected] by @abenhamdine in #5028
- test: remove unused function arguments in params by @raksbisht in #5137
- use random port in test so it won't fail on already listening by @rluvaton in #5162
- tests: use cb() instead of done() by @kristof-low in #5233
- examples: remove multipart example by @riddlew in #5195
- Update support Node.js@18 in the CI by @UlisesGascon in #5490
- Fix favicon-related bug in cookie-sessions example by @DmytroKondrashov in #5414
- Release 4.18.3 by @UlisesGascon in #5505
New Contributors
- @vcsjones made their first contribution in #5032
- @abenhamdine made their first contribution in #5034
- @armujahid made their first contribution in #5027
- @raksbisht made their first contribution in #5124
- @rluvaton made their first contribution in #5162
- @kristof-low made their first contribution in #5233
- @riddlew made their first contribution in #5195
- @DmytroKondrashov made their first contribution in #5414
Full Changelog: 4.18.2...4.18.3
4.18.2
- Fix regression routing a large stack in a single route
- deps: [email protected]
- deps: [email protected]
- perf: remove unnecessary object clone
- deps: [email protected]
4.18.1
- Fix hanging on large stack of sync routes
4.18.0
- Add "root" option to
res.download- Allow
optionswithoutfilenameinres.download- Deprecate string and non-integer arguments to
res.status- Fix behavior of
null/undefinedasmaxAgeinres.cookie- Fix handling very large stacks of sync middleware
- Ignore
Object.prototypevalues in settings throughapp.set/app.get- Invoke
defaultwith same arguments as types inres.format- Support proper 205 responses using
res.send- Use
http-errorsforres.formaterror- deps: [email protected]
- Fix error message for json parse whitespace in
strict- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Add
priorityoption- Fix
expiresoption to reject invalid dates- deps: [email protected]
- Replace internal
evalusage withFunctionconstructor- Use instance methods on
processto check for listeners- deps: [email protected]
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Prevent loss of async hooks context
- deps: [email protected]
- deps: [email protected]
- Fix emitted 416 error missing headers property
- Limit the headers removed for 304 response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Remove code 306
- Rename
425 Unordered Collectionto standard425 Too Early
4.17.3
- deps: accepts@~1.3.8
- deps: mime-types@~2.1.34
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix handling of
__proto__keys- pref: remove unnecessary regexp for trust proxy
4.17.2
- Fix handling of
undefinedinres.jsonp- Fix handling of
undefinedwhen"json escape"is enabled- Fix incorrect middleware execution with unanchored
RegExps- Fix
res.jsonp(obj, status)deprecation message- Fix typo in
res.isJSDoc- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: type-is@~1.6.18
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix
maxAgeoption to reject invalid values- deps: proxy-addr@~2.0.7
- Use
req.socketover deprecatedreq.connection- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- pref: ignore empty http tokens
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ body-parser (indirect, 1.19.0 → 1.20.2) · Repo · Changelog
Release Notes
1.20.2
- Fix strict json error message on Node.js 19+
- deps: content-type@~1.0.5
- perf: skip value escaping when unnecessary
- deps: [email protected]
1.20.1 (from changelog)
- deps: [email protected]
- perf: remove unnecessary object clone
1.20.0
- Fix error message for json parse whitespace in
strict- Fix internal error when inflated body exceeds limit
- Prevent loss of async hooks context
- Prevent hanging when request already read
- deps: [email protected]
- Replace internal
evalusage withFunctionconstructor- Use instance methods on
processto check for listeners- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
1.19.2
- deps: [email protected]
- deps: [email protected]
- Fix handling of
__proto__keys- deps: [email protected]
- deps: [email protected]
1.19.1
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: type-is@~1.6.18
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ content-disposition (indirect, 0.5.3 → 0.5.4) · Repo · Changelog
Commits
See the full diff on Github. The new version differs by 27 commits:
0.5.4build: [email protected]build: [email protected]tests: fix deep equal checkingbuild: support Node.js 17.xdeps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: support Node.js 16.xbuild: support Node.js 15.xbuild: [email protected]build: [email protected]build: support Node.js 14.xbuild: support Node.js 13.xbuild: [email protected]build: [email protected]lint: apply standard 13build: use GitHub Actions instead of Travis CIdocs: fix typo in commentbuild: [email protected]build: [email protected]build: [email protected]build: support Node.js 12.xbuild: support Node.js 11.x
↗️ finalhandler (indirect, 1.1.2 → 1.2.0) · Repo · Changelog
Release Notes
1.2.0
- Remove set content headers that break response
- deps: [email protected]
- deps: [email protected]
- Rename
425 Unordered Collectionto standard425 Too Early
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 54 commits:
1.2.0docs: update copyrightRemove set content headers that break responsetests: fix test case for 500 HEADtests: fix typo in test descriptionbuild: [email protected]build: [email protected]build: [email protected]build: [email protected]docs: add security policydocs: add relevant change to historybuild: [email protected]deps: [email protected]deps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: support Node.js 17.xbuild: [email protected]build: [email protected]build: use nyc for coverage testingbuild: [email protected]build: [email protected]build: [email protected]lint: apply standard 14 stylebuild: [email protected]build: support Node.js 16.xbuild: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]lint: apply standard 13 stylebuild: [email protected]build: support Node.js 15.xbuild: support Node.js 14.xbuild: support Node.js 13.xbuild: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]docs: clarify fn(err) after response startbuild: update CI for npm TLS upgradebuild: use GitHub Actions instead of Travis CI
↗️ ipaddr.js (indirect, 1.9.0 → 1.9.1) · Repo · Changelog
Commits
See the full diff on Github. The new version differs by 3 commits:
↗️ proxy-addr (indirect, 2.0.5 → 2.0.7) · Repo · Changelog
Release Notes
2.0.7
- deps: [email protected]
- Use
req.socketover deprecatedreq.connection
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ raw-body (indirect, 2.4.0 → 2.5.2) · Repo · Changelog
Release Notes
2.5.2 (from changelog)
- Fix error message for non-stream argument
2.5.1 (from changelog)
- Fix error on early async hooks implementations
2.5.0 (from changelog)
- Prevent loss of async hooks context
- Prevent hanging when stream is not readable
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
2.4.3 (from changelog)
- deps: [email protected]
2.4.2 (from changelog)
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
2.4.1 (from changelog)
- deps: [email protected]
- deps: [email protected]
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by more commits than we can show here.
↗️ send (indirect, 0.17.1 → 0.18.0) · Repo · Changelog
Release Notes
0.18.0 (from changelog)
- Fix emitted 416 error missing headers property
- Limit the headers removed for 304 response
- deps: [email protected]
- Replace internal
evalusage withFunctionconstructor- Use instance methods on
processto check for listeners- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
0.17.2 (from changelog)
- pref: ignore empty http tokens
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 60 commits:
0.18.0Limit the headers removed for 304 responsedocs: add security policydocs: fix linux build badge linkdocs: update copyrightdeps: [email protected]deps: [email protected]build: [email protected]build: [email protected]deps: [email protected]deps: [email protected]deps: [email protected]Fix emitted 416 error missing headers propertydeps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]deps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: fix run names in Github Actions0.17.2deps: [email protected]pref: ignore empty http tokensdocs: fix typo in readmebuild: use nyc for coverage testingbuild: [email protected]build: [email protected]build: support Node.js 17.xbuild: [email protected]deps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: ignore package-lockdeps: http-errors@~1.8.1build: [email protected]build: support Node.js 16.xbuild: [email protected]build: support Node.js 15.xbuild: [email protected]build: [email protected]build: support Node.js 14.xbuild: [email protected]build: [email protected]build: update CI for npm TLS upgradebuild: fix Node.js 13.x entrybuild: [email protected]build: [email protected]build: [email protected]build: support Node.js 13.xlint: apply standard 14 stylebuild: [email protected]build: [email protected]build: [email protected]build: use GitHub Actions instead of Travis CI
↗️ serve-static (indirect, 1.14.1 → 1.15.0) · Repo · Changelog
Release Notes
1.15.0
- deps: [email protected]
- Fix emitted 416 error missing headers property
- Limit the headers removed for 304 response
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
1.14.2
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- pref: ignore empty http tokens
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 42 commits:
1.15.0docs: update CI linkbuild: [email protected]deps: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]build: remove package-lock1.14.2tests: add tests for non-existent root pathdocs: fix a typo in the readmedeps: [email protected]build: [email protected]build: use nyc for coverage testingbuild: support Node.js 17.xbuild: [email protected]build: [email protected]build: [email protected]build: [email protected]build: [email protected]lint: apply standard 14 stylebuild: [email protected]build: [email protected]build: support Node.js 16.xbuild: support Node.js 15.xbuild: support Node.js 14.xbuild: support Node.js 13.xbuild: [email protected]build: [email protected]lint: apply standard 13 stylebuild: [email protected]build: [email protected]build: [email protected]build: use GitHub Actions instead of Travis CI
🆕 call-bind (added, 1.0.7)
🆕 define-data-property (added, 1.1.4)
🆕 es-define-property (added, 1.0.0)
🆕 es-errors (added, 1.3.0)
🆕 get-intrinsic (added, 1.2.4)
🆕 gopd (added, 1.0.1)
🆕 has-property-descriptors (added, 1.0.2)
🆕 has-proto (added, 1.0.3)
🆕 hasown (added, 2.0.2)
🆕 set-function-length (added, 1.2.2)
🆕 side-channel (added, 1.0.6)
🗑️ lodash.groupby (removed)
🗑️ lodash.mapvalues (removed)
Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.
All Depfu comment commands
- @depfu rebase
- Rebases against your default branch and redoes this update
- @depfu recreate
- Recreates this PR, overwriting any edits that you've made to it
- @depfu merge
- Merges this PR once your tests are passing and conflicts are resolved
- @depfu cancel merge
- Cancels automatic merging of this PR
- @depfu close
- Closes this PR and deletes the branch
- @depfu reopen
- Restores the branch and reopens this PR (if it's closed)
- @depfu pause
- Ignores all future updates for this dependency and closes this PR
- @depfu pause [minor|major]
- Ignores all future minor/major updates for this dependency and closes this PR
- @depfu resume
- Future versions of this dependency will create PRs again (leaves this PR as is)