CVE-2026-43974: Gun Gun Has An Unexpected Status Vulnerability

HIGH
Advisory Identifier: GHSA-2j82-37xg-f9wp
CWE-841
Published
Advisory Summary

CVE-2026-43974 is a HIGH gun has an unexpected status vulnerability (CWE-841: Improper Enforcement of Behavioral Workflow) affecting Gun libraries in the Hex ecosystem. The issue involves gun has an unexpected status code or return value vulnerability. Remediation is available by upgrading affected packages to version 2.4.0.

CVE-2026-43974 at a Glance

CVE Identifier CVE-2026-43974
GHSA Identifier GHSA-2j82-37xg-f9wp
Severity HIGH
CVSS v3.1 Base Score N/A
CWE Classification CWE-841: Improper Enforcement of Behavioral Workflow
Affected Product Gun
Package Ecosystem Hex
Published Date
Last Updated

How to Fix CVE-2026-43974

To remediate this vulnerability, upgrade all affected Gun dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

gun fixed: 2.4.0
Upgrade gun to 2.4.0
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for gun

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-43974, inspect your project dependencies for Gun:

inspect dependencies for gun

Analyze the terminal output to locate any version of Gun in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.4.0), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-841: Improper Enforcement of Behavioral Workflow, where the product supports a session in which more than one behavior must be performed by an actor, but it does not properly ensure that the actor performs the behaviors in the required sequence. In Gun, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

Unexpected Status Code or Return Value vulnerability in ninenines gun (gun_http module) allows a malicious HTTP server to force the client into raw protocol mode via an unsolicited 101 Switching Protocols response. In gun_http:handle_inform/8, when a 101 Switching Protocols response is received over HTTP/1.1, the function verifies only that the Upgrade header is syntactically valid and that the stream reference is a plain reference(). It does not check whether the client ever sent an Upgrade or Connection: upgrade header on the corresponding request. Because this check is absent, any 101 response (solicited or not) causes gun to dispatch a gun_upgrade message to the caller and transition the entire connection to raw protocol mode. A malicious or compromised HTTP server can send an unsolicited 101 response to any HTTP/1.1 request, causing the gun client to abandon HTTP framing for that connection. Once in raw mode, gun_raw applies no flow control (flow=infinity) and re-arms socket active mode after every received packet, so the server can flood the client with arbitrary bytes. These are forwarded as unbounded gun_data messages to the owner process, exhausting its mailbox and BEAM memory, ultimately crashing the VM. This issue affects gun: from 2.0.0 before 2.4.0.

CVE-2026-43974 Affected Gun Versions

1 component(s)
Fixed Versions:
2.4.0
Product / Package Ecosystem Affected Versions Fixed Version
gun
Hex
≥ 2.0.0
< 2.4.0
2.4.0

References

Frequently Asked Questions

What is CVE-2026-43974?
CVE-2026-43974 is a security vulnerability in Gun involving gun has an Unexpected Status Code or Return Value vulnerability under CWE-841: Improper Enforcement of Behavioral Workflow.
Which Gun versions are affected?
Affected versions include releases prior to 2.4.0 across affected packages: gun.
What version fixes CVE-2026-43974?
Upgrading to 2.4.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is gun affected?
Yes, gun is affected in releases prior to 2.4.0. Upgrade your dependency to 2.4.0 or later.
What CWE is associated with CVE-2026-43974?
CVE-2026-43974 is classified under CWE-841: Improper Enforcement of Behavioral Workflow (The product supports a session in which more than one behavior must be performed by an actor, but it does not properly ensure that the actor performs the behaviors in the required sequence.).
How can I check Hex dependencies for CVE-2026-43974?
Run the dependency tree command: 'inspect dependencies for gun'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-2j82-37xg-f9wp",
  "modified" : "2026-07-29T15:45:59Z",
  "published" : "2026-06-08T15:33:00Z",
  "aliases" : [ "CVE-2026-43974" ],
  "summary" : "gun has an Unexpected Status Code or Return Value vulnerability",
  "details" : "Unexpected Status Code or Return Value vulnerability in ninenines gun (gun_http module) allows a malicious HTTP server to force the client into raw protocol mode via an unsolicited 101 Switching Protocols response.\n\nIn gun_http:handle_inform/8, when a 101 Switching Protocols response is received over HTTP/1.1, the function verifies only that the Upgrade header is syntactically valid and that the stream reference is a plain reference(). It does not check whether the client ever sent an Upgrade or Connection: upgrade header on the corresponding request. Because this check is absent, any 101 response (solicited or not) causes gun to dispatch a gun_upgrade message to the caller and transition the entire connection to raw protocol mode.\n\nA malicious or compromised HTTP server can send an unsolicited 101 response to any HTTP/1.1 request, causing the gun client to abandon HTTP framing for that connection. Once in raw mode, gun_raw applies no flow control (flow=infinity) and re-arms socket active mode after every received packet, so the server can flood the client with arbitrary bytes. These are forwarded as unbounded gun_data messages to the owner process, exhausting its mailbox and BEAM memory, ultimately crashing the VM.\n\nThis issue affects gun: from 2.0.0 before 2.4.0.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Hex",
      "name" : "gun"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "2.0.0"
      }, {
        "fixed" : "2.4.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-43974"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/ninenines/gun/commit/5b48068c29ce5e112cb149b5857c7d4dc319a81b"
  }, {
    "type" : "WEB",
    "url" : "https://cna.erlef.org/cves/CVE-2026-43974.html"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/ninenines/gun"
  }, {
    "type" : "WEB",
    "url" : "https://osv.dev/vulnerability/EEF-CVE-2026-43974"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-841" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-07-29T15:45:59Z",
    "nvd_published_at" : "2026-06-08T15:16:46Z"
  }
}