GIVE YOUR AGENT THE EVIDENCE

Set up in your agent.

One prompt to get started. Paste it into your coding agent to connect cve.new through MCP and bring vulnerability context into your workflow.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

GIVE YOUR AGENT THE EVIDENCE

Investigate in your agent.

Turn this advisory into a focused investigation. Ask your agent to check your project’s versions, explain the evidence, and suggest a compatible fix.

Your agent needs remote MCP support and access to https://cve.new/mcp.

Read the setup guide

GHSA-rwgm-f83r-v3qjcritical9.1

Improper Certificate Validation in WP-CLI framework

Check your stack

The advisory, in context

Impact

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.

Patches

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.

Subsequent PRs on the command repositories have added an --insecure flag to the appropriate commands on the following repositories to counter the breaking change:

Workarounds

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.

References

For more information

If you have any questions or comments about this advisory:

Affected packages

Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.

Ecosystem versions

From 0.12.0 before 2.5.0

Fixed in 2.5.0

46 explicitly affected versions

v0.12.0, v0.12.1, v0.13.0, v0.14.0, v0.14.1, v0.15.0, v0.15.1, v0.16.0, v0.17.0, v0.17.1, v0.17.2, v0.18.0, v0.18.1, v0.19.0, v0.19.1, v0.19.2, v0.19.3, v0.20.0, v0.20.1, v0.20.2, v0.20.3, v0.20.4, v0.21.0, v0.21.1, v0.22.0, v0.23.0, v0.23.1, v0.24.0, v0.24.1, v0.25.0, v1.0.0, v1.1.0, v1.2.0, v1.2.1, v1.3.0, v1.4.0, v1.4.1, v1.5.0, v1.5.1, v2.0.0, v2.0.1, v2.1.0, v2.2.0, v2.3.0, v2.4.0, v2.4.1

View affected-version evidence
{
  "ranges": [
    {
      "events": [
        {
          "introduced": "0.12.0"
        },
        {
          "fixed": "2.5.0"
        }
      ],
      "type": "ECOSYSTEM"
    }
  ],
  "versions": [
    "v0.12.0",
    "v0.12.1",
    "v0.13.0",
    "v0.14.0",
    "v0.14.1",
    "v0.15.0",
    "v0.15.1",
    "v0.16.0",
    "v0.17.0",
    "v0.17.1",
    "v0.17.2",
    "v0.18.0",
    "v0.18.1",
    "v0.19.0",
    "v0.19.1",
    "v0.19.2",
    "v0.19.3",
    "v0.20.0",
    "v0.20.1",
    "v0.20.2",
    "v0.20.3",
    "v0.20.4",
    "v0.21.0",
    "v0.21.1",
    "v0.22.0",
    "v0.23.0",
    "v0.23.1",
    "v0.24.0",
    "v0.24.1",
    "v0.25.0",
    "v1.0.0",
    "v1.1.0",
    "v1.2.0",
    "v1.2.1",
    "v1.3.0",
    "v1.4.0",
    "v1.4.1",
    "v1.5.0",
    "v1.5.1",
    "v2.0.0",
    "v2.0.1",
    "v2.1.0",
    "v2.2.0",
    "v2.3.0",
    "v2.4.0",
    "v2.4.1"
  ]
}

References