CVE-2021-29427
Repository content filters do not work in Settings pluginManagement
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
1Exploited in Wild
-Decision
Descriptions
In Gradle from version 5.1 and before version 7.0 there is a vulnerability which can lead to information disclosure and/or dependency poisoning. Repository content filtering is a security control Gradle introduced to help users specify what repositories are used to resolve specific dependencies. This feature was introduced in the wake of the "A Confusing Dependency" blog post. In some cases, Gradle may ignore content filters and search all repositories for dependencies. This only occurs when repository content filtering is used from within a `pluginManagement` block in a settings file. This may change how dependencies are resolved for Gradle plugins and build scripts. For builds that are vulnerable, there are two risks: 1) Information disclosure: Gradle could make dependency requests to repositories outside your organization and leak internal package identifiers. 2) Dependency poisoning/Dependency confusion: Gradle could download a malicious binary from a repository outside your organization due to name squatting. For a full example and more details refer to the referenced GitHub Security Advisory. The problem has been patched and released with Gradle 7.0. Users relying on this feature should upgrade their build as soon as possible. As a workaround, users may use a company repository which has the right rules for fetching packages from public repositories, or use project level repository content filtering, inside `buildscript.repositories`. This option is available since Gradle 5.1 when the feature was introduced.
En Gradle desde versión 5.1 y anterior a la versión 7.0, se presenta una vulnerabilidad que puede conducir a la divulgación de información y/o envenenamiento por dependencia. El filtrado de contenido del repositorio es un control de seguridad que Gradle introdujo para ayudar a los usuarios a especificar qué repositorios se usan para resolver dependencias específicas. Esta función se introdujo a raíz de la publicación de blog "A Confusing Dependency". En algunos casos, Gradle puede ignorar los filtros de contenido y buscar dependencias en todos los repositorios. Esto solo ocurre cuando el filtrado de contenido del repositorio se usa dentro de un bloque `pluginManagement` en un archivo de configuración. Esto puede cambiar la forma en que se resuelven las dependencias para los plugins de Gradle y los scripts de compilación. Para las compilaciones que son vulnerables, existen dos riesgos: 1) Divulgación de información: Gradle podría realizar peticiones de dependencia a repositorios fuera de su organización y filtrar identificadores de paquetes internos. 2) Envenenamiento por Dependencia / Confusión de Dependencia: Gradle podría descargar un binario malicioso de un repositorio fuera de su organización debido a la ocupación ilegal de nombres. Para obtener un ejemplo completo y más detalles, consulte el Aviso de seguridad de GitHub al que se hace referencia. El problema se ha corregido y publicado con Gradle versión 7.0. Los usuarios que confían en esta función deben actualizar su compilación lo antes posible. Como solución alternativa, los usuarios pueden utilizar un repositorio de la empresa que tenga las reglas adecuadas para recuperar paquetes de repositorios públicos, o utilizar el filtrado de contenido del repositorio a nivel de proyecto, dentro de `buildscript.repositories`. Esta opción está disponible desde Gradle versión 5.1 cuando se introdujo la función
CVSS Scores
SSVC
- Decision:-
Timeline
- 2021-03-30 CVE Reserved
- 2021-04-13 CVE Published
- 2024-03-05 EPSS Updated
- 2024-08-03 CVE Updated
- 2024-08-03 First Exploit
- ---------- Exploited in Wild
- ---------- KEV Due Date
CWE
- CWE-829: Inclusion of Functionality from Untrusted Control Sphere
CAPEC
References (4)
URL | Tag | Source |
---|
URL | Date | SRC |
---|---|---|
https://github.com/gradle/gradle/security/advisories/GHSA-jvmj-rh6q-x395 | 2024-08-03 |
URL | Date | SRC |
---|
URL | Date | SRC |
---|---|---|
https://docs.gradle.org/7.0/release-notes.html#security-advisories | 2021-10-20 | |
https://access.redhat.com/security/cve/CVE-2021-29427 | 2022-05-18 | |
https://bugzilla.redhat.com/show_bug.cgi?id=1949638 | 2022-05-18 |
Affected Vendors, Products, and Versions
Vendor | Product | Version | Other | Status | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Vendor | Product | Version | Other | Status | <-- --> | Vendor | Product | Version | Other | Status |
Gradle Search vendor "Gradle" | Gradle Search vendor "Gradle" for product "Gradle" | >= 5.1 < 7.0 Search vendor "Gradle" for product "Gradle" and version " >= 5.1 < 7.0" | - |
Affected
| ||||||
Quarkus Search vendor "Quarkus" | Quarkus Search vendor "Quarkus" for product "Quarkus" | <= 2.2.3 Search vendor "Quarkus" for product "Quarkus" and version " <= 2.2.3" | - |
Affected
|