Skip to content

WordPress Plugins

WordPress Plugins and Themes

Add-ons from the WordPress.org directory and vendors, with full control of the site.

  • Registries

About

Plugins and themes add features to a WordPress site, from contact forms to whole shops. Most come from the WordPress.org directory, others straight from vendors' own sites. Each one runs as part of WordPress, with full access to the site and its database.

An active plugin runs on every page load, with full access to the site, its files and its database. Updates can install themselves automatically.

If It Is Malicious

If a WordPress plugin is malicious, it runs inside WordPress with full control of the site and its database, on every site that installs or auto-updates it.

Its code runs inside these technologies.

See It in the Stack

Examples

These are well-known names from WordPress Plugins, written as you would meet them in an inventory, an alert or a lockfile, the file that records every version a build installed.

woocommerce
Turns a WordPress site into an online shop.
wordpress-seo
Yoast SEO, for search engine settings.
contact-form-7
One of the oldest and most installed form plugins.
elementor
A visual page builder.
akismet
Spam filtering, bundled with WordPress.

How Bad Code Gets In

These are the ways bad code can reach your systems through WordPress Plugins. None of them needs a flaw in your own code, so outside code needs checking as much as your own.

  • A plugin developer's account is taken over and a bad update is pushed to every site.
  • A plugin is sold to a new owner who adds spam or a backdoor.
  • A vendor's own download site is hacked, so its files carry a backdoor.
  • A flaw in a popular plugin can be exploited on every site that has not updated.

How to Check

These checks show what came from WordPress Plugins, whether a known bad version is in use, and how to keep one out next time.

  • Keep a list of installed plugins and versions, and remove the ones you do not use.
  • Check them against the Wordfence Intelligence or WPScan vulnerability databases.
  • Install only from the WordPress.org directory or the vendor you pay, never from copies elsewhere.
  • Turn on automatic updates for security fixes, and look for new admin accounts after an update.

Well-Known Incidents

Each incident below is a real case, told at the level of its public advisory. The tag says how the bad code got in, and the link opens the primary source.

  • Compromised Build or ReleaseCVE-2021-248672022

    AccessPress Backdoor

    Attackers broke into a theme vendor's website and added a backdoor to the themes and plugins it offered for download there.

    Reach Sites that installed or updated those products from the vendor's own site gave the attacker full control of the site.

    Source: jetpack.com (opens in a new tab)
  • Hijacked Account2024

    WordPress.org Plugin Takeovers

    Attackers got into five plugin developers' WordPress.org accounts, likely with passwords leaked elsewhere, and pushed updates that tried to create a new administrator account on each site.

    Reach The code sent the new account's details to the attacker, so any site that took the updates had to be treated as compromised.

    Affectedsocial-warfareblaze-widgetwrapper-link-elementorcontact-form-7-multi-step-addonsimply-show-hooks

    Source: wordfence.com (opens in a new tab)

In Common Stacks

These common stacks take code from WordPress Plugins. Open one to see where that code sits among its layers and who runs each one.

Sources

Product names and logos are trademarks of their owners, shown only to name each product, with no endorsement implied. npm is a registered trademark of npm, Inc.

Apache, Apache HTTP Server, Tomcat and Log4j are trademarks of the Apache Software Foundation. Node.js® is a registered trademark of the OpenJS Foundation, and Kubernetes® of LF Projects, LLC.

Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries. Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.

MongoDB® is a registered trademark of MongoDB, Inc. Redis® is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd.

PHP logo by Colin Viebrock, CC BY-SA 4.0 (opens in a new tab). Ruby logo © 2006 Yukihiro Matsumoto, CC BY-SA 2.5 (opens in a new tab). Tux by Larry Ewing, with Garrett LeSage and IFo Hancroft.

Puma logo © Evan Phoenix and contributors, CC BY-ND 3.0 (opens in a new tab). NuGet logo from NuGet's Media repository, CC BY 2.0 (opens in a new tab).

Gunicorn logo © Benoît Chesneau and Paul J. Davis, MIT licence for the Gunicorn logo (opens in a new tab). Packagist logo © 2011 Jordi Boggiano and Nils Adermann, MIT licence for the Packagist logo (opens in a new tab).

MIT Licence Notices for the Gunicorn and Packagist Logos

Gunicorn logo

2009-2024 (c) Benoît Chesneau <benoitc@gunicorn.org> 2009-2015 (c) Paul J. Davis <paul.joseph.davis@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Packagist logo

Copyright (c) 2011 Jordi Boggiano, Nils Adermann

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.