{"id":"CVE-2026-22865","aliases":["ALPINE-CVE-2026-22865","BELL-CVE-2026-22865","BIT-gradle-2026-22865","DEBIAN-CVE-2026-22865","EUVD-2026-3594","GHSA-mqwm-5m85-gmcv","UBUNTU-CVE-2026-22865"],"status":"published","title":"Gradle's failure to disable repositories failing to answer can expose builds to malicious artifacts","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","severity":{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00158,"percentile":0.04978,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-494","CWE-829"],"published":"2026-01-16T22:46:19Z","modified":"2026-11-03T06:33:01Z","fixes":[{"ecosystem":"Alpine:v3.23","package":"gradle","fixed_in":["8.14.4-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.24","package":"gradle","fixed_in":["8.14.4-r0"],"sources":["osv"]},{"ecosystem":"Alpaquita:23","package":"gradle","fixed_in":["8.14.4-r0"],"sources":["osv"]},{"ecosystem":"Alpaquita:25","package":"gradle","fixed_in":["8.14.4-r0"],"sources":["osv"]},{"ecosystem":"Alpaquita:stream","package":"gradle","fixed_in":["8.14.4-r0"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"gradle","fixed_in":["9.3.0"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Alpine:v3.23","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"9.0.0"},{"fixed":"8.14.4-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.24","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"9.0.0"},{"fixed":"8.14.4-r0"}]}]},{"source":"osv","ecosystem":"Alpaquita:23","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.5.1-r3"},{"fixed":"8.14.4-r0"}]}]},{"source":"osv","ecosystem":"Alpaquita:25","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.14.1-r0"},{"fixed":"8.14.4-r0"}]}]},{"source":"osv","ecosystem":"Alpaquita:stream","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.6-r1"},{"fixed":"8.14.4-r0"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"gradle","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"9.3.0"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-18","4.4.1-19","4.4.1-20","4.4.1-21","4.4.1-22","4.4.1-23","4.5.1-1","4.6-1","4.6-2"]},{"source":"osv","ecosystem":"Debian:13","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-22","4.4.1-23","4.5.1-1","4.6-1","4.6-2"]},{"source":"osv","ecosystem":"Debian:14","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-22","4.4.1-23","4.5.1-1","4.6-1","4.6-2"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5-3","2.7-1","2.7-2","2.7-3","2.10-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.2.1-3build2","3.2.1-4","3.2.1-5","3.4.1-4","3.4.1-6","3.4.1-7ubuntu1","4.4.1-5ubuntu2~18.04","4.4.1-5ubuntu2~18.04+esm1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-8","4.4.1-9","4.4.1-10"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-13"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-18","4.4.1-20"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-22"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-22ubuntu1","4.4.1-23"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"gradle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.4.1-22","4.4.1-22build1","4.4.1-22ubuntu1"]}],"products":[{"vendor":"gradle","product":"gradle"}],"references":[{"url":"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv","tags":["x_refsource_CONFIRM","Vendor Advisory","advisory","report"]},{"url":"https://security.alpinelinux.org/vuln/CVE-2026-22865","tags":["advisory"]},{"url":"https://docs.bell-sw.com/security/cves/CVE-2026-22865","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-22865","tags":["web","advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22865.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-22865","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-22865","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-22865","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-22865","title":"Gradle's failure to disable repositories failing to answer can expose builds to malicious artifacts","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T22:46:19.741Z","modified":"2026-01-20T14:47:41.205Z","cvss":[{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N","level":"high","assessor":"cna"}],"cwes":["CWE-494","CWE-829"],"updated_at":"2026-11-02T13:39:16.730222Z"}],"euvd":[{"id":"EUVD-2026-3594","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T22:46:19Z","modified":"2026-01-20T14:47:41Z","cvss":[{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N","level":"high"}],"updated_at":"2026-11-02T19:48:50.374471Z"}],"nvd":[{"id":"CVE-2026-22865","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T23:15:50.28Z","modified":"2026-06-17T10:20:31.813Z","cvss":[{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"},{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"primary"}],"cwes":["CWE-494","CWE-829"],"updated_at":"2026-11-02T14:12:04.066712Z"}],"osv":[{"id":"ALPINE-CVE-2026-22865","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T23:15:50.28Z","modified":"2026-11-03T06:33:01.707429906Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-03T07:15:53.944853Z"},{"id":"BELL-CVE-2026-22865","status":"published","published":"2026-01-22T06:08:22.816661Z","modified":"2026-05-07T07:16:28.632697Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:28:23.037038Z"},{"id":"CVE-2026-22865","title":"Gradle's failure to disable repositories failing to answer can expose builds to malicious artifacts","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T22:46:19.741Z","modified":"2026-10-28T02:30:54.561808472Z","cvss":[{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N","level":"high"}],"cwes":["CWE-494","CWE-829"],"updated_at":"2026-11-02T15:44:58.749922Z"},{"id":"DEBIAN-CVE-2026-22865","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T23:15:50.28Z","modified":"2026-10-01T03:02:30.905627399Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:53.097669Z"},{"id":"UBUNTU-CVE-2026-22865","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-16T23:15:00Z","modified":"2026-10-17T12:59:55.35141676Z","cvss":[{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:H/SA:N","level":"high"},{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T16:56:01.334185Z"},{"id":"BIT-gradle-2026-22865","title":"Gradle's failure to disable repositories failing to answer can expose builds to malicious artifacts","description":"Gradle is a build automation tool, and its native-platform tool provides Java bindings for native APIs. When resolving dependencies in versions before 9.3.0, some exceptions were not treated as fatal errors and would not cause a repository to be disabled. If a build encountered one of these exceptions, Gradle would continue to the next repository in the list and potentially resolve dependencies from a different repository. An exception like NoHttpResponseException can indicate transient errors. If the errors persist after a maximum number of retries, Gradle would continue to the next repository. This behavior could allow an attacker to disrupt the service of a repository and leverage another repository to serve malicious artifacts. This attack requires the attacker to have control over a repository after the disrupted repository. Gradle has introduced a change in behavior in Gradle 9.3.0 to stop searching other repositories when encountering these errors.","status":"published","published":"2026-01-21T08:41:11.981Z","modified":"2026-09-08T08:47:50.384777826Z","updated_at":"2026-11-02T15:28:31.02759Z"}]}}
