Welcome to the official blog for the Plugins Team.
The team acts as gate-keepers and fresh eyes on newly submitted plugins, as well as reviewing any reported security or guideline violations.
Quick Links
The team acts as gate-keepers and fresh eyes on newly submitted plugins, as well as reviewing any reported security or guideline violations.
Quick Links
Around 17:30 UTC on March 23, 2022, I was notified of a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. in the WordPress ecosystem that contributors flagged as potentially violating the plugin directory guidelines. The initial conversation can be found in Slack. Following my review as the Executive Director, the plugin was removed from the directory about an hour later. This post is to provide information about what happened and anticipated next steps.
tl;dr: The Zamir plugin used a loophole in the plugin guidelines created to protect members of the WordPress community. There are no present guidelines that bar the โsupportโ of political leaning or cause, which is what this pluginโs description claimed it was doing. Since Z is emerging as a new symbol of hate and violence, it was considered a grey area in initial checks and on further review was removed.
Does this plugin violate WordPress guidelines?
Yes! Many community members shared how the Z symbol has come to stand as a symbol in support of Russiaโs ongoing war in Ukraine. As a reminder, WordPress guidelines call upon all community membersโincluding extenders like plugin authorsโ to โbe kind, helpful, and respectful.โ A symbol that is connected to an ongoing war and humanitarian crisis is none of those things.ย ย
What actions were taken?
With the help of WordPress contributors and community members, the plugin has since been removed from the plugin directory. While decisions to remove plugins are normally adjudicated in a slower, more collaborative investigation processโquick and decisive action was appropriate to prevent further harm to the community.
Thank you to @santanainniss for pulling together the timeline of the morning and to @ipstenu for working to resolve the issue. Additional thanks to @cbringmann @helen @angelasjin and @eidolonnight for their review. And thank you to our community of contributors for voicing their concerns.
tl;dr: Never test vulnerabilities on someone elseโs live site without their permission.
By now, a lot of you have read the post about the so-called โWordPress Plugin Confusionโ whereby a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. hosted on WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ can โoverrideโ a plugin not hosted here, by using the same name/permalink. Someone even made a CVE for it.
Please stop โtestingโ this vulnerability with us.
This is not a new issue by any means. Heck, this has been something people report on now and then for years. In the past, the plugin team coordinated a release of a plugin to intentionally do that and protect users from a significantly dangerous plugin. Weโve locked out permalinks to prevent abuse and so on.
Sadly, the post conflated a couple of issues, which have to do with social engineering and a misunderstanding of why we have those permalink-checks for trademarks. Also itโs entirely incorrect with this one claim:
and the whole approval process is automated
This could not be further from the truth. All new plugins submitted go through human review. When you submit a plugin, somebody reads your plugin code, your submitted slug and name, checks on the history of the plugin, checks that the developer isnโt a returned banned user, etc. The process is by no means โautomatedโ and while it has some automated pre-flight checks, theyโre really there to weed out things that would end with a pended review, to make the process faster for everyone. While we have some tools we run, they donโt actually approve or reject anything, theyโre just fancy code-sniffers, customized to look for specific patterns or known bad behavior, outside of the overall quality like PHPCSPHP Code Sniffer PHP Code Sniffer, a popular tool for analyzing code quality. The WordPress Coding Standards rely on PHPCS. (you are using that, right?). Submitting things to test out what you think is an โautomatedโ system is wasting the time of our volunteers and reviewers.
See, that trademark โblockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.โ isnโt actually there to protect trademarks for the owners. We have them to make our life easier and to protect you, the developers, from making some pretty common mistakes. Just for an example, we block โakismetโ not because we were asked to by Automattic, but because over 50 people a year tried to submit a copy of Akismet instead of uploading it to their own site.
As the post (properly) notes, you canโt submit a plugin with a permalink thatโs already in use, be it on WordPress.org or if it has a notable user-base outside of WordPress.org. Even if a name gets by those checks, the review team can see if the permalink is being used and by (roughly) how many people. Thatโs a large part of why we have humans checking these things. A human can look at an email and a plugin and check for proper ownership.
By the way, as a number of people have complained about, this is why we require official plugins to be owned by demonstrably official accounts (like with an email address that uses the right domain, and so on). Itโs not just to prevent trademark abuse, itโs to ensure that kind of thing is less likely to happen.
Now. Do you need to test this? No. All youโre doing is making things more stressful and more likely to be missed, which doesnโt solve a problem. Do you need to add your trademark to the blocked list? Again, no. Unless itโs being actively abused, or thereโs a high-risk situation that it might be, itโs just adding more work for a low (to negligible) risk in the first place.
How DO you protect your own, non-org hosted plugins, from this?
Use the UPDATE URI flag.
We check for it on .org, and wonโt allow you in with it (sinceโฆ why?) but for plugins we donโt host, well thatโs literally why it exists ๐ Use it. Love it. But please, remember the first step in ethical hacking is never trying out a vulnerability on someone elseโs site without their permission.
Hi Devs!
Weโre getting nearer to WordPress 5.9, and that means the email will be headed out soon.
This is the perfect time to double check the email on your accounts, especially if itโs a group email/mailing list. Make sure external emails (like โฆ us) can contact you without bounces or autoreplies.
You also should check everyone who has commit access to your pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.! Did someone leave? Itโs okay to remove their access, and in fact is great to do so for security ๐
And as a regular reminder: Never share accounts! Every individual human should have their own individual account. That lets you (and us) keep tabs on who did what.
tl;dr Starting in October, you will have THREE (3) months to complete your review before we reject it.
This will not affect most of you who actively read this site.
For a very long time, weโve allowed plugins 6 months to finish a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. review. Thatโs more than enough time for any reasonably attentive developer to make changes (especially considering the majority are โplease sanitize/escapeโ).
In January 2021, we had 596 โpendingโ reviews, which meant there just under 600 plugins that had been reviewed and we were waiting on a reply/completion. Weโre seeing over 800 in September.
That rise is out of step with the number of plugin submissions. In fact, if you look at our posts to Make/Updates, you can see weโre pretty stable around 140 plugins submitted a week, but the โpending; replied toโ value is inching up.
Since the majority of those plugins that donโt reply or finish in 3 months arenโt going to any time soon, weโre changing our policy to try and be more sustainable and less work. From now on, you have THREE months to finish a review before we reject it.
Thereโs no change to existing submissions. Which means the โReject all reviews pending completionโ logic works like this:
Yes, itโs a little messier for us, but itโs the most fair we can be to existing reviewers. It would not be kind to pull the rug out from under them.
Just keep replying to the review! Weโll work through it with you and tell you to resubmit when the review is good. That also lets us fast track you since youโve worked so hard!
You could, but weโd pend your review and ask you why you never finished the previous one, which means your whole review will take longer, and weโll make a note on your account about not following directions.
We get it. Mistakes happen. Weโve all deleted the important email! Email us at plugins@wordpress.org from the account/address that submitted the plugin and we will re-send it for you.
There are two cases where this could happen:
In both cases, reply to the rejection email and ask.
Not yet, no, but Iโd like it to be eventually.
UYes, this means every month end, someone goes through and selects all submissions from a time period and changes the status en bulk.
Human error. Or internet greebles. Probably the first. We do our best, but sometimes a mouse didnโt click when we thought it did, or a human got distracted, and mistakes happen. Those are generally our mistakes, and we are sorry when that happens.
Please email us back and tell us. Weโll get you fast tracked and sorted.
Have a shout in the comments.
#reviews, #timelineX-comment from +make.wordpress.org/docs: Comment on [Announcement] New workflow for reporting documentation issues
It gives me no joy whatsoever to have to post this.
A little over 100 plugins recently were impacted by a stats gathering change. This means those plugins had their active install stats seemingly adjusted downward.
We understand this was painful for a number of developers and we held off on announcing this as we were still doing a bit of triage and making sure it was blocked. We are sorry about that confusion.
Recently, it was pointed out that the active install counts of several plugins appeared to be inflated artificially. When we looked at the raw data, we found that this was correct for roughly 100+ plugins;ย fake update data was being sent to us.
This is not unusual, itโs happened before, although people are usually much more blatant about it, which is why it took a long time to notice it. In any case, we adjusted our stats mechanisms to ignore these, and so those 100+ plugins will have seen a drop of around ~8000 installs.
As the data was being faked before, this new count is more accurate. But it doesnโt change the old counts, and we canโt redo those counts as we donโt store that raw data for more than 2 days.ย
@Otto42
Probably. This specific attack wonโt, as the folks with server power on WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ are outstanding. However about once every other year someone tries to do stuff like this. We usually catch on to them a little faster and blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. them. Now that we know about this one, weโll add it to the list of things to monitor and block. But yes, people love munging with stats, theyโll certainly try it again.
We were asked not to while people were still working on stopping it, and then we didnโt want to while we were investigating the root cause. Basically we didnโt want to announce it until we had all the facts.
No, we cannot. Weโve learned that telling people exactly how we caught what they did, or even just what they did in details, leads to them doing it again in a slightly more clever way. Right now, they have no idea how we solved it, and thatโs just fine.
The Active Install count for affected plugins would be decreased by somewhere between 1 and 8 thousand. Depends on the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.. And yes, we know thatโs a galling number.
We can give you 100% assurance that no, they were not. The counts were inflated, so the number it shows now is much closer to the true active install count.
No. If you were the culprit, your plugin would be already closed, your account banned, and you got a stern email from us about why you were banned for doing that, and youโre not welcome here anymore. If all of those arenโt true, we know you didnโt do it, and you have not a single thing to worry about.
Not really, no. Please keep an eye on the big picture for a moment:
In the long run, this will even out and no one will notice. If youโre worried about your popularity, make sure you have a good readme that explains why someone wants the plugin and how to use it. That will help you much more than numbers or charts.
You mean from last month? Yes. Sadly. Itโs been going on a while, like for most of the year. We donโt keep old stats like that in a manner that allows us to clean this up, so thatโs why it looks like you had a big drop. At best we could force edit everyone impacted and drop them by X amount going back to when we think this started, but that doesnโt really change much, it just moves the weird needle back so it looks like a month or whatever ago, you had a massive drop.
Thereโs also the fact that the climb was a slow creep. We know the end volume of fake usage only because we saw the drop like you did. We could guess at how much it grew a month that was fake, but you run a higher risk of looking worse, like you were loosing 100s of users a month for a year.
Finally โฆ asking us to manually edit your stats is a pretty terrible precedent. We donโt do that. We should never do that.
Two reasons: Privacy and size. We delete tracking data for your privacy, but also because with millions of sites out there, itโs heckinโ huge! Like โWhat comes after Petabytes?โ huge. (Answer: exabyte, now you know.)
According to what Iโve been told, no. By blocking the fake data source, the stats automatically adjusted. The only way anyone would possibly be able to revert it would be to restore the fake data. We feel that is a terrible suggestion, as that would be intentionally lying to your users.
We are not about to disclose that. Itโs being handled, and we are not in the business of dog-shaming people, nor encouraging mob-mentality to attack them.
Youโre not. Your plugin stats changed when we blocked the cause for the inaccurate counts. No one on WordPress.org has manually adjusted numbers. Basically we said โdata like this is invalidโ and when the counter recounted, which happens every day, those plugins were impacted.
Itโs equitable. Everyone who had their stats incorrectly inflated were corrected when we removed the data source.
I am so glad you asked! The best way is to join us to be part of the ongoing solutions! And the easiest way to do that would be to come on over to help the META team. See, plugin reviews is just plugin reviews. But MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.? They do the heavy lifting of making the WordPress.org experience better for everyone. And, perhaps not shockingly at all, itโs mostly PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php and JS. Yes, thatโs right, WordPress.org runs on WordPress!
Meta has a meeting every other week in #meta on Slack. You can keep tabs on all meetings via https://make.wordpress.org/meetings/
Also if you have a fully formed idea, that you think is a good proposal, head over to https://meta.trac.wordpress.org/ and make a ticket. If you have detailed screenshots and example code, all the better.
X-comment from +make.wordpress.org/core: Comment on Gallery Block Refactor Dev Note
X-comment from +make.wordpress.org/updates: Comment on Experiment: A Public Channel for All Team Reps