ch1ller0 / fridgefm-radio-core

Simple lightweight package for creating your own radio station via NodeJS heavily inspired by Shoutcast and Icecast.
https://fridgefm.com
MIT License
44 stars 8 forks source link

[Security] Bump ws from 7.4.3 to 7.5.2 #292

Closed dependabot-preview[bot] closed 3 years ago

dependabot-preview[bot] commented 3 years ago

Bumps ws from 7.4.3 to 7.5.2. This update includes security fixes.

Vulnerabilities fixed

Sourced from The GitHub Security Advisory Database.

ReDoS in Sec-Websocket-Protocol header

Impact

A specially crafted value of the Sec-Websocket-Protocol header can be used to significantly slow down a ws server.

Proof of concept

for (const length of [1000, 2000, 4000, 8000, 16000, 32000]) {
  const value = 'b' + ' '.repeat(length) + 'x';
  const start = process.hrtime.bigint();

value.trim().split(/ *, */);

const end = process.hrtime.bigint();

console.log('length = %d, time = %f ns', length, end - start); }

Patches

... (truncated)

Affected versions: >= 7.0.0 < 7.4.6

Sourced from The GitHub Security Advisory Database.

ReDoS in Sec-Websocket-Protocol header

Impact

A specially crafted value of the Sec-Websocket-Protocol header can be used to significantly slow down a ws server.

Proof of concept

for (const length of [1000, 2000, 4000, 8000, 16000, 32000]) {
  const value = 'b' + ' '.repeat(length) + 'x';
  const start = process.hrtime.bigint();

value.trim().split(/ *, */);

const end = process.hrtime.bigint();

console.log('length = %d, time = %f ns', length, end - start); }

Patches

... (truncated)

Affected versions: >= 5.0.0 < 7.4.5

Sourced from The GitHub Security Advisory Database.

ReDoS in Sec-Websocket-Protocol header

Impact

A specially crafted value of the Sec-Websocket-Protocol header can be used to significantly slow down a ws server.

Proof of concept

for (const length of [1000, 2000, 4000, 8000, 16000, 32000]) {
  const value = 'b' + ' '.repeat(length) + 'x';
  const start = process.hrtime.bigint();

value.trim().split(/ *, */);

const end = process.hrtime.bigint();

console.log('length = %d, time = %f ns', length, end - start); }

Patches

... (truncated)

Affected versions: >= 5.0.0 < 7.4.6

Release notes

Sourced from ws's releases.

7.5.2

Bug fixes

  • The opening handshake is now aborted if the client receives a Sec-WebSocket-Extensions header but no extension was requested or if the server indicates an extension not requested by the client (aca94c86).

7.5.1

Bug fixes

  • Fixed an issue that prevented the connection from being closed properly if an error occurred simultaneously on both peers (b434b9f1).

7.5.0

Features

  • Some errors now have a code property describing the specific type of error that has occurred (#1901).

Bug fixes

  • A close frame is now sent to the remote peer if an error (such as a data framing error) occurs (8806aa9a).
  • The close code is now always 1006 if no close frame is received, even if the connection is closed due to an error (8806aa9a).

7.4.6

Bug fixes

  • Fixed a ReDoS vulnerability (00c425ec).

A specially crafted value of the Sec-Websocket-Protocol header could be used to significantly slow down a ws server.

for (const length of [1000, 2000, 4000, 8000, 16000, 32000]) {
  const value = 'b' + ' '.repeat(length) + 'x';
  const start = process.hrtime.bigint();

value.trim().split(/ *, */);

const end = process.hrtime.bigint();

console.log('length = %d, time = %f ns', length, end - start); }

The vulnerability was responsibly disclosed along with a fix in private by Robert McLaughlin from University of California, Santa Barbara.

... (truncated)

Commits
  • 0ad1f9d [dist] 7.5.2
  • aca94c8 [fix] Abort the handshake if an unexpected extension is received
  • 38c6c73 [dist] 7.5.1
  • 2916006 [test] Add more tests for WebSocket.prototype.close()
  • b434b9f [fix] Fix close edge cases
  • c3fdc99 [minor] Fix misleading comment
  • 145480a [test] Fix repeated typo
  • e3f0c17 [dist] 7.5.0
  • 1d3f4cb [doc] Fix anchor tags for error codes
  • 6eea0d4 [doc] Fix typo
  • Additional commits viewable in compare view


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
codecov-commenter commented 3 years ago

Codecov Report

Merging #292 (fa79b95) into master (50472b7) will not change coverage. The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #292   +/-   ##
=======================================
  Coverage   86.92%   86.92%           
=======================================
  Files          18       18           
  Lines         306      306           
  Branches       35       35           
=======================================
  Hits          266      266           
  Misses         40       40           

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 50472b7...fa79b95. Read the comment docs.

dependabot-preview[bot] commented 3 years ago

Superseded by #298.