You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GitHub advisory GHSA-96hv-2xvq-fx4p (CVE-2026-48779, HIGH) — "ws: Memory exhaustion DoS from tiny fragments and data chunks." A peer sending many tiny WebSocket fragments / data chunks can drive the server or client into out-of-memory and crash it.
Per the advisory, the 8.x line is patched in 8.21.0 (other lines: 5.2.5 / 6.2.4 / 7.5.11).
This is easy to miss: it does not show up in this repo's Dependabot alerts (the only open alert is @babel/core#128, low, with no published fix). ws reaches us only as a build/dev-time transitive dependency — engine.io@~6.5.2 and socket.io-adapter@~2.5.2 (live-reload / socket.io tooling) — so it isn't in the addon's published dist/. The advisory had to be addressed directly rather than via the Dependabot list.
We last touched ws in cd7326d (Jun 2024), pinning "ws": "^8.17.1" to fix an earlier ws CVE. That pin is insufficient for this advisory: yarn.lock was resolving ws@8.17.1, which is < 8.21.0.
Proposed Solution
Bump the existing yarn resolutions pin from ^8.17.1 to ^8.21.0 and re-resolve. yarn install moved the single ws entry in yarn.lock to 8.21.0; the diff is just the manifest line plus the one ws block (version / resolved / integrity).
The ^ keeps future 8.x patches available while blocking anything < 8.21.0.
ws 8.17.1 → 8.21.0 is all additive minor releases — no breaking changes. 8.21.0 itself adds the maxBufferedChunks / maxFragments options that back the fix. See the ws 8.21.0 release notes.
Both consumers (engine.io, socket.io-adapter) request 8.x ranges, and ws is backward-compatible within the major, so the global resolution to 8.21.0 is safe.
Testing Notes
This is a build/dev-time dependency bump; no addon source changed.
What was broken:yarn.lock resolved ws@8.17.1 (vulnerable to CVE-2026-48779).
What success looks like:ws resolves to 8.21.0, and CI (lint + the ember test matrix: lts-previous, lts-current, release, beta) stays green.
Heads-up: the red CI checks are pre-existing, not caused by this bump
CI shows Lint green and all four Test scenarios red on this branch. I dug in, and the failures are not related to the ws change:
The change is ws-only (one resolutions line + the single ws block in yarn.lock); git diff origin/main shows nothing else.
Locally the dummy app builds fine with ws@8.21.0 — both yarn build and ember try:one ember-lts-current --- ember build succeed.
The CI crash is inside the build toolchain, before any test runs — e.g. TypeError: Cannot read properties of undefined (reading 'debug') at ember-cli's EmberApp._initVendorFiles (ember-cli-build.js → EmberAddon). ws is a dev/live-reload (engine.io/socket.io-adapter) transitive dep and is never a browser vendor asset, so it can't reach that code path.
Control test: I pushed main's exact tip (no ws change) to a throwaway branch and ran CI on it today — Lint passed and all four Test scenarios failed there too (that branch failed at require() of ES Module .../testem/node_modules/execa/index.js ... not supported). The exact error varies run-to-run because ember-try re-resolves the floating ^ dep tree non-deterministically, but the root is the same: this repo pins ember-cli ~3.20 / an old testem, and that toolchain no longer installs cleanly against current npm releases. main last went green in April.
So CI is already broken on main independent of this PR. Fixing the toolchain rot (bumping ember-cli/testem, pinning execa, etc.) is a separate piece of work and out of scope for a one-line security bump.
Recommendation: review and merge the ws bump on its security merit (it does exactly what it should — moves ws to the patched 8.21.0), and track the CI toolchain rot separately.
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
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.
The vulnerability 🐛
GitHub advisory GHSA-96hv-2xvq-fx4p (CVE-2026-48779, HIGH) — "ws: Memory exhaustion DoS from tiny fragments and data chunks." A peer sending many tiny WebSocket fragments / data chunks can drive the server or client into out-of-memory and crash it.
Per the advisory, the 8.x line is patched in 8.21.0 (other lines: 5.2.5 / 6.2.4 / 7.5.11).
This is easy to miss: it does not show up in this repo's Dependabot alerts (the only open alert is
@babel/core#128, low, with no published fix).wsreaches us only as a build/dev-time transitive dependency —engine.io@~6.5.2andsocket.io-adapter@~2.5.2(live-reload / socket.io tooling) — so it isn't in the addon's publisheddist/. The advisory had to be addressed directly rather than via the Dependabot list.We last touched
wsincd7326d(Jun 2024), pinning"ws": "^8.17.1"to fix an earlier ws CVE. That pin is insufficient for this advisory:yarn.lockwas resolvingws@8.17.1, which is< 8.21.0.Proposed Solution
Bump the existing yarn
resolutionspin from^8.17.1to^8.21.0and re-resolve.yarn installmoved the singlewsentry inyarn.lockto8.21.0; the diff is just the manifest line plus the onewsblock (version / resolved / integrity).^keeps future 8.x patches available while blocking anything< 8.21.0.maxBufferedChunks/maxFragmentsoptions that back the fix. See the ws 8.21.0 release notes.engine.io,socket.io-adapter) request 8.x ranges, and ws is backward-compatible within the major, so the global resolution to 8.21.0 is safe.Testing Notes
This is a build/dev-time dependency bump; no addon source changed.
yarn.lockresolvedws@8.17.1(vulnerable to CVE-2026-48779).wsresolves to8.21.0, and CI (lint+ the ember test matrix: lts-previous, lts-current, release, beta) stays green.To verify locally:
grep -A1 '^ws@' yarn.lock→version "8.21.0"yarn install && yarn lint→ clean