// For flags

CVE-2021-29427

Repository content filters do not work in Settings pluginManagement

Severity Score

7.2
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

1
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
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

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
Attack Vector
Network
Attack Complexity
High
Privileges Required
High
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High
Attack Vector
Network
Attack Complexity
Medium
Authentication
Single
Confidentiality
Partial
Integrity
Partial
Availability
Partial
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
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
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