Build1 distinct publisher2 min readPublished
CVE-2026-82222 lets an unauthenticated visitor register on any GiveWP site running 4.16.7.1 or earlier, park a serialized gadget in a profile field, and let donation processing deserialize it into OS command execution. The fix is 4.16.7.2.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
What makes this chain interesting is the gap between planting the payload and firing it. After the account exists, the attacker stores a serialized PHP gadget in the `last_name` profile field as an ordinary string [5]. GiveWP's donation processing then converts that value into an incomplete object and writes it back into the `wp_give_sessions` table [6]. An incomplete object is what PHP produces when it deserializes data whose class is not loaded yet: a typed placeholder that sits inert. At that point the payload is indistinguishable from normal session data in the database.
On the next request GiveWP reads that session and reconstructs the object with its class available, and that is when the gadget chain runs [7]. It terminates at `call_user_func_array()`, reached through a TCPDF gadget chain, which is the point where anonymous input becomes an OS command executing as the web server process [8][9][10].
Storing the gadget and detonating it on a later read is what makes this awkward to catch at the boundary. The request that plants the payload reads as a routine profile update. The request that triggers it carries nothing suspicious, because the dangerous data is already inside the session store the application trusts.
Detection therefore leans on the seams of that flow. Watch for sequential requests to `give_action=user_register`, then profile updates, then the donation and session APIs [15]. Watch for serialized strings landing in a `last_name` field, and for web server processes such as `php-fpm`, `apache2`, or `httpd` spawning shells or network tools [15]. Each of those signals is unremarkable on its own and telling in sequence. None of them requires the operator to have left registration switched on to notice.
Ranked by verification strength, evidence, and original report placement.
CVE-2026-82222 is a critical flaw in the GiveWP WordPress donation plugin affecting versions 4.16.7.1 and earlier, allowing unauthenticated attackers to execute OS commands on vulnerable sites.
BleepingComputer reported the flaw on 2026-08-28, drawing on a Patchstack technical analysis.
The exploit begins with the attacker creating an account and obtaining a cookie through GiveWP's custom registration feature.
Accounts are created despite the WordPress users_can_register setting being disabled.
The attacker saves a PHP serialization gadget into the last_name field.
Donation processing converts the value into an incomplete object and saves it back to the wp_give_sessions table.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 28, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
security
GiveWP issues accounts to unauthenticated attackers on sites where registration is off2 distinct publishers
build
Forminator trusts a forged upload: a dropdown flaw exposes 600,000 WordPress sites to RCE1 distinct publisher
build
One slug, seven editions: the miniOrange SAML bug that makes published metadata an admin login1 distinct publisher
security
Six bugs, one order of operations: Avada's zero-click chain is a same-day patch1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One retelling of one analysis
Every technical step — the registration bypass, the gadget parked in last_name, the round trip through wp_give_sessions, the TCPDF chain into call_user_func_array() — reaches readers through a single dev.to post summarising BleepingComputer, which itself summarises Patchstack. The detail is specific and falsifiable, which keeps this from scoring low: table names, field names and the exact sink are the kind of thing that gets corrected fast if wrong. But there is no CVSS figure, no NVD record and no link to the primary advisory anywhere in our coverage, and the three-hop provenance means a mistake anywhere upstream arrives here unchallenged.
No exposure or patch numbers anywhere
We can date the disclosure and we know a fixed build exists. Beyond that the reporting is silent on everything that would make this measurable: how many sites run 4.16.7.1 or earlier, how fast 4.16.7.2 is landing, and whether a single exploit attempt has been seen. The write-up's stage-by-stage 'Attack Attempt Observed', 'Initial Execution Confirmed' and 'Post-Exploitation Confirmed' headings are a generic classification template, not a record of incidents, and reading them as evidence of activity would be a mistake.
Runbook urgency, no reported victim
The packaging runs ahead of the facts in one direction and behind them in another. Ahead: a Critical label and a full incident-response runbook — hunting queries, log-gap warnings, credential revocation — wrapped around a patched flaw with no exploitation reported by anyone. Behind: the headline remedy, 'update to 4.16.7.2', quietly undersells what the same guidance requires, since the fix only holds once the migration is completed and existing rogue accounts, sessions and legacy forms are cleared out. A site owner who reads only the version number takes away less than the reporting actually says.
Vendor research at the head of the chain
The analysis originates with Patchstack, a company whose business is finding and blocking WordPress plugin flaws, travels through BleepingComputer, and is then repackaged by a dev.to author into security-operations content complete with telemetry tables and triage steps. None of that makes the gadget chain wrong. It does mean every framing choice in the chain — severity emphasis, detection-tooling shape, the assumption that you should be hunting right now — points the same way, and no one in our coverage sits in a position to push back. GiveWP's own account of the fix is not represented.
Believable mechanics, thin corroboration
Confidence here rests on internal coherence rather than on independent checking. The chain hangs together the way real object-injection bugs do — a bypassed registration gate, a survivable incomplete object, a session write-back that rehydrates the class — and the affected and fixed version numbers are precise enough to act on. What is missing is anyone else saying so: one publisher, no primary advisory, no exposure data, and no vendor statement. Enough to justify patching immediately; not enough to characterise the real-world risk.