// For flags

CVE-2021-29504

Improper Certificate Validation in WP-CLI framework

Severity Score

7.4
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

WP-CLI is the command-line interface for WordPress. An improper error handling in HTTPS requests management in WP-CLI version 0.12.0 and later allows remote attackers able to intercept the communication to remotely disable the certificate verification on WP-CLI side, gaining full control over the communication content, including the ability to impersonate update servers and push malicious updates towards WordPress instances controlled by the vulnerable WP-CLI agent, or push malicious updates toward WP-CLI itself. The vulnerability stems from the fact that the default behavior of `WP_CLI\Utils\http_request()` when encountering a TLS handshake error is to disable certificate validation and retry the same request. The default behavior has been changed with version 2.5.0 of WP-CLI and the `wp-cli/wp-cli` framework (via https://github.com/wp-cli/wp-cli/pull/5523) so that the `WP_CLI\Utils\http_request()` method accepts an `$insecure` option that is `false` by default and consequently that a TLS handshake failure is a hard error by default. This new default is a breaking change and ripples through to all consumers of `WP_CLI\Utils\http_request()`, including those in separate WP-CLI bundled or third-party packages. https://github.com/wp-cli/wp-cli/pull/5523 has also added an `--insecure` flag to the `cli update` command to counter this breaking change. There is no direct workaround for the default insecure behavior of `wp-cli/wp-cli` versions before 2.5.0. The workaround for dealing with the breaking change in the commands directly affected by the new secure default behavior is to add the `--insecure` flag to manually opt-in to the previous insecure behavior.

WP-CLI es la interfaz de línea de comandos para WordPress. Un manejo inapropiado de errores en la administración de peticiones HTTPS en la versión 0.12.0 y posteriores de WP-CLI, permite a atacantes remotos capaces de interceptar la comunicación desactivar remotamente la comprobación del certificado en el lado de WP-CLI, obteniendo un control total sobre el contenido de la comunicación, incluyendo la habilidad de hacerse pasar por servidores de actualización y empujar actualizaciones maliciosas hacia instancias de WordPress controladas por el agente vulnerable de WP-CLI, o empujar actualizaciones maliciosas hacia el propio WP-CLI. La vulnerabilidad proviene del hecho de que el comportamiento por defecto de la función "WP_CLI\Utils\http_request()" cuando se encuentra un error de protocolo de enlace TLS es desactivar la comprobación del certificado y volver a intentar la misma petición. El comportamiento por defecto ha sido cambiado con la versión 2.5.0 de WP-CLI y el framework "wp-cli/wp-cli" (por medio de https://github.com/wp-cli/wp-cli/pull/5523) para que el método "WP_CLI\Utils\http_request()" acepte una opción "$insecure" que es "false" por defecto y en consecuentemente un fallo de protocolo de enlace TLS es un error duro por defecto. Este nuevo valor por defecto es un cambio de ruptura y se extiende a todos los consumidores de la función "WP_CLI\Utils\http_request()", incluyendo aquellos en paquetes separados de WP-CLI o de terceros. https://github.com/wp-cli/wp-cli/pull/5523 también ha añadido un flag "--insecure" al comando "cli update" para contrarrestar este cambio de ruptura. No hay una solución directa para el comportamiento no seguro por defecto de las versiones anteriores a 2.5.0 de "wp-cli/wp-cli". La solución para tratar el cambio de ruptura en los comandos directamente afectados por el nuevo comportamiento seguro por defecto es añadir el flag "--insecure" para optar manualmente por el comportamiento no seguro anterior

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None
Attack Vector
Network
Attack Complexity
Low
Authentication
None
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-06-07 CVE Published
  • 2024-08-03 CVE Updated
  • 2024-09-08 EPSS Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-295: Improper Certificate Validation
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Wp-cli
Search vendor "Wp-cli"
Wp-cli
Search vendor "Wp-cli" for product "Wp-cli"
>= 0.12.0 < 2.5.0
Search vendor "Wp-cli" for product "Wp-cli" and version " >= 0.12.0 < 2.5.0"
-
Affected