Why does BruteProtect allow bruteprotect to remotely enumerate a site's plugins?
-
Hi,
I’ve used BruteProtect on a few sites – it’s been very useful – and was reading the code because I wanted to suggest an action to be called (if not already) when a site is blocked; allowing me to pick up the information and pass it to the firewall.
When doing so, I learnt that:
– When a site gets its API key, it also receives back a key from the ‘mothership’ (https://api.bruteprotect.com)– The mothership can then call back, via a URL of this form, using the key that it knows, in order to enumerate the site’s plugins:
https://example.com/wp-login.php?bruteprotect_checkin=<key>
The output, supplied via bruteprotect/uptime_securewatch.php, is then a JSON-encoded list of the site’s plugins (all plugins – not just BruteProtect), and their versions, together with an indicator of whether or not the site has a user named ‘admin’:
$plugins = get_site_option('active_plugins'); $t = plugin_dir_path(__FILE__); $t = preg_replace('/'. preg_quote('bruteprotect/', '/') . '$/', '', $t); if(is_array($plugins)) : foreach($plugins as $pfile) : $pf = $t.$pfile; $pl['shortname'] = trim(plugin_dir_path($pfile), '/'); $p = get_plugin_data($pf); $pl['name'] = $p['Name']; $pl['version'] = $p['Version']; $pls[] = $pl; endforeach; endif; $o['version'] = get_bloginfo('version'); $o['plugins'] = $pls; if(username_exists('admin')) { $o['has_admin_user'] = 1; } echo json_encode($o);
On the face of it, this appears to be a backdoor, and a breach of the www.ads-software.com guidelines (https://www.ads-software.com/plugins/about/guidelines/ – point 7, unauthorized collection of user data). I can detect no reason in the plugin’s code or design as to why it needs to provide BruteProtect HQ with special access to, at any time, enumerate my site’s plugins or usernames.
What this looks like very much shakes my confidence in BruteProtect, and I’d really like to hear an explanation of firstly why BruteProtect HQ needed this backdoor, and secondly why it’s nowhere mentioned in the documentation?
Many thanks,
David
- The topic ‘Why does BruteProtect allow bruteprotect to remotely enumerate a site's plugins?’ is closed to new replies.