CVE-2026-22816

7.4 HIGH

📋 TL;DR

This vulnerability in Gradle's dependency resolution allows an attacker to serve malicious artifacts if they can register a domain name matching an unresolvable hostname in a build configuration. It affects Gradle builds using versions before 9.3.0 that have multiple repositories configured, with the vulnerable repository listed before others. Build engineers and developers using Gradle for dependency management are at risk.

💻 Affected Systems

Products:
  • Gradle
Versions: All versions before 9.3.0
Operating Systems: All
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when using multiple repositories with the vulnerable one listed before others in build configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

An attacker registers a domain matching an unresolvable hostname, serves malicious dependencies that get executed during build or runtime, leading to supply chain compromise, code execution, or data exfiltration.

🟠

Likely Case

Accidental domain typos or expired registrations could be exploited by opportunistic attackers to serve malicious packages, potentially compromising build pipelines or development environments.

🟢

If Mitigated

With proper repository ordering and domain management, the attack surface is reduced, but the fundamental vulnerability remains until patched.

🌐 Internet-Facing: MEDIUM - Requires attacker to register a specific domain and have it listed before legitimate repositories, but internet-facing build systems are vulnerable.
🏢 Internal Only: LOW - Internal-only repositories with controlled domain names are less likely to be targeted, though misconfigurations could still pose risk.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires specific conditions: attacker must register matching domain, and vulnerable repository must be listed before others. No public exploits known.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 9.3.0

Vendor Advisory: https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82

Restart Required: No

Instructions:

1. Update Gradle wrapper properties to use gradle-9.3.0 or later. 2. Run './gradlew wrapper --gradle-version 9.3.0'. 3. Verify build works with new version.

🔧 Temporary Workarounds

Reorder repositories

all

Place trusted repositories (like Maven Central) before any custom or potentially unreliable repositories in build configuration

In build.gradle or build.gradle.kts, ensure repositories are ordered with most trusted first

Validate repository URLs

all

Regularly check that all repository hostnames in build configurations are valid and properly registered

Use DNS validation tools or scripts to verify repository domains

🧯 If You Can't Patch

  • Audit all repository configurations and ensure trusted repositories are listed first
  • Implement network controls to restrict outbound connections to only approved repository domains

🔍 How to Verify

Check if Vulnerable:

Check Gradle version with './gradlew --version' or examine gradle-wrapper.properties for distributionUrl containing version below 9.3.0

Check Version:

./gradlew --version | grep 'Gradle'

Verify Fix Applied:

Confirm Gradle version is 9.3.0 or higher using './gradlew --version'

📡 Detection & Monitoring

Log Indicators:

  • Gradle build logs showing 'Could not resolve' errors followed by successful resolution from different repository
  • Unexpected repository domains being accessed during builds

Network Indicators:

  • DNS queries for suspicious or newly registered domains matching repository hostnames
  • Downloads from unexpected repository domains

SIEM Query:

source="gradle-build.log" AND ("Could not resolve" OR "Repository resolution failed") AND "successfully resolved"

🔗 References

📤 Share & Export