Action not permitted
Modal body text goes here.
Modal Title
Modal Body
GHSA-8423-8FGW-73VQ
Vulnerability from github – Published: 2026-09-01 20:17 – Updated: 2026-09-01 20:17Description
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 6.5.7"
},
"package": {
"ecosystem": "PyPI",
"name": "tornado"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.5.8"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [],
"database_specific": {
"cwe_ids": [
"CWE-770"
],
"github_reviewed": true,
"github_reviewed_at": "2026-09-01T20:17:38Z",
"nvd_published_at": null,
"severity": "MODERATE"
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "GHSA-8423-8fgw-73vq",
"modified": "2026-09-01T20:17:38Z",
"published": "2026-09-01T20:17:38Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)"
}
BREW-JUPYTERLAB-GHSA-842… (GHSA-8423-8FGW-73VQ)
Vulnerability from osv_homebrew – Published: 2026-09-02 09:10 – Updated: 2026-09-25 10:03 – Source websiteDescription
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
{
"affected": [
{
"ecosystem_specific": {
"fix": "bump",
"range_state": "fixed",
"resource": "tornado",
"resource_purl": "pkg:pypi/tornado@6.5.10",
"upstream_fixed_in": "6.5.8"
},
"package": {
"ecosystem": "Homebrew",
"name": "jupyterlab",
"purl": "pkg:brew/jupyterlab"
},
"ranges": [
{
"events": [
{
"introduced": "1.2.0"
},
{
"fixed": "4.6.3"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"confidence": "high",
"source": "matched",
"strategy": "registry",
"upstream_evidence": [
{
"ecosystem": "PyPI",
"key": "pkg:pypi/tornado@6.5.10",
"name": "tornado",
"resource": "tornado",
"strategy": "registry",
"subject_version": "6.5.10"
}
]
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "BREW-jupyterlab-GHSA-8423-8fgw-73vq",
"modified": "2026-09-25T10:03:06Z",
"published": "2026-09-02T09:10:50Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)",
"upstream": [
"GHSA-8423-8fgw-73vq",
"CVE-2026-91990"
]
}
BREW-LIVERELOAD-GHSA-842… (GHSA-8423-8FGW-73VQ)
Vulnerability from osv_homebrew – Published: 2026-09-02 09:14 – Updated: 2026-10-04 12:40 – Source websiteDescription
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
| URL | Type | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||
{
"affected": [
{
"ecosystem_specific": {
"fix": "bump",
"range_state": "fixed",
"resource": "tornado",
"resource_purl": "pkg:pypi/tornado@6.5.10",
"upstream_fixed_in": "6.5.8"
},
"package": {
"ecosystem": "Homebrew",
"name": "livereload",
"purl": "pkg:brew/livereload"
},
"ranges": [
{
"events": [
{
"introduced": "2.7.1"
},
{
"fixed": "2.7.1_3"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"confidence": "high",
"source": "matched",
"strategy": "registry",
"upstream_evidence": [
{
"ecosystem": "PyPI",
"key": "pkg:pypi/tornado@6.5.10",
"name": "tornado",
"resource": "tornado",
"strategy": "registry",
"subject_version": "6.5.10"
}
]
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "BREW-livereload-GHSA-8423-8fgw-73vq",
"modified": "2026-10-04T12:40:47Z",
"published": "2026-09-02T09:14:08Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)",
"upstream": [
"GHSA-8423-8fgw-73vq",
"CVE-2026-91990"
]
}
BREW-NVCHECKER-GHSA-8423… (GHSA-8423-8FGW-73VQ)
Vulnerability from osv_homebrew – Published: 2026-09-02 09:30 – Updated: 2026-10-04 11:16 – Source websiteDescription
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
| URL | Type | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||
{
"affected": [
{
"ecosystem_specific": {
"fix": "bump",
"range_state": "fixed",
"resource": "tornado",
"resource_purl": "pkg:pypi/tornado@6.5.10",
"upstream_fixed_in": "6.5.8"
},
"package": {
"ecosystem": "Homebrew",
"name": "nvchecker",
"purl": "pkg:brew/nvchecker"
},
"ranges": [
{
"events": [
{
"introduced": "2.7"
},
{
"fixed": "2.22"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"confidence": "high",
"source": "matched",
"strategy": "registry",
"upstream_evidence": [
{
"ecosystem": "PyPI",
"key": "pkg:pypi/tornado@6.5.10",
"name": "tornado",
"resource": "tornado",
"strategy": "registry",
"subject_version": "6.5.10"
}
]
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "BREW-nvchecker-GHSA-8423-8fgw-73vq",
"modified": "2026-10-04T11:16:39Z",
"published": "2026-09-02T09:30:17Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)",
"upstream": [
"GHSA-8423-8fgw-73vq",
"CVE-2026-91990"
]
}
BREW-SICKCHILL-GHSA-8423… (GHSA-8423-8FGW-73VQ)
Vulnerability from osv_homebrew – Published: 2026-09-02 09:54 – Updated: 2026-09-30 19:29 – Source websiteDescription
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
| URL | Type | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||
{
"affected": [
{
"ecosystem_specific": {
"fix": "bump",
"range_state": "fixed",
"resource": "tornado",
"resource_purl": "pkg:pypi/tornado@6.5.10",
"upstream_fixed_in": "6.5.8"
},
"package": {
"ecosystem": "Homebrew",
"name": "sickchill",
"purl": "pkg:brew/sickchill"
},
"ranges": [
{
"events": [
{
"introduced": "2023.5.30"
},
{
"fixed": "2024.3.1_8"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"confidence": "high",
"source": "matched",
"strategy": "registry",
"upstream_evidence": [
{
"ecosystem": "PyPI",
"key": "pkg:pypi/tornado@6.5.10",
"name": "tornado",
"resource": "tornado",
"strategy": "registry",
"subject_version": "6.5.10"
}
]
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "BREW-sickchill-GHSA-8423-8fgw-73vq",
"modified": "2026-09-30T19:29:04Z",
"published": "2026-09-02T09:54:19Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)",
"upstream": [
"GHSA-8423-8fgw-73vq",
"CVE-2026-91990"
]
}
BREW-SNAKEVIZ-GHSA-8423-… (GHSA-8423-8FGW-73VQ)
Vulnerability from osv_homebrew – Published: 2026-09-02 09:57 – Updated: 2026-10-04 23:13 – Source websiteDescription
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
| URL | Type | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||
{
"affected": [
{
"ecosystem_specific": {
"fix": "bump",
"range_state": "fixed",
"resource": "tornado",
"resource_purl": "pkg:pypi/tornado@6.5.10",
"upstream_fixed_in": "6.5.8"
},
"package": {
"ecosystem": "Homebrew",
"name": "snakeviz",
"purl": "pkg:brew/snakeviz"
},
"ranges": [
{
"events": [
{
"introduced": "2.2.0"
},
{
"fixed": "2.2.2_5"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"confidence": "high",
"source": "matched",
"strategy": "registry",
"upstream_evidence": [
{
"ecosystem": "PyPI",
"key": "pkg:pypi/tornado@6.5.10",
"name": "tornado",
"resource": "tornado",
"strategy": "registry",
"subject_version": "6.5.10"
}
]
},
"details": "## Description\n\n### Summary\n\n`parse_multipart_form_data` (httputil.py:34) calls\n`data.split(b\"--\"+boundary+b\"\\r\\n\")` **before** the `max_parts` check (:35).\nA 600KB body with 100k parts creates a 100k-element transient list first,\nthen rejects transient memory amplification (each split element is a copy).\nPre-auth HTTP DoS.\n\n### Root cause\n\n```python\nparts = data[:final_boundary_index].split(b\"--\" + boundary + b\"\\r\\n\") # :34 huge list first\nif len(parts) \u003e config.max_parts: # :35 check after\n raise HTTPInputError(\"multipart/form-data has too many parts\")\n```\n\n### PoC\n\ngist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617\n`poc.py` + `output.txt` (100k parts from 600KB transient list).\n\n### Fix\n\nCount separators without materializing the list (e.g. `data.count(b\"--\"+boundary)` first).\n\n### Credit\n\nReported by afldl, 2026-07.",
"id": "BREW-snakeviz-GHSA-8423-8fgw-73vq",
"modified": "2026-10-04T23:13:40Z",
"published": "2026-09-02T09:57:41Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/pull/3704"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"
},
{
"type": "WEB",
"url": "https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617"
},
{
"type": "PACKAGE",
"url": "https://github.com/tornadoweb/tornado"
},
{
"type": "WEB",
"url": "https://github.com/tornadoweb/tornado/releases/tag/v6.5.8"
}
],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "tornado: multipart split() creates huge temp list before max_parts check -\u003e memory amplification DoS (httputil.py:34)",
"upstream": [
"GHSA-8423-8fgw-73vq",
"CVE-2026-91990"
]
}
CLEANSTART-2026-NE81748 (GHSA-8423-8FGW-73VQ)
Vulnerability from cleanstart – Published: 2026-09-24 06:51 – Updated: 2026-10-09 03:59 – Source websiteghsa-8423-8fgw-73vq affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.
{
"affected": [
{
"package": {
"ecosystem": "CleanStart",
"name": "airflow-3",
"purl": "pkg:apk/cleanstart/airflow-3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.0.6-r8"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "CleanStart",
"name": "airflow-3",
"purl": "pkg:apk/cleanstart/airflow-3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.2.2-r7"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "CleanStart",
"name": "airflow-3",
"purl": "pkg:apk/cleanstart/airflow-3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.1.8-r11"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"credits": [],
"database_specific": {},
"details": "ghsa-8423-8fgw-73vq affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.",
"id": "CLEANSTART-2026-NE81748",
"modified": "2026-10-09T03:59:54Z",
"published": "2026-09-24T06:51:36.785661Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/cleanstart-dev/cleanstart-security-advisories/tree/main/advisories/2026/CLEANSTART-2026-NE81748.json"
},
{
"type": "WEB",
"url": "https://osv.dev/vulnerability/ghsa-8423-8fgw-73vq"
}
],
"related": [],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Security fix for ghsa-8423-8fgw-73vq applied in: airflow-3 3.0.6-r8, airflow-3 3.2.2-r7, airflow-3 3.1.8-r11",
"upstream": [
"ghsa-8423-8fgw-73vq"
]
}
CLEANSTART-2026-PJ73152 (GHSA-8423-8FGW-73VQ)
Vulnerability from cleanstart – Published: 2026-10-10 00:38 – Updated: 2026-10-09 07:40 – Source websiteSecurity vulnerability affects the jupyterhub-k8s-hub package. This issue is resolved in later releases. See references for vulnerability details.
{
"affected": [
{
"package": {
"ecosystem": "CleanStart",
"name": "jupyterhub-k8s-hub",
"purl": "pkg:apk/cleanstart/jupyterhub-k8s-hub"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.0.0-r1"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"credits": [],
"database_specific": {},
"details": "Security vulnerability affects the jupyterhub-k8s-hub package. This issue is resolved in later releases. See references for vulnerability details.",
"id": "CLEANSTART-2026-PJ73152",
"modified": "2026-10-09T07:40:50Z",
"published": "2026-10-10T00:38:50.874298Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/cleanstart-dev/cleanstart-security-advisories/tree/main/advisories/2026/CLEANSTART-2026-PJ73152.json"
},
{
"type": "WEB",
"url": "https://osv.dev/vulnerability/ghsa-8423-8fgw-73vq"
}
],
"related": [],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Security fix for ghsa-8423-8fgw-73vq applied in: jupyterhub-k8s-hub 6.0.0-r1",
"upstream": [
"ghsa-8423-8fgw-73vq"
]
}
CLEANSTART-2026-SY45614 (GHSA-8423-8FGW-73VQ)
Vulnerability from cleanstart – Published: 2026-09-18 09:22 – Updated: 2026-10-09 05:46 – Source websiteSecurity vulnerability affects the py3-tornado package. This issue is resolved in later releases. See references for vulnerability details.
{
"affected": [
{
"package": {
"ecosystem": "CleanStart",
"name": "py3-tornado",
"purl": "pkg:apk/cleanstart/py3-tornado"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "6.5.7-r0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"credits": [],
"database_specific": {},
"details": "Security vulnerability affects the py3-tornado package. This issue is resolved in later releases. See references for vulnerability details.",
"id": "CLEANSTART-2026-SY45614",
"modified": "2026-10-09T05:46:18Z",
"published": "2026-09-18T09:22:16.991286Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/cleanstart-dev/cleanstart-security-advisories/tree/main/advisories/2026/CLEANSTART-2026-SY45614.json"
},
{
"type": "WEB",
"url": "https://osv.dev/vulnerability/ghsa-8423-8fgw-73vq"
}
],
"related": [],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Security fix for ghsa-8423-8fgw-73vq applied in: py3-tornado 6.5.7-r0",
"upstream": [
"ghsa-8423-8fgw-73vq"
]
}
CLEANSTART-2026-YX36075 (GHSA-8423-8FGW-73VQ)
Vulnerability from cleanstart – Published: 2026-09-29 00:37 – Updated: 2026-10-09 07:06 – Source websiteghsa-8423-8fgw-73vq affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.
{
"affected": [
{
"package": {
"ecosystem": "CleanStart",
"name": "airflow-3",
"purl": "pkg:apk/cleanstart/airflow-3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.2.1-r10"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "CleanStart",
"name": "airflow-3",
"purl": "pkg:apk/cleanstart/airflow-3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.3.0-r7"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"credits": [],
"database_specific": {},
"details": "ghsa-8423-8fgw-73vq affects multiple packages. This issue is resolved in later releases. See references for individual vulnerability details.",
"id": "CLEANSTART-2026-YX36075",
"modified": "2026-10-09T07:06:41Z",
"published": "2026-09-29T00:37:29.541798Z",
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/cleanstart-dev/cleanstart-security-advisories/tree/main/advisories/2026/CLEANSTART-2026-YX36075.json"
},
{
"type": "WEB",
"url": "https://osv.dev/vulnerability/ghsa-8423-8fgw-73vq"
}
],
"related": [],
"schema_version": "1.7.3",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Security fix for ghsa-8423-8fgw-73vq applied in: airflow-3 3.2.1-r10, airflow-3 3.3.0-r7",
"upstream": [
"ghsa-8423-8fgw-73vq"
]
}
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.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
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.