Widget Wrangler Security & Risk Analysis

wordpress.org/plugins/widget-wrangler

A plugin for managing the display of widgets on a page by page basis. Using widgets as a post type.

200 active installs v2.3.9 PHP 5.3+ WP + Updated Aug 18, 2020
adminadministrationsidebarwidgetwidgets
60
C · Use Caution
CVEs total1
Unpatched1
Last CVEMar 18, 2026
Safety Verdict

Is Widget Wrangler Safe to Use in 2026?

Use With Caution

Score 60/100

Widget Wrangler has 1 unpatched vulnerability. Evaluate alternatives or apply available mitigations.

1 known CVE 1 unpatched Last CVE: Mar 18, 2026Updated 5yr ago
Risk Assessment

The "widget-wrangler" plugin v2.3.9 exhibits a mixed security posture. On the positive side, it demonstrates strong practices regarding SQL queries, utilizing prepared statements exclusively, and has no recorded vulnerability history, suggesting a generally well-maintained codebase. However, significant concerns arise from the static analysis. The presence of two AJAX handlers without authentication checks represents a direct attack vector that could be exploited by unauthenticated users. Furthermore, the use of the `unserialize` function is a known risk, as it can lead to remote code execution if unsanitized data is processed. The taint analysis, while not revealing critical or high severity issues, did identify flows with unsanitized paths, which, when combined with the `unserialize` function, warrants careful attention.

The lack of any recorded CVEs is a strong indicator of past security diligence. However, this does not negate the current risks identified in the static analysis. The plugin's strengths lie in its secure database interactions and its vulnerability-free history. Its weaknesses are primarily in its handling of user-supplied data for AJAX endpoints and the potentially dangerous `unserialize` function. A balanced conclusion is that while the plugin appears to be robust in some areas, the identified attack surface and function usage create exploitable weaknesses that require remediation.

Key Concerns

  • AJAX handlers without auth checks
  • Use of unserialize function
  • Flows with unsanitized paths
  • Insufficient nonce checks
  • Insufficient capability checks
  • Low percentage of properly escaped output
Vulnerabilities
1 published

Widget Wrangler Security Vulnerabilities

CVEs by Year

1 CVE in 2026 · unpatched
2026
Patched Has unpatched

Severity Breakdown

High
1

1 total CVE

CVE-2026-25447high · 8.8Unrestricted Upload of File with Dangerous Type

Widget Wrangler <= 2.3.9 - Authenticated (Author+) Remote Code Execution

Mar 18, 2026Unpatched
Version History

Widget Wrangler Release Timeline

v2.3.9Current1 CVE
v2.3.81 CVE
v2.3.71 CVE
v2.3.61 CVE
v2.3.51 CVE
v2.3.41 CVE
v2.3.31 CVE
v2.2.41 CVE
v2.2.31 CVE
v2.2.21 CVE
v2.2.11 CVE
v2.2.01 CVE
v2.1.61 CVE
v2.1.51 CVE
v2.1.41 CVE
v2.1.31 CVE
v2.0.41 CVE
v2.0.31 CVE
v1.5.41 CVE
v1.5.21 CVE
Code Analysis
Analyzed Mar 16, 2026

Widget Wrangler Code Analysis

Dangerous Functions
2
Raw SQL Queries
0
5 prepared
Unescaped Output
189
75 escaped
Nonce Checks
1
Capability Checks
1
File Operations
2
External Requests
0
Bundled Libraries
1

Dangerous Functions Found

unserialize$extras[$i]->data = unserialize($extra->data);common\Extras.php:84
unserialize$extras[$i]->widgets = unserialize($extra->widgets);common\Extras.php:85

Bundled Libraries

TinyMCE

SQL Query Safety

100% prepared5 total queries

Output Escaping

28% escaped264 total outputs
Data Flows · Security
3 unsanitized

Data Flow Analysis

3 flows3 with unsanitized paths
<AdminPagePresets> (admin\AdminPagePresets.php:0)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
2 unprotected

Widget Wrangler Attack Surface

Entry Points4
Unprotected2

AJAX Handlers 2

authwp_ajax_ww_form_ajaxadmin\Admin.php:51
authwp_ajax_widget_wrangler_previewadmin\WidgetPostType.php:48

Shortcodes 2

[ww_widget] common\display.php:69
[ww_corral] common\display.php:70
WordPress Hooks 22
actionwp_loadedadmin\Admin.php:49
actionadmin_initadmin\Admin.php:50
actionsave_postadmin\Admin.php:112
actionadmin_menuadmin\AdminPage.php:108
actionadmin_enqueue_scriptsadmin\AdminPage.php:109
actionwidget_wrangler_form_topadmin\SortableWidgetsUi.php:17
actionedited_termadmin\TaxonomyTermUi.php:25
actionadmin_enqueue_scriptsadmin\TaxonomyUi.php:27
actionwp_insert_postadmin\WidgetPostType.php:47
actionadmin_enqueue_scriptsadmin\WidgetPostType.php:49
filtermanage_edit-widget_columnsadmin\WidgetPostType.php:58
actionmanage_posts_custom_columnadmin\WidgetPostType.php:59
filtertw_templatescommon\display.php:73
filtertw_pre_process_templatecommon\display.php:74
actiondynamic_sidebar_beforecommon\display.php:77
actiondynamic_sidebar_aftercommon\display.php:78
actionadmin_initcommon\presets.php:25
actionwp_loadedwidget-wrangler.php:111
actionwidgets_initwidget-wrangler.php:115
actioninitwidget-wrangler.php:116
actionwpwidget-wrangler.php:117
actionplugins_loadedwidget-wrangler.php:120
Maintenance & Trust

Widget Wrangler Maintenance & Trust

Maintenance Signals

WordPress version tested5.5.18
Last updatedAug 18, 2020
PHP min version5.3
Downloads46K

Community Trust

Rating100/100
Number of ratings11
Active installs200
Developer Profile

Widget Wrangler Developer Profile

Jonathan Daggerhart

5 plugins · 11K total installs

69
trust score
Avg Security Score
85/100
Avg Patch Time
331 days
View full developer profile
Detection Fingerprints

How We Detect Widget Wrangler

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/widget-wrangler/admin/css/bootstrap-multiselect.css/wp-content/plugins/widget-wrangler/admin/css/bootstrap-toggle.css/wp-content/plugins/widget-wrangler/admin/css/jquery-ui-1.10.3.custom.min.css/wp-content/plugins/widget-wrangler/admin/css/styles.css/wp-content/plugins/widget-wrangler/admin/js/bootstrap-multiselect.js/wp-content/plugins/widget-wrangler/admin/js/bootstrap-toggle.js/wp-content/plugins/widget-wrangler/admin/js/bootstrap.min.js/wp-content/plugins/widget-wrangler/admin/js/jquery.cookie.js+8 more
Script Paths
/wp-content/plugins/widget-wrangler/admin/js/bootstrap-multiselect.js/wp-content/plugins/widget-wrangler/admin/js/bootstrap-toggle.js/wp-content/plugins/widget-wrangler/admin/js/bootstrap.min.js/wp-content/plugins/widget-wrangler/admin/js/jquery.cookie.js/wp-content/plugins/widget-wrangler/admin/js/jquery.nEnter.js/wp-content/plugins/widget-wrangler/admin/js/jquery.validate.min.js+6 more
Version Parameters
widget-wrangler/admin/css/bootstrap-multiselect.css?ver=widget-wrangler/admin/css/bootstrap-toggle.css?ver=widget-wrangler/admin/css/jquery-ui-1.10.3.custom.min.css?ver=widget-wrangler/admin/css/styles.css?ver=widget-wrangler/admin/js/bootstrap-multiselect.js?ver=widget-wrangler/admin/js/bootstrap-toggle.js?ver=widget-wrangler/admin/js/bootstrap.min.js?ver=widget-wrangler/admin/js/jquery.cookie.js?ver=widget-wrangler/admin/js/jquery.nEnter.js?ver=widget-wrangler/admin/js/jquery.validate.min.js?ver=widget-wrangler/admin/js/sidebar-editor.js?ver=widget-wrangler/admin/js/tinymce-editor-button.js?ver=widget-wrangler/admin/js/widget-wrangler-admin.js?ver=widget-wrangler/admin/js/widget-wrangler-settings.js?ver=widget-wrangler/admin/js/widgets.js?ver=widget-wrangler/includes/js/jquery-ui-1.10.3.custom.min.js?ver=

HTML / DOM Fingerprints

CSS Classes
widget-wrangler-settings-sectionwidget-wrangler-widget-form-fieldww-widget-displayww-corral-widgetwidget-wrangler-admin-bar
HTML Comments
Copyright 2010 Jonathan DaggerhartThis program is free softwareThis program is distributed in the hope that it will be usefulYou should have received a copy of the GNU General Public License+22 more
Data Attributes
data-ww-widget-iddata-ww-corral-iddata-widget-wrangler-nonce
JS Globals
WidgetWranglerww_admin_paramsww_settings_paramsww_tinymce_paramsww_sidebar_editor_params
REST Endpoints
/wp-json/widget-wrangler/v1/widgets/wp-json/widget-wrangler/v1/widget/
Shortcode Output
[widget-wrangler-corral id=""[widget-wrangler-widget id=""
FAQ

Frequently Asked Questions about Widget Wrangler