chore(deps): ws@8.21.0 (fixes DoS vulnerability)#5502
Conversation
|
@AviVahl thanks for your pull request. However, we have had breaking changes from dependencies affecting users in the past, hence the current |
|
@darrachequesne done, even though I think the approach of locking it partially has its own downsides. |
4c3e4c4 to
f99a068
Compare
|
Alright, I've rebased so that all |
|
heya @darrachequesne |
|
@darrachequesne it really would be appreciated if you could re-evaluate this policy. It’s rather a waste of time for every security-conscious user to have to either put an override in place or wait for a socketio release in order to get a patch for the latest transitive issue in one of the thousands of dependencies in the average project. With the explosion of vulnerabilities right now, I don’t think this is a defensible position compared to the alternative, and ws don’t seem likely to start back porting fixes to minor versions. You always have your lock file for your own tests without having to constrain all users? |
|
@chadlwilson I understand your concern. However, even with SemVer, minor releases may introduce new behavior, new protocol interactions, or dependency graph changes. Since the Socket.IO packages are tightly coupled and interoperability between server/client/parser/engine packages matters, we prefer to adopt minor updates explicitly after validating them in the monorepo. Using |
|
I understand the theory - but I think this is a poor trade-off to decide on behalf of your users. To save them potential theoretical time in case something is broken by a new ws feature, it imposes a separate guaranteed amount of manual effort for nearly every security release (given nearly monthly minor bumps to ws which socket.io doesn't keep up with) Even with ^, conservative users will still be locking their transitives themselves and won't automatically upgrade within the range anyway to be affected by some change. However more aggressive users may choose to upgrade their transitives (via dependabot/renovate or whatnot) but that's not the default and it's at their risk. Meanwhile everyone would get automated dependabot PRs without being blocked and needing to chase (or override). By locking like this you're making the decision on behalf of your users and working against the systems designed to keep people safe at low cost - automation. I'd encourage you to think about what this would mean for productivity in the ecosystem if every package within the ecosystem took this approach. All users would be would be dealing with forced overrides everywhere at all times and getting nothing done. Anyway, it's your project and you can do what you think is best. But please consider the tax you are imposing and whether you want your users to groan every time socket.io is indirectly responsible for yet another vulnerability they have to spend time manually digging into and ending up digging around unreleased PRs like this rather than just patching and getting back to delivering value. I only commented because this is the 2nd or 3rd time within as many months I've had to manually review a stuck vuln patch, and when managing OSS projects with thousands of dependencies - its rather obvious that socket.io is an outlier. |
Thank you. Works from our end. Needless to say that I agree with @chadlwilson Anyhow, I appreciate this project and all your work. ❤️ |
change ws requests to carets, as package respects semverhttps://github.com/websockets/ws/releases/tag/8.21.0
@darrachequesne since this is the third time I'm updating this one, I've also changed it to carets so that any future vulnerability fixes are automatically targeted.The kind of change this PR does introduce