GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration
oesa-2026-3218
Vulnerability from osv_openeuler
Published
2026-08-01 11:12
Modified
2026-08-06 11:12
Summary
rubygem-websocket-driver security update
Details

This module provides a complete implementation of the WebSocket protocols that can be hooked up to any TCP library. It aims to simplify things by decoupling the protocol details from the I/O layer, such that users only need to implement code to stream data in and out of it without needing to know anything about how the protocol actually works. Think of it as a complete WebSocket system with pluggable I/O.

Security Fix(es):

websocket-driver is a WebSocket protocol handler with pluggable I/O. Prior to 0.8.1, draft versions of the WebSocket protocol in websocket-driver include a length header that allows an arbitrarily large integer to be encoded as bytes with the high bit set, and a server or client can send an indefinite sequence of 0x80 or higher bytes that the peer parses into an ever-growing Ruby integer. This can make a WebSocket connection consume an unbounded amount of memory and lead to the host process running out of memory. This issue is fixed in version 0.8.1.(CVE-2026-54463)

Impact

If this library is used in tandem with the permessage-deflate extension, a WebSocket server or client can be made to accept messages that are larger than the configured maximum message size. This is because this limit is checked against the message frames' length headers, which give the size of the compressed data, not the size after decompression. This can lead to applications accepting larger messages than expected and exceeding their intended resource usage.

Patches

The issue has been patched in version 0.8.1, by checking the length of messages after they are processed by incoming extensions. All users should upgrade to this version.

Workarounds

No known workarounds exist.

Acknowledgements

This issue was discovered and reported by Pranjali Thakur, DepthFirst Security Research Team.(CVE-2026-54464)

websocket-driver is a WebSocket protocol handler with pluggable I/O. Prior to 0.8.1, when websocket-driver is used to implement a WebSocket server on top of a TCP server using WebSocket::Driver.server() or to complement a WebSocket client, a peer can make a single connection consume an unbounded amount of memory by sending an HTTP request or response with a never-ending list of headers. This can lead to the receiving process running out of memory. This issue is fixed in version 0.8.1.(CVE-2026-54465)

There is insufficient input validation when websocket-driver-ruby handles WebSocket frames. An attacker may cause a denial of service (DoS) or unexpected behavior by constructing malicious packets. Please refer to the official security advisory for specific impacts.(CVE-2026-61666)


{
  "affected": [
    {
      "ecosystem_specific": {
        "aarch64": [
          "rubygem-websocket-driver-0.6.5-2.oe2003sp4.aarch64.rpm",
          "rubygem-websocket-driver-debuginfo-0.6.5-2.oe2003sp4.aarch64.rpm",
          "rubygem-websocket-driver-debugsource-0.6.5-2.oe2003sp4.aarch64.rpm"
        ],
        "noarch": [
          "rubygem-websocket-driver-doc-0.6.5-2.oe2003sp4.noarch.rpm"
        ],
        "src": [
          "rubygem-websocket-driver-0.6.5-2.oe2003sp4.src.rpm"
        ],
        "x86_64": [
          "rubygem-websocket-driver-0.6.5-2.oe2003sp4.x86_64.rpm",
          "rubygem-websocket-driver-debuginfo-0.6.5-2.oe2003sp4.x86_64.rpm",
          "rubygem-websocket-driver-debugsource-0.6.5-2.oe2003sp4.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:20.03-LTS-SP4",
        "name": "rubygem-websocket-driver",
        "purl": "pkg:rpm/openEuler/rubygem-websocket-driver\u0026distro=openEuler-20.03-LTS-SP4"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.6.5-2.oe2003sp4"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "aarch64": [
          "rubygem-websocket-driver-0.6.5-2.oe2203sp4.aarch64.rpm",
          "rubygem-websocket-driver-debuginfo-0.6.5-2.oe2203sp4.aarch64.rpm",
          "rubygem-websocket-driver-debugsource-0.6.5-2.oe2203sp4.aarch64.rpm"
        ],
        "noarch": [
          "rubygem-websocket-driver-doc-0.6.5-2.oe2203sp4.noarch.rpm"
        ],
        "src": [
          "rubygem-websocket-driver-0.6.5-2.oe2203sp4.src.rpm"
        ],
        "x86_64": [
          "rubygem-websocket-driver-0.6.5-2.oe2203sp4.x86_64.rpm",
          "rubygem-websocket-driver-debuginfo-0.6.5-2.oe2203sp4.x86_64.rpm",
          "rubygem-websocket-driver-debugsource-0.6.5-2.oe2203sp4.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:22.03-LTS-SP4",
        "name": "rubygem-websocket-driver",
        "purl": "pkg:rpm/openEuler/rubygem-websocket-driver\u0026distro=openEuler-22.03-LTS-SP4"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.6.5-2.oe2203sp4"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "aarch64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp1.aarch64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp1.aarch64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp1.aarch64.rpm"
        ],
        "noarch": [
          "rubygem-websocket-driver-doc-0.7.6-2.oe2403sp1.noarch.rpm"
        ],
        "src": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp1.src.rpm"
        ],
        "x86_64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp1.x86_64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp1.x86_64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp1.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:24.03-LTS-SP1",
        "name": "rubygem-websocket-driver",
        "purl": "pkg:rpm/openEuler/rubygem-websocket-driver\u0026distro=openEuler-24.03-LTS-SP1"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.7.6-2.oe2403sp1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "aarch64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp3.aarch64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp3.aarch64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp3.aarch64.rpm"
        ],
        "noarch": [
          "rubygem-websocket-driver-doc-0.7.6-2.oe2403sp3.noarch.rpm"
        ],
        "src": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp3.src.rpm"
        ],
        "x86_64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp3.x86_64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp3.x86_64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp3.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:24.03-LTS-SP3",
        "name": "rubygem-websocket-driver",
        "purl": "pkg:rpm/openEuler/rubygem-websocket-driver\u0026distro=openEuler-24.03-LTS-SP3"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.7.6-2.oe2403sp3"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "aarch64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp4.aarch64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp4.aarch64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp4.aarch64.rpm"
        ],
        "noarch": [
          "rubygem-websocket-driver-doc-0.7.6-2.oe2403sp4.noarch.rpm"
        ],
        "src": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp4.src.rpm"
        ],
        "x86_64": [
          "rubygem-websocket-driver-0.7.6-2.oe2403sp4.x86_64.rpm",
          "rubygem-websocket-driver-debuginfo-0.7.6-2.oe2403sp4.x86_64.rpm",
          "rubygem-websocket-driver-debugsource-0.7.6-2.oe2403sp4.x86_64.rpm"
        ]
      },
      "package": {
        "ecosystem": "openEuler:24.03-LTS-SP4",
        "name": "rubygem-websocket-driver",
        "purl": "pkg:rpm/openEuler/rubygem-websocket-driver\u0026distro=openEuler-24.03-LTS-SP4"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.7.6-2.oe2403sp4"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "severity": "High"
  },
  "details": "This module provides a complete implementation of the WebSocket protocols that can be hooked up to any TCP library. It aims to simplify things by decoupling the protocol details from the I/O layer, such that users only need to implement code to stream data in and out of it without needing to know anything about how the protocol actually works. Think of it as a complete WebSocket system with pluggable I/O.\r\n\r\nSecurity Fix(es):\n\nwebsocket-driver is a WebSocket protocol handler with pluggable I/O. Prior to 0.8.1, draft versions of the WebSocket protocol in websocket-driver include a length header that allows an arbitrarily large integer to be encoded as bytes with the high bit set, and a server or client can send an indefinite sequence of 0x80 or higher bytes that the peer parses into an ever-growing Ruby integer. This can make a WebSocket connection consume an unbounded amount of memory and lead to the host process running out of memory. This issue is fixed in version 0.8.1.(CVE-2026-54463)\n\n### Impact\n\nIf this library is used in tandem with the `permessage-deflate` extension, a\nWebSocket server or client can be made to accept messages that are larger than\nthe configured maximum message size. This is because this limit is checked\nagainst the message frames\u0026apos; length headers, which give the size of the\ncompressed data, not the size after decompression. This can lead to applications\naccepting larger messages than expected and exceeding their intended resource\nusage.\n\n### Patches\n\nThe issue has been patched in version 0.8.1, by checking the length of messages\nafter they are processed by incoming extensions. All users should upgrade to\nthis version.\n\n### Workarounds\n\nNo known workarounds exist.\n\n### Acknowledgements\n\nThis issue was discovered and reported by Pranjali Thakur, DepthFirst Security\nResearch Team.(CVE-2026-54464)\n\nwebsocket-driver is a WebSocket protocol handler with pluggable I/O. Prior to 0.8.1, when websocket-driver is used to implement a WebSocket server on top of a TCP server using WebSocket::Driver.server() or to complement a WebSocket client, a peer can make a single connection consume an unbounded amount of memory by sending an HTTP request or response with a never-ending list of headers. This can lead to the receiving process running out of memory. This issue is fixed in version 0.8.1.(CVE-2026-54465)\n\nThere is insufficient input validation when websocket-driver-ruby handles WebSocket frames. An attacker may cause a denial of service (DoS) or unexpected behavior by constructing malicious packets. Please refer to the official security advisory for specific impacts.(CVE-2026-61666)",
  "id": "OESA-2026-3218",
  "modified": "2026-08-06T11:12:05Z",
  "published": "2026-08-01T11:12:05Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-3218"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54463"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54464"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54465"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-61666"
    }
  ],
  "schema_version": "1.7.2",
  "severity": [
    {
      "score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H",
      "type": "CVSS_V4"
    }
  ],
  "summary": "rubygem-websocket-driver security update",
  "upstream": [
    "CVE-2026-54463",
    "CVE-2026-54464",
    "CVE-2026-54465",
    "CVE-2026-61666"
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…