🚨 [security] Update express 4.18.2 → 4.19.2 (minor)
Welcome to Depfu
This is one of the first three pull requests with dependency updates we've sent your way. We tried to start with a few easy patch-level updates. Hopefully your tests will pass and you can merge this pull request without too much risk. This should give you an idea how Depfu works in general.
After you merge your first pull request, we'll send you a few more. We'll never open more than seven PRs at the same time so you're not getting overwhelmed with updates.
Let us know if you have any questions. Thanks so much for giving Depfu a try!
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 upgrade. Please take a good look at what changed and the test results before merging this pull request.
What changed?
✳ ️ express (4.18.2 → 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
encodeurl
on the contents before passing it to thelocation
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 withinres.redirect()
.Patches
An initial fix went out with
express@4.19.0
, we then patched a feature regression in4.19.1
and 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').parse
ornew URL
. These are steps you can take on your own before passing the user input string tores.location
orres.redirect
.References
#5539
koajs/koa#1800
https://expressjs.com/en/4x/api.html#res.location
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: body-parser@1.20.2
- Fix strict json error message on Node.js 19+
- deps: content-type@~1.0.5
- deps: raw-body@2.5.2
Other Changes
- Use https: protocol instead of deprecated git: protocol by @vcsjones in #5032
- build: Node.js@16.18 and Node.js@18.12 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 Node.js@19.7 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
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 59 commits:
4.19.2
Improved fix for open redirect allow list bypass
4.19.1
Allow passing non-strings to res.location with new encoding handling checks fixes #5554 #5555
fixed un-edited version in history.md for 4.19.0
build: fix build due to inconsistent supertest behavior in older versions
4.19.0
Prevent open redirect allow list bypass due to encodeurl
Add note on how to update docs for new release (#5541)
deps: cookie@0.6.0
docs: loosen TC activity rules
docs: nominating @wesleytodd to be project captian
docs: update release date
4.18.3
build: pin Node 21.x to minor
build: pin Node 21.x to minor
build: support Node.js 21.6.2
build: support Node.js 21.x in appveyor
build: support Node.js 21.x
build: support Node.js 20.x in appveyor
build: support Node.js 20.x
examples: improve view count in cookie-sessions
build: Node.js@18.19
docs: add documentation for benchmarks
examples: remove multipart example
tests: fix handling multiple callbacks
docs: add project captains to contribution
docs: update TC governance rules
build: actions/checkout@v4
build: Node.js@19.9
build: Node.js@18.17
build: eslint@8.47.0
tests: use random port in listen test
build: Node.js@16.20
build: use nyc@14.1.1 for Node.js < 10
lint: remove unused function arguments in Route tests
build: Node.js@18.15
build: eslint@8.36.0
build: ejs@3.1.9
tests: wait for server close in app.listen()
build: fix code coverage aggregate upload
Fix routing requests without method
build: support Node.js 19.x
docs: fix typos in history
build: eslint@8.34.0
build: mocha@10.2.0
deps: body-parser@1.20.2
docs: add missing JSDoc param for parseExtendedQueryString
build: use $GITHUB_OUTPUT for environment list
build: Node.js@18.14
build: Node.js@16.19
lint: remove unused parameters in examples
docs: fix typos in JSDoc comments
lint: remove unused parameter from internal function
lint: remove unused function arguments in tests
build: actions/checkout@v3
build: Node.js@18.12
build: Node.js@16.18
docs: update git clone to https protocol
↗ ️ body-parser (indirect, 1.20.1 → 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: raw-body@2.5.2
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 20 commits:
1.20.2
Fix strict json error message on Node.js 19+
deps: raw-body@2.5.2
build: eslint@8.34.0
build: Node.js@18.14
build: Node.js@14.21
deps: content-type@~1.0.5
build: eslint-plugin-promise@6.1.1
build: supertest@6.3.3
build: mocha@10.2.0
build: eslint-plugin-import@2.27.5
build: eslint@8.32.0
build: Node.js@16.19
docs: switch badges to badgen
build: Node.js@18.13
build: actions/download-artifact@v3
build: use $GITHUB_OUTPUT for environment list
build: actions/upload-artifact@v3
build: actions/checkout@v3
build: mocha@10.1.0
↗ ️ call-bind (indirect, 1.0.2 → 1.0.7) · Repo · Changelog
Release Notes
1.0.7 (from changelog)
Commits
1.0.6 (from changelog)
Commits
1.0.5 (from changelog)
Commits
1.0.3 (from changelog)
Commits
- [actions] reuse common workflows
a994df6
- [meta] use
npmignore
to autogenerate an npmignore fileeef3ef2
- [readme] flesh out content
1845ccf
- [actions] use
node/install
instead ofnode/run
; usecodecov
action5b47d53
- [Refactor] use
set-function-length
a0e165c
- [Dev Deps] update
@ljharb/eslint-config
,aud
,tape
9c50103
- [meta] simplify "exports"
019c6d0
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,auto-changelog
,safe-publish-latest
,tape
23bd718
- [actions] update codecov uploader
62552d7
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,auto-changelog
,tape
ec81665
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,safe-publish-latest
,tape
35d67fc
- [Dev Deps] update
eslint
,@ljharb/eslint-config
,aud
,tape
0266d8d
- [Dev Deps] update
@ljharb/eslint-config
,aud
,tape
43a5b28
- [Deps] update
define-data-property
,function-bind
,get-intrinsic
780eb36
- [Dev Deps] update
aud
,tape
90d50ad
- [meta] use
prepublishOnly
script for npm 7+44c5433
- [Deps] update
get-intrinsic
86bfbfc
- [Deps] update
get-intrinsic
5c53354
- [actions] update checkout action
4c393a8
- [Deps] update
get-intrinsic
4e70bde
- [Deps] update
get-intrinsic
55ae803
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 34 commits:
v1.0.7
[Refactor] use `es-define-property`
[Deps] update `get-intrinsic`, `set-function-length`
v1.0.6
[Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic`
[meta] add missing `engines.node`
[Deps] update `get-intrinsic`, `set-function-length`
[Dev Deps] update `aud`, `npmignore`, `tape`
v1.0.5
[Deps] update `set-function-length`
[Fix] throw an error on non-functions as early as possible
v1.0.4
v1.0.3
[Refactor] use `set-function-length`
[Deps] update `define-data-property`, `function-bind`, `get-intrinsic`
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape`
[Deps] update `get-intrinsic`
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape`
[Deps] update `get-intrinsic`
[Dev Deps] update `aud`, `tape`
[actions] update checkout action
[meta] use `npmignore` to autogenerate an npmignore file
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape`
[Deps] update `get-intrinsic`
[actions] reuse common workflows
[meta] simplify "exports"
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape`
[readme] flesh out content
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape`
[actions] update codecov uploader
[Deps] update `get-intrinsic`
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape`
[actions] use `node/install` instead of `node/run`; use `codecov` action
[meta] use `prepublishOnly` script for npm 7+
↗ ️ content-type (indirect, 1.0.4 → 1.0.5) · Repo · Changelog
Release Notes
1.0.5
- perf: skip value escaping when unnecessary
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 74 commits:
1.0.5
build: Node.js@10.24
build: add version script for npm version releases
build: mocha@10.2.0
build: eslint@8.32.0
lint: apply standard 15 style
perf: skip value escaping when unnecessary
tests: fix deep-equal assertions
lint: remove deprecated String.prototype.substr
build: support Node.js 19.x
build: mocha@9.2.2
build: eslint-plugin-promise@5.2.0
build: eslint@7.32.0
lint: apply standard 14 style
build: nyc@15.1.0
build: Node.js@8.17
build: Node.js@10.23
build: mocha@8.4.0
build: support Node.js 18.x
build: support Node.js 17.x
lint: apply standard 13 style
build: eslint-plugin-standard@4.1.0
build: eslint-plugin-promise@4.2.1
build: eslint-plugin-import@2.27.5
build: support Node.js 16.x
build: support Node.js 15.x
build: mocha@7.2.0
build: eslint@6.8.0
build: nyc@14.1.1
build: support Node.js 14.x
build: support Node.js 13.x
build: support Node.js 12.x
build: eslint-plugin-import@2.26.0
build: support Node.js 11.x
build: eslint@5.16.0
build: mocha@6.2.3
build: use GitHub Actions instead of Travis CI
build: use nyc for coverage testing
build: speed up logic in Travis CI build steps
build: eslint-plugin-node@8.0.1
build: eslint-plugin-import@2.16.0
build: Node.js@10.15
build: Node.js@8.15
build: Node.js@6.16
build: eslint-plugin-import@2.15.0
build: eslint@5.12.1
build: mocha@5.2.0
build: restructure Travis CI build steps
build: migrate to Travis CI trusty image
build: Node.js@10.13
build: Node.js@8.12
lint: apply standard 12 style
tests: use strict equality
tests: replace deprecated assert.deepEqual with deep-equal
docs: switch badges to badgen
build: support Node.js 10.x
build: Node.js@9.11
build: eslint-plugin-standard@3.1.0
build: eslint-plugin-import@2.14.0
build: Node.js@8.11
build: Node.js@6.14
build: Node.js@4.9
build: eslint-plugin-promise@3.8.0
build: eslint-plugin-import@2.13.0
build: eslint@4.19.1
build: use yaml eslint configuration
build: Node.js@9.9
build: Node.js@8.10
build: Node.js@6.13
doc: fix some formatting
lint: apply standard 10 style
build: support Node.js 9.x
build: Node.js@8.9
build: Node.js@6.12
↗ ️ cookie (indirect, 0.5.0 → 0.6.0) · Repo · Changelog
Release Notes
0.6.0 (from changelog)
- Add
partitioned
option
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 33 commits:
0.6.0
build: top-sites@1.1.194
docs: switch badges to badgen
Add partitioned option
docs: fix typos in HISTORY
docs: fix typo in HISTORY
Fix typo in JSDoc
build: mocha@10.2.0
build: eslint-plugin-markdown@3.0.1
build: eslint@8.53.0
build: Node.js@16.20
build: Node.js@19.9
build: Node.js@18.18
build: support Node.js 21.x
build: support Node.js 20.x
build: use $GITHUB_OUTPUT for environment list
build: actions/checkout@v3
build: eslint@8.29.0
build: mocha@10.1.0
build: Node.js@18.12
build: Node.js@16.19
build: Node.js@14.21
build: support Node.js 19.x
build: eslint@8.23.1
build: Node.js@16.17
build: Node.js@18.9
build: eslint-plugin-markdown@3.0.0
build: eslint@8.19.0
build: Node.js@16.16
build: Node.js@14.20
build: support Node.js 18.x
build: mocha@10.0.0
build: ubuntu@20.04
↗ ️ function-bind (indirect, 1.1.1 → 1.1.2) · Repo · Changelog
Commits
See the full diff on Github. The new version differs by 26 commits:
v1.1.2
[meta] add `auto-changelog`
[Robustness] remove runtime dependency on all builtins except `.apply`
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape`
[meta] add `funding` field; create FUNDING.yml
[Tests] use `aud` instead of `npm audit`
[meta] update `.gitignore`
[Tests] switch to nyc for coverage
[meta] add `safe-publish-latest`
[Dev Deps] update `@ljharb/eslint-config`, `tape`
[actions] fix permissions
Revert "Point to the correct file"
Merge pull request #16 from svedova/patch-1
Point to the correct file
[readme] update badges
[meta] use `npmignore` to autogenerate an npmignore file
[Tests] migrate tests to Github Actions
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`
[meta] create SECURITY.md
[Tests] fix eslint errors from #15
[Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape`
[Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests
[Tests] add `npm run audit`
[Tests] remove `jscs`
[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape`
Docs: enable badges; update wording
↗ ️ get-intrinsic (indirect, 1.1.3 → 1.2.4) · Repo · Changelog
Release Notes
1.2.4 (from changelog)
Commits
- [Refactor] use all 7 <+ ES6 Errors from
es-errors
bcac811
1.2.3 (from changelog)
Commits
- [Refactor] use
es-errors
, so things that only need those do not needget-intrinsic
f11db9c
- [Dev Deps] update
aud
,es-abstract
,mock-property
,npmignore
b7ac7d1
- [meta] simplify
exports
faa0cc6
- [meta] add missing
engines.node
774dd0b
- [Dev Deps] update
tape
5828e8e
- [Robustness] use null objects for lookups
eb9a11f
- [meta] add
sideEffects
flag89bcc7a
1.2.2 (from changelog)
Commits
1.2.1 (from changelog)
Commits
1.2.0 (from changelog)
Commits
- [actions] update checkout action
ca6b12f
- [Dev Deps] update
@ljharb/eslint-config
,es-abstract
,object-inspect
,tape
41a3727
- [Fix] ensure
Error.prototype
is undeniablec511e97
- [Dev Deps] update
aud
,es-abstract
,tape
1bef8a8
- [Dev Deps] update
aud
,es-abstract
0d41f16
- [New] add
BigInt64Array
andBigUint64Array
a6cca25
- [Tests] use
gopd
ecf7722
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 25 commits:
v1.2.4
[Refactor] use all 7 <+ ES6 Errors from `es-errors`
v1.2.3
[Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic`
[Dev Deps] update `tape`
[meta] add missing `engines.node`
[Robustness] use null objects for lookups
[Dev Deps] update `aud`, `es-abstract`, `mock-property`, `npmignore`
[meta] simplify `exports`
[meta] add `sideEffects` flag
v1.2.2
[Refactor] use `hasown` instead of `has`
[Deps] update `function-bind`
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape`
v1.2.1
[Fix] avoid a crash in envs without `__proto__`
[Dev Deps] update `es-abstract`
v1.2.0
[New] add `BigInt64Array` and `BigUint64Array`
[Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape`
[Fix] ensure `Error.prototype` is undeniable
[Dev Deps] update `aud`, `es-abstract`
[Tests] use `gopd`
[Dev Deps] update `aud`, `es-abstract`, `tape`
[actions] update checkout action
↗ ️ object-inspect (indirect, 1.12.2 → 1.13.1) · Repo · Changelog
Release Notes
1.13.1 (from changelog)
Commits
- [Fix] in IE 8, global can !== window despite them being prototypes of each other
30d0859
1.13.0 (from changelog)
Commits
- [New] add special handling for the global object
431bab2
- [Dev Deps] update
@ljharb/eslint-config
,aud
,tape
fd4f619
- [Dev Deps] update
mock-property
,tape
b453f6c
- [Dev Deps] update
error-cause
e8ffc57
- [Dev Deps] update
tape
054b8b9
- [Dev Deps] temporarily remove
aud
due to breaking change in transitive deps2476845
- [Dev Deps] pin
glob
, since v10.3.8+ requires a brokenjackspeak
383fa5e
- [Dev Deps] pin
jackspeak
since 2.1.2+ depends on npm aliases, which kill the install process in npm < 668c244c
1.12.3 (from changelog)
Commits
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 17 commits:
v1.13.1
[Fix] in IE 8, global can !== window despite them being prototypes of each other
v1.13.0
[Dev Deps] update `error-cause`
[Dev Deps] temporarily remove `aud` due to breaking change in transitive deps
[New] add special handling for the global object
[Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak`
[Dev Deps] update `mock-property`, `tape`
[Dev Deps] update `tape`
[Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape`
v1.12.3
[Fix] in eg FF 24, collections lack forEach
[Dev Deps] update `@ljharb/eslint-config`, `aud`, `error-cause`
[Dev Deps] update `aud`, `es-value-fixtures`, `tape`
[actions] update rebase action to use reusable workflow
[Tests] add `@pkgjs/support` to `postlint`
↗ ️ raw-body (indirect, 2.5.1 → 2.5.2) · Repo · Changelog
Release Notes
2.5.2 (from changelog)
- Fix error message for non-stream argument
Does any of this look wrong? Please let us know.
Commits
See the full diff on Github. The new version differs by 37 commits:
2.5.2
tests: add test for http2 stream api
Fix error message for non-stream argument
docs: update CI badge
build: Node.js@16.19
build: Node.js@18.14
build: Node.js@19.6
build: mocha@10.2.0
build: eslint-plugin-promise@6.1.1
build: eslint@8.34.0
build: eslint-plugin-import@2.27.5
build: actions/download-artifact@v3
build: use $GITHUB_OUTPUT for environment list
build: actions/upload-artifact@v3
build: actions/checkout@v3
build: Node.js@18.12
build: Node.js@16.18
build: Node.js@14.21
build: mocha@10.1.0
build: support Node.js 19.x
build: eslint@8.28.0
build: Node.js@18.10
build: eslint-plugin-markdown@3.0.0
build: eslint-plugin-promise@6.0.1
build: eslint@8.21.0
build: Node.js@14.20
build: Node.js@16.16
build: Node.js@18.6
lint: apply standard 15 style
build: eslint@8.17.0
build: mocha@10.0.0
build: Node.js@16.15
build: support Node.js 18.x
build: eslint@8.13.0
build: eslint-plugin-import@2.26.0
build: mocha@9.2.2
build: Node.js@17.9
🆕 define-data-property (added, 1.1.4)
🆕 es-define-property (added, 1.0.0)
🆕 es-errors (added, 1.3.0)
🆕 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)
🗑 ️ has (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)