CVE-2021-29504 Improper Certificate Validation in WP-CLI framework

Critical 9.1 Published Updated

Attackers can bypass TLS certificate validation in WP-CLI to intercept traffic and push malicious updates to WordPress instances or the CLI itself.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2021-29504?

CVE-2021-29504 is a critical vulnerability in wp-cli, published on 7 Jun 2021. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

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.

Weakness: CWE-295

Which versions are affected by CVE-2021-29504?

3 open source packages ship an affected version, including wp-cli/wp-cli and wp-cli. It affects 1 product.

PackageAffectedFixed in
wp-cli/wp-cli PackagistFrom 0.12.02.5.0
wp-cli/wp-cli PackagistFrom 0.12.02.5.0
wp-cli BitnamiFrom 0.12.02.5.0
Linux distribution packages (1)
wp-cli openSUSE:TumbleweedAll versions2.5.0-1.2

Products include Wp-Cli Wp-Cli.

How do I fix CVE-2021-29504?

Upgrade wp-cli/wp-cli to 2.5.0 or later.

Is CVE-2021-29504 being exploited?

There is no known exploitation of CVE-2021-29504 in the wild and no public exploit code.

Sources

Also known as BIT-wp-cli-2021-29504, GHSA-rwgm-f83r-v3qj, openSUSE-SU-2024:11514-1.

Is CVE-2021-29504 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free