CVE-2026-44546 (GCVE-0-2026-44546)

Vulnerability from cvelistv5 – Published: 2026-06-03 13:17 – Updated: 2026-06-03 15:46
VLAI
Title
Header injection via WebSocket upgrade parser differential allows ASGI scope header spoofing
Summary
daphne before 4.2.2 reconstructs a raw HTTP request from Twisted's parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \x0b, \x0c, \x1c, \x1d, \x1e, or \x85 as header line separators, but autobahn decodes header values to str and calls splitlines(). An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-06-03 15:45 UTC
CWE
  • CWE-444 - (Inconsistent Interpretation of HTTP Requests -- "HTTP Request/Response Smuggling")
Assigner
DSF CNA under the mitre root
CNA scorecard B 86/100 over 21 records in the last 180 days details
References
Impacted products
Vendor Product Version CPE status
djangoproject daphne Affected: 4.2.0 , ≤ 4.2.1 (python)
Unaffected: 4.2.2 (python)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-44546",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-06-03T15:45:59.459546Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-06-03T15:46:08.745Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://pypi.org/project/daphne/",
          "defaultStatus": "unaffected",
          "packageName": "daphne",
          "product": "daphne",
          "repo": "https://github.com/django/daphne/",
          "vendor": "djangoproject",
          "versions": [
            {
              "lessThanOrEqual": "4.2.1",
              "status": "affected",
              "version": "4.2.0",
              "versionType": "python"
            },
            {
              "status": "unaffected",
              "version": "4.2.2",
              "versionType": "python"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "reporter",
          "value": "Rene Henningsen"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Carlton Gibson"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003edaphne before 4.2.2 reconstructs a raw HTTP request from Twisted\u0027s parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \u003ccode\u003e\\x0b\u003c/code\u003e, \u003ccode\u003e\\x0c\u003c/code\u003e, \u003ccode\u003e\\x1c\u003c/code\u003e, \u003ccode\u003e\\x1d\u003c/code\u003e, \u003ccode\u003e\\x1e\u003c/code\u003e, or \u003ccode\u003e\\x85\u003c/code\u003e as header line separators, but autobahn decodes header values to \u003ccode\u003estr\u003c/code\u003e and calls \u003ccode\u003esplitlines()\u003c/code\u003e. An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response.\u003c/p\u003e"
            }
          ],
          "value": "daphne before 4.2.2 reconstructs a raw HTTP request from Twisted\u0027s parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \\x0b, \\x0c, \\x1c, \\x1d, \\x1e, or \\x85 as header line separators, but autobahn decodes header values to str and calls splitlines(). An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-33",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-33: HTTP Request Smuggling"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "HIGH",
            "attackVector": "NETWORK",
            "availabilityImpact": "NONE",
            "baseScore": 3.7,
            "baseSeverity": "LOW",
            "confidentialityImpact": "LOW",
            "integrityImpact": "NONE",
            "privilegesRequired": "NONE",
            "scope": "UNCHANGED",
            "userInteraction": "NONE",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N",
            "version": "3.1"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-444",
              "description": "CWE-444 (Inconsistent Interpretation of HTTP Requests -- \"HTTP Request/Response Smuggling\")",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-06-03T13:17:55.283Z",
        "orgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
        "shortName": "DSF"
      },
      "references": [
        {
          "tags": [
            "release-notes"
          ],
          "url": "https://github.com/django/daphne/blob/main/CHANGELOG.txt"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "timeline": [
        {
          "lang": "en",
          "time": "2026-04-09T03:00:00.000Z",
          "value": "Initial report received."
        },
        {
          "lang": "en",
          "time": "2026-05-06T03:00:00.000Z",
          "value": "Vulnerability confirmed."
        }
      ],
      "title": "Header injection via WebSocket upgrade parser differential allows ASGI scope header spoofing",
      "x_generator": {
        "engine": "cvelib 1.8.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
    "assignerShortName": "DSF",
    "cveId": "CVE-2026-44546",
    "datePublished": "2026-06-03T13:17:55.283Z",
    "dateReserved": "2026-05-06T20:29:54.084Z",
    "dateUpdated": "2026-06-03T15:46:08.745Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-44546",
      "date": "2026-10-20",
      "epss": "0.00288",
      "percentile": "0.20046"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://pypi.org/project/daphne/",
                "defaultStatus": "unaffected",
                "packageName": "daphne",
                "product": "daphne",
                "repo": "https://github.com/django/daphne/",
                "vendor": "djangoproject",
                "versions": [
                  {
                    "lessThanOrEqual": "4.2.1",
                    "status": "affected",
                    "version": "4.2.0",
                    "versionType": "python"
                  },
                  {
                    "status": "unaffected",
                    "version": "4.2.2",
                    "versionType": "python"
                  }
                ]
              }
            ],
            "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:a:djangoproject:daphne:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "48E446D3-9A77-40A0-A62A-D3F04DF924AB",
                    "versionEndExcluding": "4.2.2",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "daphne before 4.2.2 reconstructs a raw HTTP request from Twisted\u0027s parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \\x0b, \\x0c, \\x1c, \\x1d, \\x1e, or \\x85 as header line separators, but autobahn decodes header values to str and calls splitlines(). An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response."
          },
          {
            "lang": "es",
            "value": "daphne anterior a la versi\u00f3n 4.2.2 reconstruye una solicitud HTTP en bruto a partir de los encabezados analizados de Twisted y la alimenta a autobahn para el procesamiento del handshake de WebSocket. Twisted no trata \\x0b, \\x0c, \\x1c, \\x1d, \\x1e, o \\x85 como separadores de l\u00ednea de encabezado, pero autobahn decodifica los valores de los encabezados a str y llama a splitlines(). Un atacante puede explotar este diferencial del analizador para inyectar encabezados adicionales en el \u00e1mbito ASGI pasado a la aplicaci\u00f3n. daphne ahora rechaza las solicitudes con estos bytes en cualquier valor de encabezado con una respuesta 400."
          }
        ],
        "id": "CVE-2026-44546",
        "lastModified": "2026-07-22T19:10:00.120",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 3.7,
                "baseSeverity": "LOW",
                "confidentialityImpact": "LOW",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N",
                "version": "3.1"
              },
              "exploitabilityScore": 2.2,
              "impactScore": 1.4,
              "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
              "type": "Secondary"
            },
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 5.3,
                "baseSeverity": "MEDIUM",
                "confidentialityImpact": "LOW",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N",
                "version": "3.1"
              },
              "exploitabilityScore": 3.9,
              "impactScore": 1.4,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-44546",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-06-03T15:45:59.459546Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-06-03T14:16:43.720",
        "references": [
          {
            "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
            "tags": [
              "Release Notes"
            ],
            "url": "https://github.com/django/daphne/blob/main/CHANGELOG.txt"
          }
        ],
        "sourceIdentifier": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
        "vulnStatus": "Analyzed",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-444"
              }
            ],
            "source": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
            "type": "Secondary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-07-14T20:51:24+00:00",
      "cve": "CVE-2026-44546",
      "id": "CVE-2026-44546",
      "initial_release_date": "2026-06-03T13:17:55.283000+00:00",
      "product_status:known_affected": "8",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "daphne: daphne: Information disclosure via header injection due to parser differential",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-44546.json",
      "version": "3"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-44546",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-06-03T15:45:59.459546Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-06-03T15:46:04.583Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://pypi.org/project/daphne/",
              "defaultStatus": "unaffected",
              "packageName": "daphne",
              "product": "daphne",
              "repo": "https://github.com/django/daphne/",
              "vendor": "djangoproject",
              "versions": [
                {
                  "lessThanOrEqual": "4.2.1",
                  "status": "affected",
                  "version": "4.2.0",
                  "versionType": "python"
                },
                {
                  "status": "unaffected",
                  "version": "4.2.2",
                  "versionType": "python"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "reporter",
              "value": "Rene Henningsen"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "Carlton Gibson"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003edaphne before 4.2.2 reconstructs a raw HTTP request from Twisted\u0027s parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \u003ccode\u003e\\x0b\u003c/code\u003e, \u003ccode\u003e\\x0c\u003c/code\u003e, \u003ccode\u003e\\x1c\u003c/code\u003e, \u003ccode\u003e\\x1d\u003c/code\u003e, \u003ccode\u003e\\x1e\u003c/code\u003e, or \u003ccode\u003e\\x85\u003c/code\u003e as header line separators, but autobahn decodes header values to \u003ccode\u003estr\u003c/code\u003e and calls \u003ccode\u003esplitlines()\u003c/code\u003e. An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response.\u003c/p\u003e"
                }
              ],
              "value": "daphne before 4.2.2 reconstructs a raw HTTP request from Twisted\u0027s parsed headers and feeds it to autobahn for WebSocket handshake processing. Twisted does not treat \\x0b, \\x0c, \\x1c, \\x1d, \\x1e, or \\x85 as header line separators, but autobahn decodes header values to str and calls splitlines(). An attacker can exploit this parser differential to inject additional headers into the ASGI scope passed to the application. daphne now rejects requests with these bytes in any header value with a 400 response."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-33",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-33: HTTP Request Smuggling"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "attackComplexity": "HIGH",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 3.7,
                "baseSeverity": "LOW",
                "confidentialityImpact": "LOW",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N",
                "version": "3.1"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-444",
                  "description": "CWE-444 (Inconsistent Interpretation of HTTP Requests -- \"HTTP Request/Response Smuggling\")",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-06-03T13:17:55.283Z",
            "orgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
            "shortName": "DSF"
          },
          "references": [
            {
              "tags": [
                "release-notes"
              ],
              "url": "https://github.com/django/daphne/blob/main/CHANGELOG.txt"
            }
          ],
          "source": {
            "discovery": "EXTERNAL"
          },
          "timeline": [
            {
              "lang": "en",
              "time": "2026-04-09T03:00:00.000Z",
              "value": "Initial report received."
            },
            {
              "lang": "en",
              "time": "2026-05-06T03:00:00.000Z",
              "value": "Vulnerability confirmed."
            }
          ],
          "title": "Header injection via WebSocket upgrade parser differential allows ASGI scope header spoofing",
          "x_generator": {
            "engine": "cvelib 1.8.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6a34fbeb-21d4-45e7-8e0a-62b95bc12c92",
        "assignerShortName": "DSF",
        "cveId": "CVE-2026-44546",
        "datePublished": "2026-06-03T13:17:55.283Z",
        "dateReserved": "2026-05-06T20:29:54.084Z",
        "dateUpdated": "2026-06-03T15:46:08.745Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    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.