Watching the WordPress plugin supply chain.

WP Beacon tracks every plugin on wordpress.org — its authors, committers, and releases — to flag ownership transfers, dormant-then-activated takeovers, and release patterns that match known attacks.

112,500+ plugins watched 66,000+ authors profiled 3 confirmed campaigns
The problem

Plugins get bought. Then they get weaponized.

A WordPress plugin can sit dormant on wp.org for years with a small but loyal install base. When the original author moves on, the slug is for sale on Flippa, Codecanyon, or a quiet email. Whoever buys it inherits the auto-update channel into thousands of live sites — and most attacks don’t show up in scanners that look for vulnerable code, because the takeover itself is the vulnerability.

Patchstack and Wordfence catch CVEs in code. WP Beacon catches the shape of an attack: who owns the slug, when their account was created, when their domain was registered, when a quiet plugin suddenly cuts a release after years of silence.

Real campaigns

Three attacks WP Beacon has caught.

Detection signals

What WP Beacon looks for.

Every signal below traces to a documented attack — nothing speculative. Each rule fires an event that can be triaged, audited, and (if confirmed) added to the public IOC catalog so the next scan catches the same shape across the rest of the corpus.

New committer, young account new_committer_young_account

An established plugin gets a new SVN committer whose wp.org account was created <12 months before their first commit, with no post-handoff activity from the prior maintainer.

Bulk committer takeover bulk_committer_takeover

One committer joining many established plugins inside a short window — the portfolio-purchase signature behind the EssentialPlugin attack.

Author younger than plugin author_younger_than_plugin

The plugin’s current wp.org author belongs to an account registered >180 days after the plugin’s earliest SVN commit. Catches ownership transfers from a single snapshot.

Domain younger than plugin domain_younger_than_plugin

Plugin’s author URI or code-level callback points to a domain registered long after the plugin itself — the widgetlogic.org signature. RDAP-resolved.

Release after dormancy release_after_dormancy

A release after a long quiet period — dormancy then weaponization, the classic late-stage compromise pattern.

Version-compare trap version_compare_trap

A plugin releases X.0N (two-segment) that PHP parses as higher than subsequent canonical X.0.N releases — defeating auto-update.

Code-pattern match code_scan_match / code_scan_delta

Trunk grep against the IOC catalog (domains, function names, callback URLs from prior audits). New high-signal patterns in a release fire as a delta.

Bulk changelog reuse bulk_changelog_reuse

One committer pushes the same changelog string across multiple plugins in a 14-day window — the decoy-commit pattern that disguised the EP rollout.

Closed-plugin resurrection closed_plugin_resurrection

A plugin previously closed for security issues reopens — by acquisition, ownership transfer, or wp.org reactivation. The 6,000+ already-flagged plugins are the target pool.

How it works

Public data, reconstructed.

Every read is from a public source: the wordpress.org plugin API, plugins.svn.wordpress.org, profiles.wordpress.org, and RDAP. No login, no scraping behind auth, no hidden inputs. The detector runs as a WordPress plugin against its own database, scheduled hourly via WP-Cron.

01 · METADATA
Crawl

wp.org API + closed-plugin discovery + author profiles + author-URI domain extraction.

02 · COMMITS
SVN watch

Per-plugin svn log, committer attribution, code-pattern fingerprinting, callback-domain harvesting.

03 · DOMAINS
RDAP backfill

Resolve registration dates for author URIs and code-level callback hosts. Feeds the domain-age rules.

04 · DETECT
Rule pass

Every detection rule against the latest snapshot. Dedup’d; already-audited events don’t re-fire.

05 · AUDIT
Triage loop

Confirmed events become audits. Audits extract IOCs. IOCs feed back into the next scan.

What’s next

The public dashboard is being built in the open.

The detector is running in production. The audit catalog has confirmed campaigns. The acquirers surface lists every legitimate plugin acquisition on wordpress.org — and now flags the malicious ones too. The full public explorer comes online when the data is solid enough to publish without footnotes.

Want to be notified when WP Beacon goes live?

Follow anchor.host for the launch announcement and a write-up of every confirmed campaign as the audits land.

wpbeacon.io · launching soon