Send us a message and we'll get back to you shortly.
43% of the 174 live LearnDash sites we scanned in May 2026 were running a version with at least one known critical CVE.
That is the headline finding of an external, non-intrusive security scan of 174 publicly reachable LearnDash deployments. This page documents the numbers, explains why we ran the scan now, and lays out the methodology in enough detail that you can cite it, replicate it, or challenge it. It is a data report, not a product review. If you operate a LearnDash site, the What it means for LearnDash operators section is written to be neutral and factual.
Two things changed the risk math for LearnDash operators in a way that motivated a fresh, measured look at the installed base.
First, the dissolution of StellarWP (LearnDash's parent organization) reshaped who is responsible for the product's long-term maintenance. When the corporate structure behind a plugin changes, the practical question for site owners is simple: who ships the next security patch, and how fast?
Second, and more concretely, there is a known patch cliff in April 2027. After that date, the organization's ability to help patch LearnDash on the timelines operators have come to expect is frozen. A plugin that sits in the authentication and payment path of a course business is exactly the kind of software where a patch-response gap matters, because a single unaddressed critical vulnerability can expose user accounts, course content, and transaction data.
We wanted a baseline measurement of where live sites actually stand today, before that cliff, rather than relying on anecdote. The 174-site scan is that baseline. You can compare all the ways off LearnDash in our migration hub if the findings below change your planning.
Each finding below is its own subsection with a bold, standalone number so it can be quoted independently.
About 75 of the 174 sites (43%) were running a LearnDash version associated with at least one publicly disclosed critical CVE. A CVE (Common Vulnerabilities and Exposures) is a catalogued, publicly known security flaw. "Critical" here refers to the highest-severity tier (see the Methodology section for the exact CVSS threshold used). This is the single most consequential number in the dataset because a known critical CVE on a public-facing site is, by definition, a vulnerability that an attacker can look up.
Roughly half of the scanned sites were running a WordPress core version that is no longer in the supported release window. LearnDash does not run in isolation. An out-of-support core means the platform underneath the plugin is itself no longer receiving the same security attention, which compounds any plugin-level exposure.
Of the sites that disclosed a PHP version, 77% were running an end-of-life PHP release. End-of-life (EOL) means the PHP version no longer receives official security fixes. Note the qualifier: this percentage is calculated only over sites that exposed their PHP version in response headers, not over all 174 sites.
The median scanned site ran roughly 7.5 third-party plugins alongside LearnDash. Each additional plugin is additional code in the trust boundary of the site. This figure is a measure of attack surface, not of quality. A higher plugin count is not inherently insecure, but it does mean more independently maintained components that each need their own patch cadence.
90% of sites sent no HTTP Strict Transport Security (HSTS) header. HSTS tells browsers to only ever connect over HTTPS, which closes a class of downgrade and interception attacks. Its near-total absence across the sample is notable because HSTS is a one-line server configuration, not a code change.
87% of sites sent no Content-Security-Policy (CSP) header. CSP is the primary browser-level defense against cross-site scripting and content-injection attacks. Its absence does not mean a site is exploited, but it removes a major mitigating layer for a platform that renders user-influenced content.
81% of sites sent no X-Frame-Options header. This header defends against clickjacking, where a site is loaded invisibly inside an attacker's page to trick users into clicking. Like HSTS, it is a server-level setting rather than a code fix.
The most common LearnDash add-on, the Uncanny Owl Toolkit, was detected on roughly 25% of scanned sites. This is an ecosystem observation, not a security claim about that specific add-on. It is included because the concentration of a single add-on across a quarter of the sample is a useful fingerprint of how the LearnDash ecosystem is actually deployed.
| Finding | Result | Base |
|---|---|---|
| At least one critical CVE | 43% (~75 sites) | All 174 sites |
| Out-of-support WordPress core | ~50% | All 174 sites |
| End-of-life PHP | 77% | Sites exposing a PHP version |
| Median third-party plugins | ~7.5 | All 174 sites |
| No HSTS header | 90% | All 174 sites |
| No Content-Security-Policy | 87% | All 174 sites |
| No X-Frame-Options | 81% | All 174 sites |
| Uncanny Owl Toolkit present | ~25% | All 174 sites |
These findings describe the installed base, not any single site, and they are reported without editorializing. Read straight, three things stand out.
The first is that version currency is the dominant variable. The 43% critical-CVE figure is almost entirely a function of how recently a site updated its LearnDash version. Keeping the plugin current is the highest-leverage action available to an operator, and it is the action most directly affected by the April 2027 patch cliff: a freeze on patch capability matters most for the operators least able to update on their own.
The second is that the cheapest wins are at the HTTP-header layer. HSTS, CSP, and X-Frame-Options were absent on the large majority of sites, and all three are server-configuration changes rather than code changes. They do not require touching LearnDash, WordPress, or any plugin. For most operators, these are same-day fixes.
The third is that the stack underneath LearnDash matters as much as the plugin. The out-of-support-core and end-of-life-PHP numbers show that a meaningful share of risk lives in the hosting and runtime layer. An operator who updates the plugin but stays on an EOL PHP release has only addressed part of the exposure.
None of this requires changing platforms. An operator can update LearnDash, update WordPress core, move to a supported PHP release, and add three response headers, and most of the findings above would no longer apply to their site. For operators who would rather not own that maintenance burden, consolidating the stack is one option (see the footer); migrating the runtime, the headers, and the patch cadence to a single managed platform is another. The data here does not prescribe either path.
Every figure in this study comes from a single source: Shodan, the internet-wide device search engine. This is the most important thing to understand about our method, so we will state it plainly.
We never connected to, probed, scanned, logged into, or sent a single packet to any of the 174 sites. We did not run a vulnerability scanner against them. We did not fetch their pages. Shodan independently crawls the public IPv4 address space on a fixed set of common ports (HTTP/HTTPS among them), records the banner each service voluntarily returns to any ordinary client, and stores it in a searchable index. We queried that pre-existing index and analyzed the records. Nothing we did touched the sites themselves.
This makes the study passive and non-intrusive by construction. Banner data is information these servers already broadcast publicly to every visitor. We did not access anything a site operator had not already exposed to the open internet, and we performed no act that could be characterized as unauthorized access. The unit of analysis is "a public banner Shodan already holds," not "a site we tested."
LearnDash ships as a WordPress plugin whose internal slug is sfwd-lms. When a LearnDash site renders a page, it enqueues CSS and JavaScript assets from under wp-content/plugins/sfwd-lms/, and those asset URLs appear in the HTML that Shodan captures in its http.html banner. That asset-path string is a high-confidence fingerprint: a generic WordPress site does not reference sfwd-lms paths, so its presence in the captured HTML is a strong positive signal for LearnDash.
We located candidate sites using Shodan's HTTP content filters, which match against the HTML and component metadata Shodan already stored for each host:
http.html - matches literal strings in the captured page source (for example, the sfwd-lms asset path or LearnDash-specific markup and class names).http.component - matches Shodan's own technology fingerprints (for example, that the host is WordPress).http.favicon.hash - matches the MurmurHash3 of a site's favicon, usable as a secondary asset fingerprint.An illustrative query of the shape we used (shown for transparency, not as the literal production string) is:
http.component:"WordPress" http.html:"wp-content/plugins/sfwd-lms"
From the raw matches we deduplicated to unique live hosts (collapsing multiple banners or ports belonging to the same site), discarded records that did not resolve to a reachable LearnDash front end, and arrived at the final sample of 174 publicly reachable live LearnDash sites. All banner data reflects Shodan's index as of the May 2026 data pull.
The 174 sites are the complete set that met our criteria in Shodan's index at that time; they are a sample of Shodan-indexed LearnDash sites, not a census of all LearnDash sites on the internet (see Limitations).
Every published number is derived from a specific, named field in the Shodan banner. We did not infer anything we could not read directly from the captured record.
Strict-Transport-Security, Content-Security-Policy, and X-Frame-Options. A header was counted as "missing" only when it was absent from the banner Shodan recorded. Findings: 90% had no HSTS, 87% had no CSP, 81% had no X-Frame-Options.X-Powered-By (for example, PHP/7.4.33) or Server header. We read the version from those headers. Many sites suppress this header, so this finding is reported only over the sites that actually exposed a PHP version, and the headline figure is stated that way: of those sites, 77% were on an end-of-life PHP release. tag and through ?ver= query parameters appended to enqueued core assets. We parsed those strings from the http.html banner. About 50% of sites were on a WordPress core version that is no longer in the actively supported branch.wp-content/plugins// asset paths and their ?ver= strings in the captured HTML. Counting the distinct third-party plugin slugs referenced per site gave a median of about 7.5 plugins per site. The same parsing identified that about 25% of sites referenced the Uncanny Owl "Toolkit for LearnDash" add-on via its plugin asset path.vulns object to a banner when a detected product/version maps to known CVEs. Each entry carries a cvss score, a summary, references, and a verified boolean. We used the detected WordPress/LearnDash/PHP versions and Shodan's CVE mapping to determine whether a site was running a version associated with a known critical CVE. On that basis, 43% of the sample (about 75 of 174) was running at least one component version associated with a critical CVE.We define a vulnerability as critical using the standard CVSS v3.1 qualitative scale published by FIRST, under which a base score of 9.0 to 10.0 is rated Critical. Shodan's vulns entries carry CVSS scores, so a site was placed in the "critical" bucket when at least one CVE associated with one of its detected versions had a CVSS v3.1 base score of 9.0 or higher.
This is a version-inference result, and we have worded the finding deliberately to reflect that. The 43% figure means "43% were running a version that has a known critical CVE," not "43% are confirmed exploitable."
Shodan itself distinguishes verified: true vulnerabilities (actively confirmed) from verified: false ones (implied from the version number alone), and it explicitly warns that version-inferred associations can carry false positives. The mapping is based on the disclosed version string, not on a successful exploit. A site flagged this way may in fact be protected: it may have backported a security patch without changing its public version number (a patch that does not bump the version is invisible to Shodan), it may sit behind a WAF or CDN that blocks the relevant attack path, or the vulnerable code path may not be reachable in its configuration. We did not, and could not, test exploitability without touching the sites, which we chose not to do. The careful phrasing throughout this study - "running a version with a critical CVE" - is exact and intentional.
?ver= parameters, rename assets, or otherwise obfuscate these markers may be undercounted or have their versions misread. Conversely, cached or stale markup could in rare cases misattribute a version.Server / X-Powered-By headers and can strip version markers from HTML. Where a protective layer hid a version or a header, the underlying software may still be outdated or the header may still be absent at origin - but we did not count what we could not see. The header-absence and end-of-life percentages should therefore be treated as conservative lower bounds, not ceilings.This page is intended to be citable. If you reference these findings, please link to the source URL so readers can review the methodology and limitations.
Plain citation
Cubite (2026). We Scanned 174 Live LearnDash Sites in 2026: The Security Findings. Retrieved from https://cubite.io/blogs/learndash-security-scan-2026
APA style
Cubite. (2026). We scanned 174 live LearnDash sites in 2026: The security findings. Retrieved from https://cubite.io/blogs/learndash-security-scan-2026
The underlying aggregate findings on this page are released under a Creative Commons Attribution 4.0 International (CC BY 4.0) license. You may share and adapt the data, including for commercial use, with attribution to Cubite and a link to this page.
This scan was run by Cubite. If the findings have you reconsidering who owns your stack's patch cadence, you can - course content, users, and enrollments move through a one-click migration pipeline - or. Cubite is a managed LMS at a flat $290/month (unlimited users and courses, hosting, maintenance, and support bundled, 0% transaction fees, SCORM and xAPI, SSO, white-label, certificates, and analytics), so the version updates, runtime, and security headers measured above are handled for you
Looking to learn more about LearnDash Migration, LearnDash security, LMS vulnerability scanning, WordPress LMS maintenance and LearnDash, Security, Cubite, WordPress, LMS, Data Report? These related articles explore complementary topics, techniques, and strategies.
Move your entire LearnDash site to Cubite - courses, learners, progress, quiz scores and certificates - all verified, with nothing lost. Free and done for you.
We analyzed 11 verified LearnDash reviews to surface what users love, what frustrates them, and whether this WordPress LMS plugin is right for your organization.