Loading...
Skip to main content

CVE-2022-35922 — Vulnerability in websocket — CVE Details

HIGH

Rust-WebSocket memory allocation based on untrusted length

Published August 6, 2022Updated November 8, 2023Source: osv

Summary

## Impact Untrusted websocket connections can cause an out-of-memory (OOM) process abort in a client or a server. The root cause of the issue is during dataframe parsing. Affected versions would allocate a buffer based on the declared dataframe size, which may come from an untrusted source. When `Vec::with_capacity` fails to allocate, the default Rust allocator will abort the current process, killing all threads. This affects only sync (non-Tokio) implementation. Async version also does not limit memory, but does not use `with_capacity`, so DoS can happen only when bytes for oversized dataframe or message actually got delivered by the attacker. This is a security concern for you, if - your server application handles untrusted websocket connections - OR your client application connects to untrusted websocket servers ## Patches The crashes are fixed in version **0.26.5** by imposing default dataframe size limits. Affected users are advised to update to this version. Note that default memory limits are rather large (100MB dataframes and 200 MB messages), so they can still cause DoS in some environments (i.e. 32-bit). New API has been added to fine tune those limits for specific applications. ### Workarounds * Migrate your project to another, maintained Websocket library like Tungstenite. * Accept only trusted WebSocket traffic. * Filter the WebSocket traffic though some kind of proxy that ensures sanity limits on messages. * Handle process aborts gracefully and limit process memory using OS tools. ## Credits This issue was reported by [Evan Richter](https://github.com/evanrichter) at ForAllSecure and found with [Mayhem](https://forallsecure.com/mayhem-for-code) and [Cargo Fuzz](https://github.com/rust-fuzz/cargo-fuzz).

Advisory Timeline

  • First published August 6, 2022 (1528 days ago).
  • Last revised November 8, 2023 — 459 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Cargo
Update websocket to 0.26.5 or later
cargo update -p websocket --precise 0.26.5

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: crates.io (1).

PackageEcosystemAffectedFixed In
websocket
crates.io
All versions0.26.5

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-119
    Buffer OverflowMITRE
  • CWE-400
    Uncontrolled Resource ConsumptionMITRE
  • CWE-770
    Allocation of Resources Without LimitsMITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 7.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Frequently Asked Questions

What is CVE-2022-35922?
Rust-WebSocket memory allocation based on untrusted length This vulnerability has been assigned a severity rating of HIGH (CVSS score: 7.5/10).
How do I check if my project is affected by CVE-2022-35922?
CVE-2022-35922 affects websocket. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2022-35922 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
7.5

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-qrjv-rf5q-qpxc
RUSTSEC-2022-0035

Related CVEs

  • CVE-2026-93657
    HIGH

    hickory-resolver: Resolver::lookup() and Resolver::lookup_ip() APIs obscure DNSSEC validation failures

  • CVE-2026-18140
    HIGH

    aws-smithy-json: Uncontrolled recursion in the aws-smithy-json unknown-key skip path allows unauthenticated remote denial of service in smithy-rs generated servers

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies