WordPress Plugin Security Reviews

As part of our focus on providing a service that provides our customers the best protection against WordPress plugin vulnerabilities, we do security reviews of plugins from the Plugin Directory selected by the paying customers of the service, so that they can know that plugins they use or are thinking of using are being properly secured. These reviews build on knowledge we have collected over the years from previously disclosed vulnerabilities, from trying to figure out what vulnerabilities hackers are trying to exploit in plugins we find them targeting, and other security reviews that we have done.

Currently, every two weeks we do a review of the plugin that our paying customers have given the most votes in favor of. Anyone with a paid subscription can submit plugins to be voted on and can add votes in favor of plugins submitted by others. (For current paying customers, once you are logged in to your account, go here to get started.)

You can get some idea if a plugin is at greater need for a security review with our Plugin Security Checker.

We also offer free reviews for any plugins that are adopted through the unofficial plugin adoption program.

If you are interested in getting a review done and don’t use our service, need a plugin review right away, or are looking for a review of a plugin not in the Plugin Directory. We offer a separate service for getting that review done.

What is Included in the Review?

With our reviews we are not reviewing every single line of code in the plugin or guaranteeing that it is free of all possible security issues, as the first part of that likely would produce poor results and the latter is unlikely to be possible to really accomplish. Instead, we focus on manually checking for specific issues determined by our years of dealing with WordPress plugin security. We check for known high risks issues, which are likely to be exploited if they are discovered based on everything we have seen over the years. We also check to make sure that the plugins are performing proper security hardening and security checks, which in addition detecting vulnerabilities that exist now, would limit other types of vulnerabilities from being exploitable if they existed, even if the relevant code is added to the plugin after the review is done. We also try to check for less serious issues that other security providers are known to falsely claim to be vulnerabilities.

The following items are checked for:

  • Insecure file upload handling (this is the cause of the most exploited type of vulnerability, arbitrary file upload)
  • Deserialization of untrusted data
  • Security issues with functions accessible through WordPress’ AJAX functionality (those have and continued to be a common source of disclosed vulnerabilities)
  • Security issues with functions accessible through WordPress’ REST API (those have started to be a source of disclosed vulnerabilities)
  • Persistent cross-site scripting (XSS) vulnerabilities in the frontend portions of the plugin and in the admin portions accessible to users with the Author role or below
  • Cross-site request forgery (CSRF) vulnerabilities in the admin portion of the plugin
  • SQL injection vulnerabilities (the code that handles requests to the database)
  • Reflected cross-site scripting (XSS) vulnerabilities
  • Security issues with functions accessible through any of the plugin’s shortcodes
  • Security issues with functions accessible through any of the plugin’s blocks
  • Security issues with functions accessible through the admin_action action
  • Security issues with functions accessible through the admin_init action
  • Security issues with functions accessible through the admin_post action
  • Security issues with import/export functionality
  • Security issues with usage of the is_admin() function
  • Security issues with usage of the add_option(), delete_option(), and update_option() functions
  • Security issues with usage of the update_user_meta() and wp_update_user() functions
  • Security with usage of determine_current_user filter
  • Security issues with usage of the wp_set_current_user(), wp_set_auth_cookie() and wc_set_customer_auth_cookie() functions
  • Security issues with usage of the reset_password() and wp_set_password() functions
  • Security issues with usage of the extract() function
  • Lack of IP address validation
  • Proper usage of sanitize_callback when using register_setting() to register settings
  • Existence of register_uninstall_hook or uninstall.php file that removes any WordPress options and database tables added by the plugin
  • CSV injection
  • Host header injection vulnerabilities
  • Lack of protection against unintended direct access of PHP files
  • Insecure and unwarranted requests to third-party websites
  • Any additional possible issues identified by our Plugin Security Checker

Completed Reviews of Plugins Selected by Our Customers

(Ordered from most recent to the oldest)