WordPress this week addressed a vulnerability that could allow an unauthenticated attacker to execute code remotely and take over vulnerable websites.
The vulnerability impacts the manner in which comments are filtered and then stored in the database, and any WordPress installation prior to version 5.1.1 with comments enabled is vulnerable.
To exploit the vulnerability, an attacker would have to trick the site administrator to visit a domain to trigger a cross-site request forgery (CSRF) exploit in the background. The exploit leverages a series of logic flaws and sanitization errors to execute code and take over the target site, Simon Scannell of RIPS Technologies explains.
The vulnerability is exploitable with default settings and, with most WordPress installations having comments enabled, millions of websites are likely impacted, the security researcher says.
The core of the problem, Scannell explains, is that WordPress doesn’t perform CSRF validation when a user posts a new comment (features such as trackbacks and pingbacks would break if validations were in place), which allows an attacker to create comments in the name of administrators.
“WordPress tries to solve this problem by generating an extra nonce for administrators in the comment form. When the administrator submits a comment and supplies a valid nonce, the comment is created without any sanitization. If the nonce is invalid, the comment is still created but is sanitized,” Scannell notes.
The security researcher discovered that a logic flaw in the sanitization process could allow an attacker to create comments that contain “much more HTML tags and attributes than comments should usually be allowed to contain,” which could lead to a stored Cross-Site-Scripting (XSS) in the WordPress core.
This is possible because “some attributes that usually can’t be set in comments are parsed and manipulated in a faulty way that leads to an arbitrary attribute injection,” the researcher explains.
“Remote Code Execution can be achieved easily. By default, WordPress allows administrators of a blog to directly edit the .php files of themes and plugins from within the admin dashboard. By simply inserting a PHP backdoor, the attacker can gain arbitrary PHP code execution on the remote server,” the researcher notes.
The vulnerability was addressed in WordPress 5.1.1 and site admins are advised to apply the patch as soon as possible, provided that their installation is not set to auto-update (which is the default setting).