Safeguard
Vulnerability Analysis•

CVE-2025-22777: Critical Object Injection in GiveWP Plugin

CVE-2025-22777 is a critical PHP object injection flaw in the GiveWP donation plugin up to 3.19.3. Update to 3.19.4 or later and check your site.

Safeguard Security Team
3 min read

CVE-2025-22777 is a critical (CVSS 9.8) PHP object injection flaw in GiveWP, the WordPress donation plugin by StellarWP. Versions up to and including 3.19.3 are affected, and an unauthenticated attacker can reach the bug. Patchstack lists 3.19.4 as the patched version, so update to it or later.

What's affected

The NVD record says GiveWP, plugin slug give, is affected from the first release through 3.19.3. Patchstack's entry gives the same range and names 3.19.4 as the patched release. It lists the required privilege as unauthenticated and the Patchstack priority as high.

Patchstack dates the report to 31 December 2024 and its publication to 10 January 2025.

How to check if you're exposed

With WP-CLI on the server:

wp plugin get give --field=version
wp plugin update give

In the WordPress admin, open Plugins and read the version under GiveWP. Anything at or below 3.19.3 needs the update. Since the plugin handles donations, also check that your payment gateway keys and admin accounts look normal if the site was unpatched for a while.

Reading an inventory is faster than checking host by host. Safeguard has a free in-browser dependency scan at gold.safeguard.sh/scan and a Gold directory you can search for any CVE. Reachability analysis helps you see whether a vulnerable component is actually used in your code, so you can fix the exposed ones first.

What to do now

  1. Update GiveWP to 3.19.4 or later.
  2. Confirm the version in the plugin list.
  3. Review administrator accounts and recently modified files on sites that ran an old version in public.
  4. Rotate payment gateway and API keys if you find signs of tampering.
  5. Subscribe to plugin advisories or scan your dependencies on a schedule.

Why it matters

CWE-502 is deserialization of untrusted data. PHP's unserialize() turns a string back into objects. When the string comes from a request, the sender influences which objects are built, and some classes run code when they are created or destroyed. That is called object injection, and the impact depends on which classes exist in the application and its plugins.

The fix is to stop passing untrusted data to unserialize(), or to restrict the allowed classes. The record does not mark this CVE as exploited, and the KEV flag is false, so no exploitation is claimed here. Even so, a critical, unauthenticated flaw in a public WordPress plugin is the kind that gets scanned for quickly.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Which version fixes it?

Patchstack lists 3.19.4 as the patched version. Versions up to and including 3.19.3 are affected.

Is a login required?

Patchstack lists the required privilege as unauthenticated.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.