Ultimate Dashboard – Custom WordPress Dashboard Security & Risk Analysis

wordpress.org/plugins/ultimate-dashboard

The #1 Plugin to Customize the WordPress Dashboard!

60K active installs v3.8.15 PHP 5.6+ WP 4.6+ Updated Mar 10, 2026
admin-menu-editorbrandacustom-dashboardcustom-login-screencustom-wordpress-admin
97
A · Safe
CVEs total8
Unpatched0
Last CVEMar 27, 2025
Safety Verdict

Is Ultimate Dashboard – Custom WordPress Dashboard Safe to Use in 2026?

Generally Safe

Score 97/100

Ultimate Dashboard – Custom WordPress Dashboard has a strong security track record. Known vulnerabilities have been patched promptly.

8 known CVEsLast CVE: Mar 27, 2025Updated 24d ago
Risk Assessment

The "ultimate-dashboard" v3.8.15 plugin presents a mixed security posture. On the positive side, it demonstrates strong practices in SQL query handling, with 100% using prepared statements, and a high rate of proper output escaping (99%). The plugin also incorporates a significant number of nonce and capability checks, indicating an awareness of WordPress security best practices. However, a substantial attack surface is exposed through its 18 AJAX handlers, with a concerning 15 of them lacking authentication checks. This is further amplified by the presence of a dangerous `unserialize` function, which, if combined with unsanitized input processed through the identified flows, could lead to critical vulnerabilities. The plugin's history of 8 medium-severity CVEs, primarily related to Cross-site Scripting and Missing Authorization, reinforces the concern around improper input handling and authorization gaps. While no currently unpatched vulnerabilities are listed, the historical pattern suggests a recurring need for robust authorization and input sanitization measures.

The most significant risks stem from the large number of unprotected AJAX endpoints and the potential for deserialization vulnerabilities. The past CVEs in XSS and Missing Authorization are directly relevant to these findings. While the plugin has strengths in other areas, these specific weaknesses create an exploitable attack surface that attackers could target to gain unauthorized access or execute malicious code within the WordPress environment. The presence of unsanitized flows, even if not classified as critical in the static analysis, coupled with unprotected AJAX actions, warrants immediate attention.

Key Concerns

  • 15 unprotected AJAX handlers
  • Presence of unserialize function
  • 3 unsanitized flows
  • History of 8 medium CVEs (XSS, Missing Auth)
Vulnerabilities
8

Ultimate Dashboard – Custom WordPress Dashboard Security Vulnerabilities

CVEs by Year

4 CVEs in 2023
2023
4 CVEs in 2025
2025
Patched Has unpatched

Severity Breakdown

Medium
8

8 total CVEs

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

Ultimate Dashboard <= 3.8.5 - Authenticated (Administrator+) Stored Cross-Site Scripting

Mar 27, 2025 Patched in 3.8.6 (27d)
CVE-2025-1525medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Ultimate Dashboard <= 3.8.5 - Authenticated (Administrator+) Stored Cross-Site Scripting

Mar 27, 2025 Patched in 3.8.6 (27d)
CVE-2025-1523medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Ultimate Dashboard <= 3.8.5 - Authenticated (Administrator+) Stored Cross-Site Scripting

Mar 27, 2025 Patched in 3.8.6 (27d)
CVE-2025-2276medium · 4.3Missing Authorization

Ultimate Dashboard <= 3.8.7 - Missing Authorization to Authenticated (Subscriber+) Plugin Modules Activation/Deactivation

Mar 25, 2025 Patched in 3.8.8 (1d)
CVE-2023-50828medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Ultimate Dashboard <= 3.7.11 - Authenticated (Administrator+) Stored Cross-Site Scripting via settings

Dec 19, 2023 Patched in 3.7.12 (35d)
CVE-2023-49822medium · 5.3Protection Mechanism Failure

Ultimate Dashboard <= 3.7.10 - Login Page Disclosure on Multi-site

Dec 5, 2023 Patched in 3.7.11 (49d)
CVE-2023-4726medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Ultimate Dashboard <= 3.7.7 - Authenticated (Administrator+) Stored Cross-Site Scripting via plugin settings

Nov 13, 2023 Patched in 3.7.8 (71d)
CVE-2023-2812medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Ultimate Dashboard <= 3.7.5 - Authenticated(Administrator+) Stored Cross-Site Scripting via plugin settings

May 21, 2023 Patched in 3.7.6 (247d)
Code Analysis
Analyzed Mar 16, 2026

Ultimate Dashboard – Custom WordPress Dashboard Code Analysis

Dangerous Functions
1
Raw SQL Queries
0
0 prepared
Unescaped Output
5
961 escaped
Nonce Checks
26
Capability Checks
23
File Operations
7
External Requests
2
Bundled Libraries
1

Dangerous Functions Found

unserialize$value = unserialize( $value );helpers\class-array-helper.php:88

Bundled Libraries

Select2

Output Escaping

99% escaped966 total outputs
Data Flows
3 unsanitized

Data Flow Analysis

3 flows3 with unsanitized paths
login_footer (modules\login-customizer\templates\udb-login-page.php:295)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
15 unprotected

Ultimate Dashboard – Custom WordPress Dashboard Attack Surface

Entry Points18
Unprotected15

AJAX Handlers 18

authwp_ajax_udb_dismiss_review_noticeclass-setup.php:105
authwp_ajax_udb_dismiss_bfcm_noticeclass-setup.php:106
authwp_ajax_udb_admin_bar_save_remove_by_rolesmodules\admin-bar\ajax\class-save-remove-by-roles.php:29
authwp_ajax_udb_admin_bar_get_usersmodules\admin-bar\class-admin-bar-module.php:187
authwp_ajax_udb_admin_menu_get_menumodules\admin-menu\class-admin-menu-module.php:85
authwp_ajax_udb_admin_menu_get_usersmodules\admin-menu\class-admin-menu-module.php:86
authwp_ajax_udb_admin_page_change_active_statusmodules\admin-page\class-admin-page-module.php:78
authwp_ajax_udb_handle_module_actionsmodules\feature\class-feature-module.php:67
authwp_ajax_udb_onboarding_wizard_save_custom_login_urlmodules\onboarding-wizard\ajax\class-save-custom-login-url.php:27
authwp_ajax_udb_onboarding_wizard_save_modulesmodules\onboarding-wizard\ajax\class-save-modules.php:41
authwp_ajax_udb_onboarding_wizard_save_general_settingsmodules\onboarding-wizard\ajax\class-save-settings.php:45
authwp_ajax_udb_onboarding_wizard_save_widgetsmodules\onboarding-wizard\ajax\class-save-widgets.php:39
authwp_ajax_udb_onboarding_wizard_skip_discountmodules\onboarding-wizard\ajax\class-skip-discount.php:20
authwp_ajax_udb_onboarding_wizard_subscribemodules\onboarding-wizard\ajax\class-subscribe.php:34
authwp_ajax_udb_plugin_onboarding_save_modulesmodules\plugin-onboarding\ajax\class-save-modules.php:41
authwp_ajax_udb_plugin_onboarding_skip_discountmodules\plugin-onboarding\ajax\class-skip-discount.php:27
authwp_ajax_udb_plugin_onboarding_subscribemodules\plugin-onboarding\ajax\class-subscribe.php:41
authwp_ajax_udb_widget_change_active_statusmodules\widget\class-widget-module.php:54
WordPress Hooks 135
actionudb_compat_widget_typeclass-backwards-compatibility.php:50
actionadmin_initclass-backwards-compatibility.php:51
actionplugins_loadedclass-setup.php:94
actionplugins_loadedclass-setup.php:95
actionplugins_loadedclass-setup.php:96
actioninitclass-setup.php:97
actioninitclass-setup.php:98
actionadmin_menuclass-setup.php:99
filteradmin_body_classclass-setup.php:100
actionadmin_enqueue_scriptsclass-setup.php:101
actionadmin_enqueue_scriptsclass-setup.php:102
actionadmin_noticesclass-setup.php:103
actionadmin_noticesclass-setup.php:104
filterwp_kses_allowed_htmlclass-setup.php:111
actioncurrent_screenclass-setup.php:327
actionwp_dashboard_setuphelpers\class-widget-helper.php:43
actionadmin_menumodules\admin-bar\class-admin-bar-module.php:165
actionwp_before_admin_bar_rendermodules\admin-bar\class-admin-bar-module.php:168
actionadmin_enqueue_scriptsmodules\admin-bar\class-admin-bar-module.php:171
actionadmin_enqueue_scriptsmodules\admin-bar\class-admin-bar-module.php:172
filterwp_doing_ajaxmodules\admin-menu\ajax\class-get-menu.php:128
actionadmin_menumodules\admin-menu\class-admin-menu-module.php:62
actionadmin_enqueue_scriptsmodules\admin-menu\class-admin-menu-module.php:63
actionadmin_enqueue_scriptsmodules\admin-menu\class-admin-menu-module.php:64
actionudb_ajax_get_admin_menumodules\admin-menu\class-admin-menu-module.php:65
actionadmin_menumodules\admin-menu\class-admin-menu-module.php:68
filterwp_doing_ajaxmodules\admin-menu\inc\not-doing-ajax.php:53
actioninitmodules\admin-page\class-admin-page-module.php:61
filterpost_updated_messagesmodules\admin-page\class-admin-page-module.php:62
filtermanage_udb_admin_page_posts_columnsmodules\admin-page\class-admin-page-module.php:63
actionmanage_udb_admin_page_posts_custom_columnmodules\admin-page\class-admin-page-module.php:64
actiondo_meta_boxesmodules\admin-page\class-admin-page-module.php:65
filtertemplate_includemodules\admin-page\class-admin-page-module.php:67
actionadmin_menumodules\admin-page\class-admin-page-module.php:69
filtersubmenu_filemodules\admin-page\class-admin-page-module.php:70
actionadmin_enqueue_scriptsmodules\admin-page\class-admin-page-module.php:72
actionadmin_enqueue_scriptsmodules\admin-page\class-admin-page-module.php:73
actionadd_meta_boxesmodules\admin-page\class-admin-page-module.php:75
actionsave_postmodules\admin-page\class-admin-page-module.php:76
actionadmin_menumodules\admin-page\class-admin-page-output.php:72
actionwpmodules\admin-page\class-admin-page-output.php:73
actionadmin_headmodules\admin-page\class-admin-page-output.php:217
actioncurrent_screenmodules\admin-page\class-admin-page-output.php:238
filterscreen_options_show_screenmodules\admin-page\class-admin-page-output.php:256
actionadmin_print_footer_scriptsmodules\admin-page\class-admin-page-output.php:260
actionadmin_menumodules\branding\class-branding-module.php:61
actionadmin_enqueue_scriptsmodules\branding\class-branding-module.php:62
actionadmin_enqueue_scriptsmodules\branding\class-branding-module.php:63
actionadmin_headmodules\branding\class-branding-module.php:65
actionadmin_initmodules\branding\class-branding-module.php:67
filteradmin_footer_textmodules\branding\class-branding-output.php:60
filterupdate_footermodules\branding\class-branding-output.php:61
actionadmin_menumodules\feature\class-feature-module.php:64
actionadmin_enqueue_scriptsmodules\feature\class-feature-module.php:65
actionadmin_enqueue_scriptsmodules\feature\class-feature-module.php:66
actionadmin_menumodules\login-customizer\class-login-customizer-module.php:60
actioninitmodules\login-customizer\class-login-customizer-module.php:63
actioninitmodules\login-customizer\class-login-customizer-module.php:64
actionwpmodules\login-customizer\class-login-customizer-module.php:65
actioninitmodules\login-customizer\class-login-customizer-module.php:68
actionadmin_initmodules\login-customizer\class-login-customizer-module.php:69
actioncustomize_registermodules\login-customizer\class-login-customizer-module.php:72
actioncustomize_registermodules\login-customizer\class-login-customizer-module.php:73
actioncustomize_registermodules\login-customizer\class-login-customizer-module.php:74
actioncustomize_controls_print_stylesmodules\login-customizer\class-login-customizer-module.php:77
actioncustomize_controls_enqueue_scriptsmodules\login-customizer\class-login-customizer-module.php:78
actionlogin_enqueue_scriptsmodules\login-customizer\class-login-customizer-module.php:79
actioncustomize_preview_initmodules\login-customizer\class-login-customizer-module.php:80
actionlogin_enqueue_scriptsmodules\login-customizer\class-login-customizer-module.php:81
filterlogin_headertextmodules\login-customizer\class-login-customizer-output.php:71
filterlogin_headerurlmodules\login-customizer\class-login-customizer-output.php:72
actionlogin_headermodules\login-customizer\class-login-customizer-output.php:73
actionlogin_headmodules\login-customizer\class-login-customizer-output.php:74
actionlogin_headmodules\login-customizer\class-login-customizer-output.php:75
filterwp_get_custom_cssmodules\login-customizer\settings\class-custom-css-setting.php:77
actionlogin_headmodules\login-customizer\templates\udb-login-page.php:58
actionlogin_headmodules\login-customizer\templates\udb-login-page.php:60
actionlogin_headmodules\login-customizer\templates\udb-login-page.php:78
actionadmin_menumodules\login-redirect\class-login-redirect-module.php:63
actionadmin_initmodules\login-redirect\class-login-redirect-module.php:64
actionadmin_enqueue_scriptsmodules\login-redirect\class-login-redirect-module.php:65
actionadmin_enqueue_scriptsmodules\login-redirect\class-login-redirect-module.php:66
actionsetup_thememodules\login-redirect\class-login-redirect-output.php:100
filterlogin_redirectmodules\login-redirect\class-login-redirect-output.php:103
actionwp_loadedmodules\login-redirect\class-login-redirect-output.php:127
actioninitmodules\login-redirect\class-login-redirect-output.php:136
actionwp_loadedmodules\login-redirect\class-login-redirect-output.php:137
filtersite_urlmodules\login-redirect\class-login-redirect-output.php:139
filternetwork_site_urlmodules\login-redirect\class-login-redirect-output.php:140
filterwp_redirectmodules\login-redirect\class-login-redirect-output.php:141
filterlogin_urlmodules\login-redirect\class-login-redirect-output.php:142
filtersite_option_welcome_emailmodules\login-redirect\class-login-redirect-output.php:143
actiontemplate_redirectmodules\login-redirect\class-login-redirect-output.php:148
filteruser_request_action_email_contentmodules\login-redirect\class-login-redirect-output.php:149
filtersite_status_testsmodules\login-redirect\class-login-redirect-output.php:150
actionadmin_menumodules\onboarding-wizard\class-onboarding-wizard-module.php:45
actionadmin_enqueue_scriptsmodules\onboarding-wizard\class-onboarding-wizard-module.php:46
actionadmin_enqueue_scriptsmodules\onboarding-wizard\class-onboarding-wizard-module.php:47
actionadmin_menumodules\plugin-onboarding\class-plugin-onboarding-module.php:57
actionadmin_enqueue_scriptsmodules\plugin-onboarding\class-plugin-onboarding-module.php:58
actionadmin_enqueue_scriptsmodules\plugin-onboarding\class-plugin-onboarding-module.php:59
actionadmin_menumodules\setting\class-setting-module.php:41
actionadmin_enqueue_scriptsmodules\setting\class-setting-module.php:42
actionadmin_enqueue_scriptsmodules\setting\class-setting-module.php:43
actionadmin_initmodules\setting\class-setting-module.php:45
actionadmin_initmodules\setting\class-setting-output.php:76
actionadmin_enqueue_scriptsmodules\setting\class-setting-output.php:77
actionadmin_headmodules\setting\class-setting-output.php:78
actionadmin_headmodules\setting\class-setting-output.php:79
actionadmin_bar_menumodules\setting\class-setting-output.php:80
actionadmin_headmodules\setting\class-setting-output.php:81
filterscreen_options_show_screenmodules\setting\class-setting-output.php:82
actioninitmodules\setting\class-setting-output.php:83
actionadmin_initmodules\setting\class-setting-output.php:84
actionwelcome_panelmodules\setting\class-setting-output.php:225
filtershow_admin_barmodules\setting\class-setting-output.php:269
filterudb_font_awesomemodules\setting\class-setting-output.php:282
actionadmin_menumodules\tool\class-tool-module.php:63
actionadmin_enqueue_scriptsmodules\tool\class-tool-module.php:64
actionadmin_enqueue_scriptsmodules\tool\class-tool-module.php:65
actionadmin_initmodules\tool\class-tool-module.php:66
actioninitmodules\widget\class-widget-module.php:40
filterpost_updated_messagesmodules\widget\class-widget-module.php:41
filtermanage_udb_widgets_posts_columnsmodules\widget\class-widget-module.php:42
actionmanage_udb_widgets_posts_custom_columnmodules\widget\class-widget-module.php:43
actionadmin_enqueue_scriptsmodules\widget\class-widget-module.php:44
actionadmin_enqueue_scriptsmodules\widget\class-widget-module.php:45
actionudb_widget_metaboxmodules\widget\class-widget-module.php:47
actionudb_widget_metaboxmodules\widget\class-widget-module.php:48
actionudb_widget_metaboxmodules\widget\class-widget-module.php:49
actionadd_meta_boxesmodules\widget\class-widget-module.php:51
actionsave_postmodules\widget\class-widget-module.php:52
actionwp_dashboard_setupmodules\widget\class-widget-output.php:109
actionwp_dashboard_setupmodules\widget\class-widget-output.php:110
actionadmin_enqueue_scriptsmodules\widget\class-widget-output.php:111
Maintenance & Trust

Ultimate Dashboard – Custom WordPress Dashboard Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 10, 2026
PHP min version5.6
Downloads1.2M

Community Trust

Rating92/100
Number of ratings110
Active installs60K
Developer Profile

Ultimate Dashboard – Custom WordPress Dashboard Developer Profile

David Vongries

10 plugins · 121K total installs

76
trust score
Avg Security Score
95/100
Avg Patch Time
607 days
View full developer profile
Detection Fingerprints

How We Detect Ultimate Dashboard – Custom WordPress Dashboard

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/ultimate-dashboard/assets/css/animate.min.css/wp-content/plugins/ultimate-dashboard/assets/css/colorpicker.css/wp-content/plugins/ultimate-dashboard/assets/css/datetimepicker.css/wp-content/plugins/ultimate-dashboard/assets/css/dropzone.css/wp-content/plugins/ultimate-dashboard/assets/css/frontend.css/wp-content/plugins/ultimate-dashboard/assets/css/font-awesome.min.css/wp-content/plugins/ultimate-dashboard/assets/css/select2.min.css/wp-content/plugins/ultimate-dashboard/assets/css/summernote.css+40 more
Script Paths
/wp-content/plugins/ultimate-dashboard/assets/js/udb-admin.js/wp-content/plugins/ultimate-dashboard/assets/js/udb-admin-bar.js/wp-content/plugins/ultimate-dashboard/assets/js/udb-admin-menu.js/wp-content/plugins/ultimate-dashboard/assets/js/udb-admin-pages.js/wp-content/plugins/ultimate-dashboard/assets/js/udb-dashboard-widgets.js/wp-content/plugins/ultimate-dashboard/assets/js/udb-license.js+2 more
Version Parameters
ultimate-dashboard/assets/css/animate.min.css?ver=ultimate-dashboard/assets/css/colorpicker.css?ver=ultimate-dashboard/assets/css/datetimepicker.css?ver=ultimate-dashboard/assets/css/dropzone.css?ver=ultimate-dashboard/assets/css/frontend.css?ver=ultimate-dashboard/assets/css/font-awesome.min.css?ver=ultimate-dashboard/assets/css/select2.min.css?ver=ultimate-dashboard/assets/css/summernote.css?ver=ultimate-dashboard/assets/css/tooltipster.css?ver=ultimate-dashboard/assets/css/udb-admin.css?ver=ultimate-dashboard/assets/css/udb-frontend.css?ver=ultimate-dashboard/assets/css/udb-license.css?ver=ultimate-dashboard/assets/css/udb-login.css?ver=ultimate-dashboard/assets/css/udb-widgets.css?ver=ultimate-dashboard/assets/js/admin-bar-editor.js?ver=ultimate-dashboard/assets/js/admin-menu-editor.js?ver=ultimate-dashboard/assets/js/animate.min.js?ver=ultimate-dashboard/assets/js/colorpicker.js?ver=ultimate-dashboard/assets/js/datetimepicker.js?ver=ultimate-dashboard/assets/js/dropzone.js?ver=ultimate-dashboard/assets/js/editor.js?ver=ultimate-dashboard/assets/js/frontend.js?ver=ultimate-dashboard/assets/js/login.js?ver=ultimate-dashboard/assets/js/login-customizer.js?ver=ultimate-dashboard/assets/js/select2.full.min.js?ver=ultimate-dashboard/assets/js/summernote.min.js?ver=ultimate-dashboard/assets/js/tooltipster.bundle.min.js?ver=ultimate-dashboard/assets/js/udb-admin.js?ver=ultimate-dashboard/assets/js/udb-admin-bar.js?ver=ultimate-dashboard/assets/js/udb-admin-menu.js?ver=ultimate-dashboard/assets/js/udb-admin-pages.js?ver=ultimate-dashboard/assets/js/udb-dashboard-widgets.js?ver=ultimate-dashboard/assets/js/udb-license.js?ver=ultimate-dashboard/assets/js/udb-login.js?ver=ultimate-dashboard/assets/js/udb-widgets.js?ver=ultimate-dashboard/modules/admin-bar-editor/assets/css/admin-bar-editor.css?ver=ultimate-dashboard/modules/admin-bar-editor/assets/js/admin-bar-editor.js?ver=ultimate-dashboard/modules/admin-menu/assets/css/admin-menu.css?ver=ultimate-dashboard/modules/admin-menu/assets/js/admin-menu.js?ver=ultimate-dashboard/modules/admin-pages/assets/css/admin-pages.css?ver=ultimate-dashboard/modules/admin-pages/assets/js/admin-pages.js?ver=ultimate-dashboard/modules/dashboard-widgets/assets/css/dashboard-widgets.css?ver=ultimate-dashboard/modules/dashboard-widgets/assets/js/dashboard-widgets.js?ver=ultimate-dashboard/modules/login-customizer/assets/css/login-customizer.css?ver=ultimate-dashboard/modules/login-customizer/assets/js/login-customizer.js?ver=ultimate-dashboard/modules/login-redirect/assets/js/login-redirect.js?ver=ultimate-dashboard/modules/white-label/assets/css/white-label.css?ver=ultimate-dashboard/modules/white-label/assets/js/white-label.js?ver=

HTML / DOM Fingerprints

CSS Classes
udb-user-udb-role-heatbox-adminhas-headerudb-widgetsudb-dashboard-widget-title-wrapperudb-login-customizer-paneludb-admin-bar-wrapper+3 more
HTML Comments
<!-- Ultimate Dashboard Pro is active --><!-- Ultimate Dashboard Free is active --><!-- Ultimate Dashboard Admin Bar Editor Module --><!-- Ultimate Dashboard Admin Menu Editor Module -->+5 more
Data Attributes
data-udb-widget-iddata-udb-widget-typedata-udb-custom-cssdata-udb-custom-js
JS Globals
udb_admin_bar_editor_varsudb_admin_menu_editor_varsudb_admin_pages_varsudb_dashboard_widgets_varsudb_login_customizer_varsudb_white_label_vars+1 more
REST Endpoints
/wp-json/udb/v1/widgets/wp-json/udb/v1/settings/wp-json/udb/v1/admin-menu/wp-json/udb/v1/admin-bar/wp-json/udb/v1/login-customizer
FAQ

Frequently Asked Questions about Ultimate Dashboard – Custom WordPress Dashboard