Millions of WordPress websites are at risk due to a critical vulnerability discovered in version 6.4.1.
This vulnerability, known as a Proof-of-Concept (PoC) chain, allows attackers to exploit a feature introduced in WordPress 6.4 to gain remote code execution (RCE) capabilities.
The problem here resides in the WP_HTML_Token
class, which was introduced in WordPress 6.4 and is used to improve HTML parsing in the block editor. It includes a __destruct
magic method that is automatically executed after PHP has processed the request. This __destruct
method uses call_user_func
to execute the function passed in through the on_destroy
property, accepting the bookmark_name
property as an argument:
public function __destruct() {
if ( is_callable( $this->on_destroy ) ) {
call_user_func( $this->on_destroy, $this->bookmark_name );
}
}
Since an attacker able to exploit an Object Injection vulnerability would have full control over the on_destroy
and bookmark_name
properties, they can use this to execute arbitrary code on the site to easily gain full control.
While WordPress Core currently does not have any known object injection vulnerabilities, they are rampant in other plugins and themes. The presence of an easy-to-exploit POP chain in WordPress core substantially increases the danger level of any Object Injection vulnerability.
The patch is very simple:
public function __wakeup() {
throw new \LogicException( __CLASS__ . ' should never be unserialized' );
}
The newly added __wakeup
method ensures that any serialized object with the WP_HTML_Token
class throws an error as soon as it is unserialized, preventing the __destruct
function from executing.
We recommend sharing this advisory with everyone you know who uses WordPress, as this is a potentially critical issue that could lead to complete site takeover.
Bijay Pokharel
Related posts
Recent Posts
Subscribe
Cybersecurity Newsletter
You have Successfully Subscribed!
Sign up for cybersecurity newsletter and get latest news updates delivered straight to your inbox. You are also consenting to our Privacy Policy and Terms of Use.