-
Notifications
You must be signed in to change notification settings - Fork 0
fix(deps): update dependency socket.io to v4 [security] #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
renovate
wants to merge
1
commit into
master
Choose a base branch
from
renovate/npm-socket.io-vulnerability
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3719344 to
0662583
Compare
0662583 to
2fa03a8
Compare
2fa03a8 to
c57c6c2
Compare
c57c6c2 to
149ad59
Compare
149ad59 to
19740df
Compare
19740df to
07003d0
Compare
07003d0 to
6ccf6b9
Compare
6ccf6b9 to
ddd7880
Compare
ddd7880 to
0c80785
Compare
0c80785 to
b36d42e
Compare
b36d42e to
92972d5
Compare
92972d5 to
326b4e2
Compare
374255d to
1c79c6e
Compare
1c79c6e to
9eb1217
Compare
97c57fd to
8b526b0
Compare
8b526b0 to
aba0353
Compare
aba0353 to
62d4096
Compare
62d4096 to
721b0d5
Compare
721b0d5 to
8878130
Compare
8878130 to
410a013
Compare
410a013 to
c8dc0a8
Compare
c8dc0a8 to
7c56be0
Compare
7c56be0 to
306a8a4
Compare
306a8a4 to
a59a0a1
Compare
a59a0a1 to
d85f97b
Compare
d85f97b to
28c64d2
Compare
28c64d2 to
241e55b
Compare
241e55b to
6e7fa82
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
~0.9.13→~4.8.0GitHub Vulnerability Alerts
CVE-2020-28481
The package socket.io before 2.4.0 are vulnerable to Insecure Defaults due to CORS Misconfiguration. All domains are whitelisted by default.
CVE-2024-38355
Impact
A specially crafted Socket.IO packet can trigger an uncaught exception on the Socket.IO server, thus killing the Node.js process.
Affected versions
4.6.2...latest3.0.0...4.6.1[email protected](at least)2.3.0...2.5.0[email protected]Patches
This issue is fixed by socketio/socket.io@15af22f, included in
[email protected](released in May 2023).The fix was backported in the 2.x branch today: socketio/socket.io@d30630b
Workarounds
As a workaround for the affected versions of the
socket.iopackage, you can attach a listener for the "error" event:For more information
If you have any questions or comments about this advisory:
Thanks a lot to Paul Taylor for the responsible disclosure.
References
Release Notes
socketio/socket.io (socket.io)
v4.8.3Compare Source
v4.8.2Compare Source
Bug Fixes
Dependencies
engine.io-client@~6.6.1(no change)ws@~8.17.1(no change)v4.8.1Compare Source
Bug Fixes
Dependencies
engine.io-client@~6.6.1(no change)ws@~8.17.1(no change)v4.8.0Compare Source
Features
Custom transport implementations
The
transportsoption now accepts an array of transport implementations:Here is the list of provided implementations:
Fetchfetch()method.NodeXHRXMLHttpRequestobject provided by thexmlhttprequest-sslpackage.XHRXMLHttpRequestobject.NodeWebSocketWebSocketobject provided by thewspackage.WebSocketWebSocketobject.WebTransportWebTransportobject.Usage:
FetchNodeXHRXHRNodeWebSocketWebSocketWebTransport(1) since v18.0.0
(2) since v21.0.0
Added in f4d898e and b11763b.
Test each low-level transports
When setting the
tryAllTransportsoption totrue, if the first transport (usually, HTTP long-polling) fails, then the other transports will be tested too:This feature is useful in two cases:
transports: ["websocket", "polling"])The only potential downside is that the connection attempt could take more time in case of failure, as there have been reports of WebSocket connection errors taking several seconds before being detected (that's one reason for using HTTP long-polling first). That's why the option defaults to
falsefor now.Added in 579b243.
Bug Fixes
Dependencies
engine.io-client@~6.6.1(diff and diff)ws@~8.17.1(diff)v4.7.5Compare Source
Bug Fixes
Links
engine.io@~6.5.2(no change)ws@~8.11.0(no change)v4.7.4Compare Source
Bug Fixes
Links
engine.io@~6.5.2(no change)ws@~8.11.0(no change)v4.7.3Compare Source
Bug Fixes
Links
engine.io@~6.5.2(no change)ws@~8.11.0(no change)v4.7.2Compare Source
Bug Fixes
Links
engine.io@~6.5.2(diff)ws@~8.11.0(no change)v4.7.1Compare Source
The client bundle contains a few fixes regarding the WebTransport support.
Links
engine.io@~6.5.0(no change)ws@~8.11.0(no change)v4.7.0Compare Source
Bug Fixes
Features
Support for WebTransport
The Socket.IO server can now use WebTransport as the underlying transport.
WebTransport is a web API that uses the HTTP/3 protocol as a bidirectional transport. It's intended for two-way communications between a web client and an HTTP/3 server.
References:
Until WebTransport support lands in Node.js, you can use the
@fails-components/webtransportpackage:Added in 123b68c.
Client bundles with CORS headers
The bundles will now have the right
Access-Control-Allow-xxxheaders.Added in 63f181c.
Links
engine.io@~6.5.0(diff)ws@~8.11.0(no change)v4.6.2Compare Source
Bug Fixes
typescondition to the top (#4698) (3d44aae)Links
engine.io@~6.4.2(diff)ws@~8.11.0(no change)v4.6.1Compare Source
Bug Fixes
Links
engine.io@~6.4.1(diff)ws@~8.11.0(no change)v4.6.0Compare Source
Bug Fixes
Features
Promise-based acknowledgements
This commit adds some syntactic sugar around acknowledgements:
emitWithAck()serverSideEmitWithAck()Added in 184f3cf.
Connection state recovery
This feature allows a client to reconnect after a temporary disconnection and restore its state:
Usage:
Here's how it works:
idattribute, which is public and can be freely shared)The in-memory adapter already supports this feature, and we will soon update the Postgres and MongoDB adapters. We will also create a new adapter based on Redis Streams, which will support this feature.
Added in 54d5ee0.
Compatibility (for real) with Express middlewares
This feature implements middlewares at the Engine.IO level, because Socket.IO middlewares are meant for namespace authorization and are not executed during a classic HTTP request/response cycle.
Syntax:
A workaround was possible by using the allowRequest option and the "headers" event, but this feels way cleaner and works with upgrade requests too.
Added in 24786e7.
Error details in the disconnecting and disconnect events
The
disconnectevent will now contain additional details about the disconnection reason.Added in 8aa9499.
Automatic removal of empty child namespaces
This commit adds a new option, "cleanupEmptyChildNamespaces". With this option enabled (disabled by default), when a socket disconnects from a dynamic namespace and if there are no other sockets connected to it then the namespace will be cleaned up and its adapter will be closed.
Added in 5d9220b.
A new "addTrailingSlash" option
The trailing slash which was added by default can now be disabled:
In the example above, the clients can omit the trailing slash and use
/socket.ioinstead of/socket.io/.Added in d0fd474.
Performance Improvements
Links:
engine.io@~6.4.0(diff)ws@~8.11.0(diff)v4.5.4Compare Source
This release contains a bump of:
engine.ioin order to fix CVE-2022-41940socket.io-parserin order to fix CVE-2022-2421.Links:
engine.io@~6.2.1(diff)ws@~8.2.3v4.5.3Compare Source
Bug Fixes
Links:
~6.2.0~8.2.3v4.5.2Compare Source
Bug Fixes
Links:
~6.2.0~8.2.3v4.5.1Compare Source
Bug Fixes
Links:
~6.2.0~8.2.3v4.5.0Compare Source
Bug Fixes
Features
This is similar to
onAny(), but for outgoing packets.Syntax:
Syntax:
So that clients in HTTP long-polling can decide how many packets they have to send to stay under the maxHttpBufferSize
value.
This is a backward compatible change which should not mandate a new major revision of the protocol (we stay in v4), as
we only add a field in the JSON-encoded handshake data:
Links:
~6.2.0(diff)~8.2.3v4.4.1Compare Source
Bug Fixes
RemoteSocket.datatype safe (#4234) (770ee59)SocketDatatype to custom namespaces (#4233) (f2b8de7)Links:
~6.1.0(diff)~8.2.3v4.4.0Compare Source
Bug Fixes
Features
socket.data(#4159) (fe8730c)Links:
~6.1.0(diff)~8.2.3v4.3.2Compare Source
Bug Fixes
Links:
~6.0.0~8.2.3v4.3.1Compare Source
Bug Fixes
Links:
~6.0.0~8.2.3v4.3.0Compare Source
For this release, most of the work was done on the client side, see here.
Bug Fixes
Features
Links:
~6.0.0(diff)~8.2.3(diff)v4.2.0Compare Source
Bug Fixes
Features
Links:
~5.2.0~7.4.2v4.1.3Compare Source
Bug Fixes
Links:
~5.1.0~7.4.2v4.1.2Compare Source
Bug Fixes
Links:
~5.1.0~7.4.2v4.1.1Compare Source
Bug Fixes
Links:
~5.1.0~7.4.2v4.1.0Compare Source
Blog post: https://socket.io/blog/socket-io-4-1-0/
Features
engine.io)engine.io)Links:
~5.1.0~7.4.2v4.0.2Compare Source
Bug Fixes
Links:
~5.0.0~7.4.2v4.0.1Compare Source
Bug Fixes
Links:
~5.0.0~7.4.2v4.0.0Compare Source
Blog post: https://socket.io/blog/socket-io-4-release/
Migration guide: https://socket.io/docs/v3/migrating-from-3-x-to-4-0/
Bug Fixes
Features
BREAKING CHANGES
io.to(...)now returns an immutable operatorPreviously, broadcasting to a given room (by calling
io.to()) would mutate the io instance, which could lead to surprising behaviors, like:Calling
io.to()(or any other broadcast modifier) will now return an immutable instance.Links:
~5.0.0~7.4.2v3.1.2Compare Source
Bug Fixes
Links:
~4.1.0~7.4.2v3.1.1Compare Source
Bug Fixes
Links:
~4.1.0~7.4.2v3.1.0Compare Source
In order to ease the migration to Socket.IO v3, the v3 server is now able to communicate with v2 clients:
Note: the
allowEIO3refers to the version 3 of the Engine.IO protocol which is used in Socket.IO v2Features
Bug Fixes
Links:
~4.1.0~7.4.2v3.0.5Compare Source
Bug Fixes
Reverts
Links:
~4.0.6~7.4.2v3.0.4Compare Source
Links:
~4.0.0^7.1.2v3.0.3Compare Source
Links:
~4.0.0^7.1.2v3.0.2Compare Source
Bug Fixes
Links:
~4.0.0^7.1.2v3.0.1Compare Source
Bug Fixes
Links:
~4.0.0^7.1.2v3.0.0Compare Source
More details about this release in the blog post: https://socket.io/blog/socket-io-3-release/
Dedicated migration guide: https://socket.io/docs/migrating-from-2-x-to-3-0/
Bug Fixes
Features
BREAKING CHANGES
the Socket#use() method is removed (see 5c73733)
Socket#join() and Socket#leave() do not accept a callback argument anymore.
Before:
After:
Before:
The 'origins' option was used in the allowRequest method, in order to
determine whether the request should pass or not. And the Engine.IO
server would implicitly add the necessary Access-Control-Allow-xxx
headers.
After:
The already existing 'allowRequest' option can be used for validation:
Socket#rooms is now a Set instead of an object
Namespace#connected is now a Map instead of an object
there is no more implicit connection to the default namespace:
This method was kept for backward-compatibility with pre-1.0 versions.
Links:
~4.0.0^7.1.2v2.5.1Compare Source
Bug Fixes
Links:
-~3.6.0(no change)~7.5.10v2.5.0Compare Source
The default value of the
maxHttpBufferSizeoption has been decreased from 100 MB to 1 MB, in order to prevent attacks by denial of service.Security advisory: GHSA-j4f2-536g-r55m
Bug Fixes
Links:
~3.6.0(diff)~7.4.2v2.4.1Compare Source
This release reverts the breaking change introduced in
2.4.0(f78a575).If you are using Socket.IO v2, you should explicitly allow/disallow cross-origin requests: