[wp-meta] [Making WordPress.org] #6939: Reporting Security vulnerabilities in plugins
Making WordPress.org
noreply at wordpress.org
Fri Jun 16 06:24:16 UTC 2023
#6939: Reporting Security vulnerabilities in plugins
------------------------------+---------------------
Reporter: dd32 | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone:
Component: Plugin Directory | Resolution:
Keywords: 2nd-opinion |
------------------------------+---------------------
Comment (by JavierCasares):
For me, there are two parts to talking about plugin/theme security (this
should apply to both). One is the disclosure of a vulnerability and the
other is the use of that information.
**What happens when a vulnerability is found?**
There are many possibilities and branches when it comes to
vulnerabilities. The simplest one is the vulnerability in the WordPress
core, which is directly managed by the Community through the Core-Security
team.
However, it's not as straightforward when it comes to plugins and themes,
as the Community provides review and management tools, such as the ability
to disable a plugin or theme from the directory, but it doesn't have the
tools or resources for full management. It shouldn't be something that the
Community should handle on its own, although it is partially responsible
for it.
When a vulnerability appears in a plugin, the Community and Teams initiate
a process to try to notify the developer for them to review and fix it,
with or unsuccessfully, but the responsibility lies with the developer.
Another approach is through standard systems like the National
Vulnerability Database (NVD), which provides commonly known identifiers
known as CVEs.
In these cases, a series of organizations are responsible for providing
information to this database and maintaining it.
In the case of WordPress, there are three well-known organizations
(Jetpack Protect, Patchastack, and Wordfence) that have this capability,
although they are not the only ones. When a notification reaches any of
them, they may try to contact the developer directly or do it through the
Community teams. If, after a certain period of time, the vulnerability is
not fixed, or even if it is, the information is published publicly and
made available to everyone, either in real-time or with a certain delay.
**Shared responsibility**
While it is true that the primary responsibility of the Community is to
keep WordPress secure, it is also true that many elements at various
levels (such as the use of PHP or performance analysis) are not solely
focused on the WordPress core and default themes, but also consider the
extensibility of the platform.
Often, when you hear “WordPress is not secure”, it is not referring
specifically to WordPress itself but rather to its extensibility, meaning
plugins and themes.
In the past, attempts have been made to create some kind of platform for
the Community to take full responsibility, but it was not feasible
because, until recently, there were no relatively stable systems or
companies maintaining that information. Additionally, other databases
attempt to aggregate that data to provide a minimal service to all
WordPress users.
**Security-Vulnerability Team**
As part of the Hosting Team, I received some feedback and engage with
Patchstack, plugins, and security companies (such as WPSec, WPGuardian, or
Really Simple SSL at WordCamp Europe 2023). Considering the increasing
amount of information related to plugins and themes, and within the Five
for the Future project, an opportunity has arisen to open a debate and
conversation so that the Community can have a minimum level of security
information that can be maintained by multiple sources.
Based on this entire situation, the option arises for these companies to
participate through the Five for the Future project by donating and
maintaining certain public information that can be utilized internally by
both the WordPress.org/Meta website and the WordPress Core. Additionally,
basic security information would be made public.
Furthermore, this system would allow these companies to continue their
business while improving the entire ecosystem, enhancing security not only
for WordPress itself but also for plugin and theme updates.
The team would be composed of two groups. These groups can consist of
different individuals from existing teams or form an entirely new team.
The differentiation between the two groups is temporary, with the
disclosure of a vulnerability serving as a turning point.
**Plugins Security Working Group**
The security group is the preliminary stage before the disclosure of a
vulnerability. Currently, there are already some issues with those who
discover a potential vulnerability and need to communicate it to the
developers.
Although it is possible to automate the process without revealing data
from either party, it is a delicate matter that requires some minimal
supervision, either directly from a group of knowledgeable individuals,
potentially creating the Plugin Security Team and the Theme Security Team,
or by utilizing the same resources as the existing Review Teams, relieving
Meta from this responsibility that they currently handle.
Security has its own global cycles in the industry, so efforts should be
made to understand and adapt to them, something that is currently not
being done.
This would help enhance the perception of security, making WordPress a
more secure tool overall.
Receiving the information with a form, may be a suitable option, but also
some plugins have their own platform to receive that, so (as plugins have
their Commercial / Community link) we should provide that as a first
option, and then, if not, and by default, an internal form.
**Plugin Vulnerability Working Group**
This working group would be responsible for maintaining the vulnerability
database. These vulnerabilities would exclusively include those that have
been previously published in some way and are specific to themes and
plugins.
This database would operate based on the combination of the following
elements:
{{{
slug + operator + version + fix
}}}
An example could be:
{{{
plugin-name <= 1.0.0 nofix
}}}
In addition to this basic information, it is necessary to use and unify
information from different sources, using unique identifiers and creating
unique identifiers specific to the Community.
From a technical standpoint, this system could be a Custom Post Type with
multiple Custom Fields, and it could also utilize users as sources of
information, as well as the API system.
The maintenance of this database could be done through a closed REST API,
accessible only to verified sources approved by the Vulnerability Group.
This way, providers like Jetpack Protect, Patchstack, Wordfence, or others
could update the data for the vulnerabilities they are responsible for,
with the plugin and theme teams serving as other sources. Additionally,
other potential participants with the knowledge to contribute could also
be involved.
Although this project can be carried out in various phases, it would
initially allow the Community to have its database for the use of the
Teams, then for Meta, followed by WordPress, and finally open it to the
Community for public access (not necessarily in that order).
Internal use by the teams can serve to temporarily block a plugin or theme
from the directory if a vulnerability is deemed serious, or simply as a
precautionary measure.
The use by Meta could enable displaying historical information about a
plugin or theme's vulnerabilities on its listing page, or indicate if
there is an active vulnerability at the moment. Additionally, if a plugin
or theme is closed for security reasons, direct links to the information
sources explaining the details can be provided.
For WordPress itself, through the existing API, it would allow for
expanding information on whether a plugin may have any active
vulnerabilities directly from the Site Health or the listings of plugins
and themes.
Opening the information to the Community would allow anyone to use the
open data, enabling the creation of plugins or tools that leverage this
information to enhance the security of installations.
**Documentation**
Furthermore, these groups could take charge of centralizing the security
documentation that currently falls under the responsibility of the
Hosting, Core, Plugins, and Themes teams, primarily, and is spread across
almost all projects within the Community, as well as the documentation for
end users.
This is partially a summary from [https://docs.google.com/document/d
/1od6gM_cA27QQ1PDL-Orfq7KTCsfAWlZcSL2QBsPJ26k/ Internal Proposal: Make
Security / Vulnerability Team].
Props @crixu, @davidperez, @desrosj, @frantorres, @mrfoxtalbot,
@oliversild, @pharar.
--
Ticket URL: <https://meta.trac.wordpress.org/ticket/6939#comment:16>
Making WordPress.org <https://meta.trac.wordpress.org/>
Making WordPress.org
More information about the wp-meta
mailing list