CVE-2026-76228: Renovate before 42.68.5 Remote Code Execution via Gradle Wrapper
Renovate versions >=32.124.0 and before 42.68.5 (and Mend renovate-ce/renovate-ee before 13.3.0) contain a command injection vulnerability in Gradle Wrapper artifact handling. When Renovate processes Gradle Wrapper updates, it invokes a wrapper update command via a shell (e.g. /bin/sh -c ... ./gradlew :wrapper --gradle-distribution-url <value>). If an attacker supplies a malicious gradle-wrapper.properties whose distributionUrl contains shell command substitution syntax such as $(...), the shell evaluates it before Gradle parses the URL, resulting in arbitrary command execution in the Renovate runtime. Exploitation requires the attacker to introduce the malicious file into a repository that Renovate scans; the issue occurs even when allowScripts is disabled.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Renovateto a version that resolves this vulnerability.Fixed in 42.68.5 - Upgrade
Upgrade
Mend renovate-ce/renovate-eeto a version that resolves this vulnerability.Fixed in 13.3.0
Event History
Frequently Asked Questions
Which deployments are exposed?
Renovate versions 32.124.0 through before 42.68.5 are affected. Mend renovate-ce and renovate-ee versions before 13.3.0 are also affected, when they process Gradle Wrapper updates.
What does an attacker need to exploit this?
An attacker must be able to introduce a malicious gradle-wrapper.properties file into a repository scanned by Renovate. The file's distributionUrl must contain shell command substitution syntax, such as $(...), which is evaluated in the Renovate runtime.
Does disabling allowScripts prevent exploitation?
No. The issue occurs even when allowScripts is disabled because Renovate invokes the Gradle Wrapper update command through a shell.