{"id":"GHSA-rr8v-fxxf-c986","summary":"Gradle Shadow: Zip Slip path traversal in ShadowCopyAction — no independent entry-name sanitization","details":"### Summary\nShadowCopyAction in the Shadow plugin does not validate or sanitize ZIP entry names before writing them to the output fat JAR. A malicious upstream dependency containing path traversal sequences (e.g. `../../../../tmp/pwned.txt`) in entry names will have those entries reproduced verbatim in the output shadow JAR.\n\n### Details\nThe vulnerability exists because Shadow relies entirely on Gradle's ZipFileTree for entry sanitization rather than implementing its own path validation. This means:\n\n1. Users on Gradle \u003c 7.6.2 / 8.x \u003c 8.2.0 are directly exploitable\n2. The produced shadow JAR becomes a Zip Slip weapon against any \ndownstream consumer using unprotected extraction (raw ZipInputStream, \nolder CI tooling, custom Java unpackers)\n3. If Shadow ever uses a non-ZipFileTree code path, protection \ndisappears silently\n\nAffected file: `src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/internal/ShadowCopyAction.kt`\n\n### PoC\n1. Create a malicious JAR with path traversal entry:\n```python\nimport zipfile\nwith zipfile.ZipFile('evil.jar', 'w') as zf:\n    zf.writestr('../../../../tmp/zipslip_proof.txt', 'pwned')\n```\n2. Add as dependency in a shadow project\n3. Run `gradle shadowJar`\n4. Run `unzip -l build/libs/*.jar | grep \"\\.\\.\"`\n5. Traversal entry survives in output JAR\n\n### Impact\nAny tool extracting the shadow JAR with unprotected extraction is subject to arbitrary file overwrite. Users on older Gradle versions  are directly vulnerable at build time.","aliases":["CVE-2026-75598"],"modified":"2026-11-09T22:00:07.654775352Z","published":"2026-11-09T21:48:13Z","database_specific":{"cwe_ids":["CWE-22"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-11-09T21:48:13Z","nvd_published_at":"2026-11-06T18:18:18Z"},"references":[{"type":"WEB","url":"https://github.com/GradleUp/shadow/security/advisories/GHSA-rr8v-fxxf-c986"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-75598"},{"type":"WEB","url":"https://github.com/GradleUp/shadow/commit/0c2744fcc050e34a084f5131d5e167b13c342bfd"},{"type":"PACKAGE","url":"https://github.com/GradleUp/shadow"},{"type":"WEB","url":"https://github.com/GradleUp/shadow/releases/tag/9.6.0"}],"affected":[{"package":{"name":"com.gradleup.shadow:com.gradleup.shadow.gradle.plugin","ecosystem":"Maven","purl":"pkg:maven/com.gradleup.shadow/com.gradleup.shadow.gradle.plugin"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"9.6.0"}]}],"versions":["8.3.0","8.3.1","8.3.10","8.3.11","8.3.2","8.3.3","8.3.4","8.3.5","8.3.6","8.3.7","8.3.8","8.3.9","9.0.0","9.0.0-beta1","9.0.0-beta10","9.0.0-beta11","9.0.0-beta12","9.0.0-beta13","9.0.0-beta14","9.0.0-beta15","9.0.0-beta16","9.0.0-beta17","9.0.0-beta2","9.0.0-beta3","9.0.0-beta4","9.0.0-beta5","9.0.0-beta6","9.0.0-beta7","9.0.0-beta8","9.0.0-beta9","9.0.0-rc1","9.0.0-rc2","9.0.0-rc3","9.0.1","9.0.2","9.1.0","9.2.0","9.2.1","9.2.2","9.3.0","9.3.1","9.3.2","9.4.0","9.4.1","9.4.2","9.4.3","9.5.0","9.5.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/11/GHSA-rr8v-fxxf-c986/GHSA-rr8v-fxxf-c986.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H"}]}