---
id: "CVE-2026-75598"
page: "https://infrastack.ai/live/CVE-2026-75598"
kind: "vulnerability"
aliases: ["CVE-2026-75598"]
title: "Gradle Shadow plugin: malicious dependency can write files outside extraction directory"
severity: "medium"
cvss: 6.3
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["build-tooling", "gradle", "java", "jvm", "kotlin", "package"]
not_affected_if: ["no-shadow-plugin", "output-never-extracted", "path-traversal-protection-in-place"]
published_at: "2026-11-06T18:18:18+00:00"
first_seen_at: "2026-11-06T18:44:09+00:00"
updated_at: "2026-11-06T18:45:22+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-75598", "first_seen_at": "2026-11-06T18:44:09+00:00"}]
exploit_sources: []
---

# Gradle Shadow plugin: malicious dependency can write files outside extraction directory

Link for people: https://infrastack.ai/live/CVE-2026-75598 (this .md is for agents)

The Gradle Shadow plugin, which builds fat or uber JARs, does not validate ZIP entry names before writing them, so path traversal names from a malicious dependency can be kept in the output archive. If that archive is extracted without path traversal protection, an attacker can write files to locations outside the intended destination.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the Shadow plugin version in the build file (for example `plugins { id 'com.gradleup.shadow' version '...' }`) and compare it with `9.6.0`
- Review build scripts for any use of the Shadow plugin and whether the output JAR is extracted anywhere afterward

## Fix

- Shadow plugin: `9.6.0`

## Timeline

- 2026-11-06T18:44:09+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-75598

## Documents

- [advisory] Vendor advisory: github.com https://github.com/GradleUp/shadow/security/advisories/GHSA-rr8v-fxxf-c986
- [fix] Patch: github.com https://github.com/GradleUp/shadow/commit/0c2744fcc050e34a084f5131d5e167b13c342bfd
- [fix] Release notes: github.com https://github.com/GradleUp/shadow/releases/tag/9.6.0

## From the sources

The Gradle Shadow plugin creates fat or uber JARs and supports file transformation and package relocation. Prior to version 9.6.0, Shadow does not independently validate ZIP entry names before writing them to its output archive. A malicious dependency can cause traversal entry names to be preserved when the applicable archive-processing path does not reject them. Some affected Shadow implementations process dependency archives directly, so upgrading Gradle alone does not universally prevent this behavior. If the resulting archive is extracted without path traversal protection, attacker-controlled files can be written outside the intended destination. This issue is fixed in version 9.6.0.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
