Comment vulnerability in Wordpress 4.2
Hanno Böck tweeted
about WordPress 4.2 Stored XSS rather
recently. The short version is: if an attacker can comment on your blog, your
blog is owned. Since the latest release is affected and is the version I am
using, I have been looking for a way to disable comments globally, at least
until a fix has been released. I'm surprised how difficult disabling comments
globally is. Option "Allow people to post comments on new articles" is filed
under "Default article settings", so it applies to new posts only. Let's
disable that. There is a plug-in Disable
comments,
but since it claims to not alter the database (unless in persistent mode), I
have a feeling that it may only remove commenting forms but leave commenting
active to hand-made GET
/POST
requests, so that may not be safe. So without
studying Wordpress code in depth my impression is that I have two options:
- a) restrict comments to registered users, deactivate registration (hoping that all existing users are friendly and that disabled registration is waterproof in 4.2) and/or
- b) disable comments for future posts in the settings (in case I post again before an update) and for every single post from the past.
On database level, the former can be seen here:
mysql> SELECT option_name, option_value FROM wp_options WHERE option_name LIKE '%regist%'; +----------------------+--------------+ | option_name | option_value | +----------------------+--------------+ | users_can_register | 0 | | comment_registration | 1 | +----------------------+--------------+ 2 rows in set (0.01 sec)
For the latter, this is how to disable comments on all previous posts:
mysql> UPDATE wp_posts SET comment_status = 'closed'; Query OK, .... rows affected (.... sec) Rows matched: .... Changed: .... Warnings: 0
If you have comments to share, please
usee-mail this time. Upgraded to 4.2.1 now.