Skip to main content
Security alertPHP2Shell: critical PHP flaw — WordPress updates can't fix itCheck your PHP version
WP HealthKit

WordPress Plugin Security Scoring Explained (2026)

October 25, 202616 min readSecurityBy Jamie

Table of Contents


Why Plugin Security Needs a Score

WordPress plugins are the lifeblood of site customization, but they're also the most common attack vector in the WordPress ecosystem. When you install a plugin, you're trusting someone else's code to run on your server — code that often has database access, user data visibility, and permission to modify core functionality.

For years, the question "Is this plugin secure?" had a frustratingly binary answer: maybe. WordPress.org's plugin directory enforces basic standards, but a plugin can pass those checks and still harbor subtle vulnerabilities, outdated libraries, or dangerous coding patterns that create risk down the line. Your hosting provider might scan for known malware. Your security plugin might flag obvious issues. But none of that tells you the actual security posture of the code you're about to deploy.

That's where systematic security scoring comes in. Rather than asking "Is this safe?", you ask "How safe is it, really?" — and get a quantified answer backed by verifiable methodology.

WP HealthKit didn't invent plugin security scoring because it was trendy. We built it because the industry was missing a critical signal. When you're evaluating a plugin for a mission-critical site, you need more than a gut check. You need data, methodology, and transparency.

The Problem with Binary Assessments

Security has always been a binary game in popular thinking: secure or insecure. But in reality, security exists on a spectrum.

Consider two plugins: Plugin A passed the WordPress.org plugin directory review last year and hasn't been updated since. It has no known vulnerabilities, but it's using library versions from 2023, and WordPress itself has evolved. Plugin B was updated last week, but the developer chose to suppress a type-checking warning that could hide a real bug. Both might appear "okay" to automated scanners, but their security profiles are fundamentally different.

Binary assessments also fail to communicate priority. If a plugin has one critical vulnerability and another has fifteen low-severity code quality issues, both fail the same pass/fail test — even though the latter might actually be deployable with proper mitigation, while the former requires immediate action.

Real security teams understand gradation. A security score gives you:

  • Granular visibility into which categories of risk matter most
  • Comparative context when choosing between plugins that solve the same problem
  • Priority signals for remediation — fix the critical items first
  • Accountability because the methodology is transparent and repeatable

How WP HealthKit Calculates Security Scores

WP HealthKit's security score runs each plugin through ten independent verification layers, each weighted by risk severity. The final score isn't a vote or a percentage of checks passed — it's a calculated assessment of the plugin's actual security surface.

The 10 Verification Layers

The ten layers are:

  1. Wordfence CVE Database — Public vulnerability database matching
  2. PHPCS Coding Standards — WordPress Coding Standards compliance
  3. PHPStan Type Safety — Static type analysis and null-pointer detection
  4. Secret Detection — Exposed API keys, hardcoded credentials
  5. PHP Compatibility — Version compatibility and deprecated function use
  6. AI Engine 1 — Pattern-based vulnerability detection
  7. AI Engine 2 — Logic flow analysis
  8. AI Engine 3 — Cryptography and authentication patterns
  9. AI Engine 4 — Data handling and injection risk assessment
  10. File Signature & Metadata — Integrity and provenance checks

Each layer operates independently and flags issues as Critical, High, Medium, or Low severity.

How Risk Categories Map to Score Impact

The layers aren't weighted equally. A single Critical finding (like a hardcoded database password or a known CVE match) can tank your score below 50. High findings reduce the score proportionally. Medium and Low findings have minimal impact on the final score but still appear in the audit report.

The scoring formula is designed to reflect real-world security practice: one critical hole is worse than a hundred minor code quality issues.

Here's how it works:

  • Critical findings reduce the score by 40-50 points each
  • High findings reduce the score by 15-25 points each
  • Medium findings reduce the score by 5-10 points each
  • Low findings reduce the score by 1-2 points each

A clean plugin (zero findings across all layers) scores 100. Real-world plugins rarely hit that ceiling, but anything above 80 indicates solid security practices.


Understanding Your Security Score

Your WP HealthKit security score is a number from 0 to 100. Here's what each range means in practice:

0-40: Critical Risk

This score indicates the plugin should not be deployed in production without immediate remediation. Critical findings are present — likely known vulnerabilities, hardcoded credentials, or dangerous code patterns. If you see a score in this range, investigate the specific findings before proceeding.

40-60: Poor Security

The plugin has security concerns that should be resolved before deployment. This range typically indicates multiple High findings or unpatched known issues. This is the "needs attention" threshold.

60-80: Moderate Security

The plugin is deployable but has room for improvement. Most real-world plugins land here — a few Medium findings, some coding standard violations, or minor compatibility warnings. If you're deploying a 60-80 plugin, understand what those findings are and implement compensating controls (like Web Application Firewall rules or plugin hardening).

80-90: Good Security

The plugin follows security best practices. Few or no findings, clean code structure, and thoughtful design. This is the "production-ready" standard for most use cases.

90-100: Excellent Security

The plugin exceeds baseline security requirements. Rare in the wild, but worth recognizing when you find it. These plugins typically represent professional development practices and active maintenance.


The 10 Verification Layers

Let's zoom in on what each layer actually checks.

Layer 1: Wordfence CVE Database

The Wordfence CVE database is a curated list of publicly disclosed vulnerabilities affecting WordPress plugins. This layer performs exact-match lookups for the plugin name and version against known CVE identifiers.

If a vulnerability is found, the score impact is immediate and severe. This is the highest-confidence signal: it's not a suspicion, it's a documented, exploitable flaw. The layer also tracks if the plugin has a patched version available.

Layer 2: PHPCS Coding Standards

WordPress Coding Standards (enforceable through PHPCS) define baseline code quality expectations: proper escaping, sanitization, nonce verification, and structural conventions. This layer runs the full WordPress Coding Standards ruleset against your plugin code.

A plugin that consistently violates these standards isn't necessarily vulnerable, but it exhibits risky patterns. Missed escaping in one place? Maybe harmless. Missed escaping everywhere? That's a red flag for XSS risk.

Layer 3: PHPStan Type Safety

PHPStan performs static type analysis, catching null-pointer dereferences, undefined array keys, and type mismatches before they crash production. Many WordPress developers don't use strict type checking, which means entire classes of bugs go undetected.

This layer runs PHPStan at level 7 (strict) and flags issues that could cause runtime errors or unexpected behavior under certain conditions.

Layer 4: Secret Detection

Hardcoded API keys, database passwords, OAuth tokens, or other secrets in your plugin code are security gold for attackers. This layer uses pattern matching and entropy detection to find exposed secrets.

If secrets are found, the score takes a catastrophic hit — this is a Critical finding every time.

Layer 5: PHP Compatibility

This layer checks for deprecated functions, version-specific incompatibilities, and unsupported PHP features. It analyzes what minimum PHP version your plugin requires based on its code, then checks if that version is reasonable for modern WordPress sites.

A plugin requiring PHP 5.6 in 2026 is a risk signal (support for that version has long ended), and a plugin using PHP 8.2 features without declaring it will fail on older hosts.

Layers 6-9: The Four AI Engines

The four AI engines use trained models to detect vulnerability patterns that don't require exact signatures. Each engine focuses on a different threat category:

Engine 1 looks for general vulnerability patterns — insecure randomness, dangerous function usage, SQL injection templates.

Engine 2 analyzes control flow and logic — unreachable code, contradictory conditions, unsafe loops.

Engine 3 specializes in cryptography and authentication — weak hashing, insufficient randomness, improper key derivation.

Engine 4 focuses on data handling — improper validation, injection surfaces, insecure file operations.

The engines run independently and flag findings individually. All four must clear for that aspect of security to score well.

Layer 10: File Signature & Metadata

This layer verifies file integrity and provenance. It checks for:

  • Modified files in reputable plugins (suggests tampering)
  • Mismatched repository checksums
  • Suspicious file ownership or permissions
  • Metadata inconsistencies (declared version vs. actual code)

This layer is less about vulnerabilities and more about trustworthiness — has this plugin been corrupted, repackaged, or otherwise compromised?


How to Improve Your Security Score

If your plugin's security score is lower than you'd like, here's how to systematically improve it.

Step 1: Identify the Specific Findings

Your WP HealthKit audit report lists every single finding, organized by layer and severity. Start there. Don't try to guess — you have concrete data about what needs fixing.

Export your audit report and group findings by severity. Critical and High findings first, always.

Step 2: Address Critical Findings

Critical findings must be resolved before any other work. These are:

  • Known CVEs with a published exploit
  • Hardcoded credentials or secrets
  • Dangerous function patterns that create immediate risk

If a finding is a known CVE, check if a patch exists. If it does, update the plugin. If it doesn't, fork the plugin or switch alternatives.

If the finding is a secret, rotate those credentials immediately — they've likely been logged by WP HealthKit's analysis, and if your plugin is publicly hosted, anyone can find them.

Step 3: Fix High Findings

High findings are often code quality issues that enable vulnerabilities:

  • Missing escaping or sanitization
  • SQL queries without prepared statements
  • Missing nonce verification on forms

These are usually straightforward to fix. WordPress has solid documentation on each of these patterns, and PHPCS can often auto-fix them.

Step 4: Address Medium and Low Findings

Medium findings might be edge cases or non-compliance with optional standards. Low findings are typically code quality improvements rather than security issues.

These are lower priority, but fixing them demonstrates ongoing commitment to security and pushes your score into the 80+ range.

Step 5: Implement Compensating Controls

If you can't immediately fix every finding, implement compensating controls. For example:

  • If your plugin is vulnerable to a specific XSS pattern, use a WAF rule to block that pattern
  • If your plugin doesn't validate file uploads strictly, deploy a file integrity monitor
  • If your plugin lacks authorization checks, implement role-based access controls at the WordPress level

Document these controls in your audit records. They won't improve your score, but they reduce actual risk.

Step 6: Re-Audit and Track Progress

Re-run your WP HealthKit audit after fixes. Your score should improve. Track the improvement over time — this gives you accountability and shows users that you take security seriously.


Security Scores in Ecosystem Context

A score of 75 is good, but good relative to what? WP HealthKit provides ecosystem context: how does your plugin compare to others in the same category?

When you view the WP HealthKit directory, each plugin displays not just its score, but also:

  • The median score for plugins in its category (e.g., "caching")
  • The percentile rank (e.g., "top 15% of security plugins")
  • Trend over time (score improving or declining?)

This context is critical. A security plugin with a 75 score might be above the category median. A caching plugin with the same score might be below it. Context matters.


Leaderboards and Directory Ranking

WP HealthKit maintains several leaderboards and rankings.

The category leaderboards rank plugins by security score within their category. Plugins with excellent scores get visibility — they appear higher in the directory, get featured in security reports, and attract users who care about this signal.

The directory ranking algorithm incorporates security score alongside other signals: update frequency, support responsiveness, user ratings, and download trends. A plugin can't have a good directory rank with a poor security score, but a great security score alone won't boost you to the top if you're not actively maintained.

The ecosystem reports aggregate data across all plugins: average score by category, improvement over time, distribution of critical findings, and trends. These reports are public and inform the entire WordPress security conversation.

Being visible in these leaderboards is a competitive advantage. When users search for a plugin and see side-by-side comparisons, security score differences influence buying decisions. A 90 score versus an 85 score is a meaningful differentiator.


The vulnerability categories align with industry standards from OWASP and the WordPress Plugin Security Handbook.

Frequently Asked Questions

Does a high security score mean my plugin is guaranteed safe?

No. A high security score indicates that the plugin follows security best practices and has no known critical vulnerabilities, but no automated system can guarantee absolute safety. The score is a strong signal — it's based on the same verification techniques that professional security researchers use — but deployment in any environment carries inherent risk. Use the score as a component of your decision, not the entire decision.

The WP HealthKit audit checks for known vulnerability patterns, code quality issues, and best practice adherence. It doesn't verify that the plugin author's intent is benign, that the plugin won't eventually have security issues discovered, or that the plugin will perform well under all conditions. Always review the specific findings in your audit report, understand the actual code, and test the plugin before deploying to production.

How often does WP HealthKit re-audit plugins?

WP HealthKit re-audits plugins every time they publish a new version, and re-audits all plugins in its directory quarterly. This means if you update your plugin, your score will update immediately. If you don't update but other layers of the audit change (e.g., new CVEs are published), the score will reflect that when the quarterly re-audit runs.

You can manually re-audit your plugin at any time by uploading a new version or requesting a priority audit through your WP HealthKit dashboard.

Why did my score drop when I haven't changed my code?

Your score might drop because:

  • A new CVE was published that affects your plugin's dependencies
  • A quarterly re-audit ran and discovered findings your previous audit missed
  • You updated to a new PHP version and your code now has compatibility issues
  • A new finding category was added to the audit methodology

Check your audit report to see which layer flagged new findings. Most score drops are explainable by looking at the specific findings added since your last audit.

Can I dispute a finding if I disagree with it?

Yes. Each finding in your WP HealthKit audit has a dispute button. Click it, explain why you believe the finding is incorrect or not applicable, and submit evidence. WP HealthKit's security team reviews disputes and adjusts findings if they're in error.

Some findings are harder to dispute than others: a known CVE or a hardcoded password is indisputable. But if you believe a PHPCS violation is a false positive, or a PHPStan warning doesn't apply in your context, documenting that helps improve the audit accuracy.

How does WP HealthKit handle external libraries and dependencies?

WP HealthKit audits your entire plugin codebase, including any bundled libraries. If you vendor a library that has security issues, those findings will appear in your audit and affect your score. This is by design — you're responsible for the code you ship, whether you wrote it or not.

If a library has known vulnerabilities, your best options are: update to a patched version, or unvendor the library and let WordPress handle it natively (if applicable). WP HealthKit's audit will credit you for removing vulnerable dependencies.

My plugin is free, open-source, and maintained by volunteers. How does that affect my score?

It doesn't. WP HealthKit scores based on code and behavior, not on business model or team composition. A free, volunteer-maintained plugin can achieve a 95 score, and a commercial plugin can score 45. What matters is the actual security posture of the code.

That said, maintaining open-source security does require resources. If your plugin is struggling with security scores and you're under-resourced, consider splitting work with other volunteers, accepting sponsorships, or using automated tools (like GitHub Actions with PHPCS, PHPStan, and secret detection) to catch issues before they reach your users.

Can I embed my security score on my website?

Yes. WP HealthKit provides embed codes and badges that display your plugin's current score. These update automatically as your score changes. You can embed the score on your plugin's homepage, documentation site, or marketing materials. This is a great way to build trust — it shows you're transparent about security and confident in your practices.


Next Steps

Understanding your security score is the first step. Acting on it is what matters.

Start by uploading your plugin to WP HealthKit if you haven't already. Get your baseline score. Review the specific findings. Prioritize Critical and High items for remediation. Re-audit after you've made changes.

Watch your score improve. Share that improvement with your users. Build a community around security-first development.

Security scoring won't solve all WordPress security problems — but it does create accountability, transparency, and incentives for everyone to do better.

If you're ready to audit your plugin and understand your real security posture, upload your plugin to WP HealthKit today. The audit is free, the methodology is transparent, and the results are actionable.

For more on plugin security best practices, explore the WP HealthKit ecosystem reports and see how your plugin compares to others in your category. Our plugin directory and leaderboards showcase the highest-scoring plugins and provide security context for decision-making.


Ready to audit your plugin?

WP HealthKit checks for all the issues in this article and 40+ more across 62 verification layers.

Comments