feathersjs / feathers

The API and real-time application framework
https://feathersjs.com
MIT License
15.06k stars 751 forks source link

a 4.5.12 release for @feathersjs/socketio with less strict socket.io version dependency #2429

Closed evansrobert closed 2 years ago

evansrobert commented 3 years ago

Hi, @daffl, there is a high severity vulnerability introduced by package engine.io:

Issue Description

I noticed that a vulnerability is introduced in @feathersjs/socketio@4.5.11: Vulnerability CVE-2020-36048 (high severity) affects package engine.io (versions:<4.0.0): https://snyk.io/vuln/SNYK-JS-ENGINEIO-1056749 The above vulnerable package is referenced by @feathersjs/socketio@4.5.11 via: @feathersjs/socketio@4.5.11 ➔ socket.io@2.4.1 ➔ engine.io@3.5.0

Since @feathersjs/socketio@4.5.11 (7,870 downloads per week) is referenced by a large number of downstream projects (e.g., @alinex/server 1.3.7 (latest version), @z1/lib-feature-box-server 0.5.0 (latest version), @z1/lib-api-box-sql 0.5.0 (latest version), @conneryn/cli 0.2.23 (latest version), @c6o/cli 0.3.2 (latest version)), the vulnerability CVE-2020-36048 can be propagated into these downstream projects and expose security threats to them via the following package dependency paths: (1)@z1/lib-api-box-sql@0.5.0 ➔ @z1/lib-api-box-core@0.5.0 ➔ @z1/preset-feathers-server-core@0.5.0 ➔ @feathersjs/socketio@4.5.11 ➔ socket.io@2.4.1 ➔ engine.io@3.5.0
......

If @feathersjs/socketio@4.5.* removes the vulnerable package from the above version, then its fixed version can help downstream users decrease their pain.

Given the large number of downstream users, could you help update your package to remove the vulnerability from @feathersjs/socketio@4.5.11 ?

Fixing suggestions

In @feathersjs/socketio@4.5.12, maybe you can kindly try to perform the following upgrade : socket.io ^2.3.0 ➔ ^3.0.0;

Note: socket.io@3.0.0(>=3.0.0-rc1) directly depends on engine.io@4.0.6 which has fixed the vulnerability CVE-2020-36048.

Thank you for your attention to this issue and welcome to share other ways to resolve the issue.

Best regards, ^_^

daffl commented 3 years ago

Unfortunately, unless this has been fixed in a later release, upgrading to socket.io 3 will break every existing client in the worst way possible in that requests just get stuck forever with no obvious error.

Since it is a breaking change it needs to be included in a major version which is already the case for all dependencies in the v5 prerelease.