Elements Plus! Security & Risk Analysis

wordpress.org/plugins/elements-plus

Elements Plus! provides awesome custom widgets for the Elementor page builder. Buttons, Toggles, Gallery, Hotspots, and so much more!

6K active installs v2.16.5 PHP 5.4+ WP 6.1+ Updated Sep 15, 2025
custom-elementscustom-widgetselementor-templateselementor-widgetswidgets-for-elementor
97
A · Safe
CVEs total3
Unpatched0
Last CVESep 10, 2025
Safety Verdict

Is Elements Plus! Safe to Use in 2026?

Generally Safe

Score 97/100

Elements Plus! has a strong security track record. Known vulnerabilities have been patched promptly.

3 known CVEsLast CVE: Sep 10, 2025Updated 6mo ago
Risk Assessment

The Elements Plus plugin v2.16.5 exhibits a mixed security posture. On one hand, its code analysis shows excellent practices regarding SQL queries, with 100% using prepared statements, and a very high rate of output escaping. The absence of dangerous functions, file operations, external HTTP requests, and taint flows is also positive. However, there are significant concerns related to its attack surface. The plugin exposes two AJAX handlers, both of which lack any authentication checks, creating a substantial risk of unauthorized actions. The complete absence of nonce checks on these AJAX endpoints further exacerbates this risk, making them prime targets for Cross-Site Request Forgery (CSRF) attacks.

The vulnerability history indicates a past pattern of medium-severity Cross-site Scripting (XSS) vulnerabilities. While there are no currently unpatched CVEs, the recurring nature of XSS suggests that input sanitization or output escaping within dynamically generated content might not be consistently robust. The last vulnerability being in September 2025 is also unusual and potentially an artifact of data entry, but if it were accurate, it would suggest a recent exposure.

In conclusion, while Elements Plus demonstrates strengths in data handling and output sanitization, the unauthenticated AJAX endpoints represent a critical weakness. The historical XSS vulnerabilities, even if resolved, warrant continued vigilance regarding user-supplied data. The plugin needs immediate attention to secure its AJAX handlers to mitigate the risk of unauthorized execution and potential data manipulation.

Key Concerns

  • Unprotected AJAX handlers
  • Missing nonce checks on AJAX
  • Past medium severity XSS vulnerabilities
Vulnerabilities
3

Elements Plus! Security Vulnerabilities

CVEs by Year

2 CVEs in 2024
2024
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

Medium
3

3 total CVEs

CVE-2025-8689medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Elements Plus! <= 2.16.4 - Authenticated (Contributor+) Stored Cross-Site Scripting via Multiple Widgets

Sep 10, 2025 Patched in 2.16.5 (76d)
CVE-2024-32457medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Elements Plus! <= 2.16.3 - Authenticated (Contributor+) Stored Cross-Site Scripting

Apr 15, 2024 Patched in 2.16.4 (11d)
CVE-2024-2335medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Elements Plus! <= 2.16.2 - Authenticated(Contributor+) Stored Cross-Site Scripting via widget links

Mar 14, 2024 Patched in 2.16.3 (27d)
Code Analysis
Analyzed Mar 16, 2026

Elements Plus! Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
0 prepared
Unescaped Output
7
256 escaped
Nonce Checks
0
Capability Checks
0
File Operations
0
External Requests
0
Bundled Libraries
0

Output Escaping

97% escaped263 total outputs
Attack Surface
2 unprotected

Elements Plus! Attack Surface

Entry Points2
Unprotected2

AJAX Handlers 2

authwp_ajax_elements_plus_searchelements\ep-search.php:727
noprivwp_ajax_elements_plus_searchelements\ep-search.php:728
WordPress Hooks 55
actionelementor/widgets/registerelements\ep-audioigniter.php:185
actionelementor/widgets/registerelements\ep-button-plus.php:480
actionelementor/widgets/registerelements\ep-caldera-forms.php:518
actionelementor/widgets/registerelements\ep-cf7.php:554
actionelementor/widgets/registerelements\ep-content-toggle.php:322
actionelementor/widgets/registerelements\ep-countdown.php:369
actionelementor/widgets/registerelements\ep-cta.php:536
actionelementor/widgets/registerelements\ep-dual-button.php:850
actionelementor/widgets/registerelements\ep-flipclock.php:377
actionelementor/widgets/registerelements\ep-heading.php:366
actionelementor/widgets/registerelements\ep-hotspots.php:445
actionelementor/widgets/registerelements\ep-icon-plus.php:392
actionelementor/widgets/registerelements\ep-image-accordion.php:326
actionelementor/widgets/registerelements\ep-image-comparison.php:189
actionelementor/widgets/registerelements\ep-image-hover-effects.php:127
actionelementor/widgets/registerelements\ep-inline-svg.php:215
actionelementor/frontend/after_enqueue_scriptselements\ep-inline-svg.php:222
actionelementor/frontend/after_enqueue_styleselements\ep-inline-svg.php:229
actionelementor/element/before_section_endelements\ep-instagram-filters.php:3
actionelementor/widgets/registerelements\ep-justified-gallery.php:314
actionelementor/widgets/registerelements\ep-label.php:288
actionelementor/widgets/registerelements\ep-preloader.php:161
actionelementor/widgets/registerelements\ep-pricing-list.php:337
actionelementor/element/before_section_startelements\ep-scheduled.php:2
actionelementor/frontend/widget/before_renderelements\ep-scheduled.php:88
actionelementor/frontend/section/before_renderelements\ep-scheduled.php:89
actionelementor/frontend/column/before_renderelements\ep-scheduled.php:90
actionelementor/frontend/widget/after_renderelements\ep-scheduled.php:104
actionelementor/frontend/section/after_renderelements\ep-scheduled.php:105
actionelementor/frontend/column/after_renderelements\ep-scheduled.php:106
actionelementor/widgets/registerelements\ep-search.php:723
actionelementor/element/video/section_video/before_section_endelements\ep-sticky-videos.php:3
actionelementor/widgets/registerelements\ep-styled-maps.php:190
actionelementor/widgets/registerelements\ep-tables.php:419
actionelementor/element/before_section_startelements\ep-tilt.php:2
actionelementor/frontend/widget/before_renderelements\ep-tilt.php:233
actionelementor/frontend/section/before_renderelements\ep-tilt.php:234
actionelementor/frontend/column/before_renderelements\ep-tilt.php:235
actionelementor/element/after_section_endelements\ep-tooltip.php:7
filterelementor/widget/print_templateelements\ep-tooltip.php:129
actionelementor/widget/before_render_contentelements\ep-tooltip.php:147
actionelementor/widgets/registerelements\ep-video-slider.php:256
actionelementor/widgets/registerelements\ep-wpforms.php:761
actionplugins_loadedelements-plus.php:32
actionadmin_noticeselements-plus.php:40
actionadmin_noticeselements-plus.php:46
actionadmin_noticeselements-plus.php:52
actionelementor/initelements-plus.php:57
actionelementor/editor/before_enqueue_scriptselements-plus.php:61
actionelementor/initelements-plus.php:63
actionwp_enqueue_scriptselements-plus.php:65
actionadmin_enqueue_scriptselements-plus.php:67
actionelementor/preview/enqueue_styleselements-plus.php:69
actionadmin_menuinc\elements-plus-options.php:6
actionadmin_initinc\elements-plus-options.php:7
Maintenance & Trust

Elements Plus! Maintenance & Trust

Maintenance Signals

WordPress version tested6.8.5
Last updatedSep 15, 2025
PHP min version5.4
Downloads328K

Community Trust

Rating96/100
Number of ratings23
Active installs6K
Developer Profile

Elements Plus! Developer Profile

The CSSIgniter Team

8 plugins · 31K total installs

87
trust score
Avg Security Score
99/100
Avg Patch Time
36 days
View full developer profile
Detection Fingerprints

How We Detect Elements Plus!

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/elements-plus/assets/css/ep-icon.css/wp-content/plugins/elements-plus/assets/css/ep-icon-module.css/wp-content/plugins/elements-plus/assets/css/ep-elementor-styles.css/wp-content/plugins/elements-plus/assets/js/frontend.js/wp-content/plugins/elements-plus/assets/js/elements-plus.js/wp-content/plugins/elements-plus/assets/js/particles.min.js
Script Paths
/wp-content/plugins/elements-plus/assets/js/frontend.js/wp-content/plugins/elements-plus/assets/js/elements-plus.js/wp-content/plugins/elements-plus/assets/js/particles.min.js
Version Parameters
elements-plus/assets/css/ep-icon.css?ver=elements-plus/assets/css/ep-icon-module.css?ver=elements-plus/assets/css/ep-elementor-styles.css?ver=elements-plus/assets/js/frontend.js?ver=elements-plus/assets/js/elements-plus.js?ver=elements-plus/assets/js/particles.min.js?ver=

HTML / DOM Fingerprints

CSS Classes
elements-plus-heading
JS Globals
elements_plus_frontend_params
FAQ

Frequently Asked Questions about Elements Plus!