User Role Editor Security & Risk Analysis

wordpress.org/plugins/user-role-editor

User Role Editor WordPress plugin makes user roles and capabilities changing easy. Edit/add/delete WordPress user roles and capabilities.

700K active installs v4.64.6 PHP 7.3+ WP 4.4+ Updated Dec 2, 2025
accesseditorrolesecurityuser
97
A · Safe
CVEs total2
Unpatched0
Last CVEDec 16, 2024
Safety Verdict

Is User Role Editor Safe to Use in 2026?

Generally Safe

Score 97/100

User Role Editor has a strong security track record. Known vulnerabilities have been patched promptly. It's a solid choice for most WordPress installations.

2 known CVEsLast CVE: Dec 16, 2024Updated 5mo ago
Risk Assessment

The User Role Editor plugin v4.64.6 presents a mixed security posture. While it demonstrates several good security practices, such as a high percentage of SQL queries using prepared statements and a substantial number of capability checks, significant concerns remain. The presence of an unprotected AJAX handler represents a critical entry point that could be exploited without proper authentication or authorization, especially when combined with the use of the dangerous `unserialize` function. The taint analysis, though limited in scope, revealed a flow with an unsanitized path, hinting at potential vulnerabilities if this path is exploited.

The plugin's vulnerability history, with two high-severity CVEs historically, specifically related to Cross-Site Request Forgery (CSRF) and Improper Authorization, is a strong indicator of past weaknesses in handling user input and access control. The fact that these were high-severity issues, even though currently patched, suggests a pattern of potential vulnerabilities in these areas. The limited output escaping (only 27% properly escaped) further exacerbates these risks, potentially leading to Cross-Site Scripting (XSS) vulnerabilities if unsanitized data is displayed to users.

In conclusion, despite some strengths in its implementation, the User Role Editor plugin has notable weaknesses. The unprotected AJAX endpoint, coupled with the `unserialize` function and historical vulnerability patterns, warrants careful consideration. The low rate of proper output escaping is a significant concern for potential XSS vulnerabilities. While the plugin is currently free of unpatched CVEs, the identified code signals and historical context suggest a moderate to high-security risk that requires ongoing vigilance and potential remediation.

Key Concerns

  • Unprotected AJAX handler
  • Dangerous function: unserialize
  • Flows with unsanitized paths
  • Low percentage of properly escaped output
  • Two historical high severity CVEs
Vulnerabilities
2 published

User Role Editor Security Vulnerabilities

CVEs by Year

1 CVE in 2016
2016
1 CVE in 2024
2024
Patched Has unpatched

Severity Breakdown

High
2

2 total CVEs

CVE-2024-12293high · 8.8Cross-Site Request Forgery (CSRF)

User Role Editor <= 4.64.3 - Cross-Site Request Forgery to Privilege Escalation

Dec 16, 2024 Patched in 4.64.4 (1d)

User Role Editor <= 4.24 - Authenticated Privilege Escalation

Apr 4, 2016 Patched in 4.25 (2850d)
Version History

User Role Editor Release Timeline

v4.64.6Current9 files changed
v4.64.57 files changed
v4.64.46 files changed
v4.64.31 CVE14 files changed
v4.64.21 CVE11 files changed
v4.64.11 CVE5 files changed
v4.641 CVE8 files changed
v4.63.31 CVE7 files changed
v4.63.21 CVE9 files changed
v4.63.11 CVE4 files changed
v4.631 CVE6 files changed
v4.621 CVE12 files changed
v4.61.21 CVE6 files changed
v4.61.11 CVE5 files changed
v4.611 CVE14 files changed
v4.60.21 CVE5 files changed
v4.60.11 CVE3 files changed
v4.601 CVE9 files changed
v4.59.11 CVE8 files changed
v4.591 CVE
Code Analysis
Analyzed Mar 16, 2026

User Role Editor Code Analysis

Dangerous Functions
1
Raw SQL Queries
1
11 prepared
Unescaped Output
74
27 escaped
Nonce Checks
3
Capability Checks
43
File Operations
0
External Requests
0
Bundled Libraries
0

Dangerous Functions Found

unserialize$blog_roles = unserialize( $value );includes\classes\editor.php:473

SQL Query Safety

92% prepared12 total queries

Output Escaping

27% escaped101 total outputs
Data Flows · Security
1 unsanitized

Data Flow Analysis

3 flows1 with unsanitized paths
caps_to_remove_html (includes\classes\role-view.php:113)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
1 unprotected

User Role Editor Attack Surface

Entry Points1
Unprotected1

AJAX Handlers 1

authwp_ajax_ure_ajaxincludes\classes\user-role-editor.php:210
WordPress Hooks 45
actionadmin_noticesincludes\classes\admin-notice.php:24
actionplugins_loadedincludes\classes\bbpress.php:19
actionload-users.phpincludes\classes\grant-roles.php:25
actionrestrict_manage_usersincludes\classes\grant-roles.php:33
actionadmin_headincludes\classes\grant-roles.php:34
actionadmin_enqueue_scriptsincludes\classes\grant-roles.php:35
filtereditable_rolesincludes\classes\lib.php:243
filtereditable_rolesincludes\classes\protect-admin.php:24
filteruser_has_capincludes\classes\protect-admin.php:27
actionpre_user_queryincludes\classes\protect-admin.php:30
filterviews_usersincludes\classes\protect-admin.php:32
actioninitincludes\classes\task-queue.php:121
filteradditional_capabilities_displayincludes\classes\user-other-roles.php:28
actionadmin_print_styles-user-edit.phpincludes\classes\user-other-roles.php:29
actionadmin_print_styles-user-new.phpincludes\classes\user-other-roles.php:30
actionadmin_enqueue_scriptsincludes\classes\user-other-roles.php:31
actionedit_user_profileincludes\classes\user-other-roles.php:32
actionuser_new_formincludes\classes\user-other-roles.php:33
actionprofile_updateincludes\classes\user-other-roles.php:34
actionwpmu_activate_userincludes\classes\user-other-roles.php:38
actionadded_existing_userincludes\classes\user-other-roles.php:39
actionuser_registerincludes\classes\user-other-roles.php:41
actionwp_initialize_siteincludes\classes\user-role-editor.php:108
actioninitincludes\classes\user-role-editor.php:112
actionadmin_initincludes\classes\user-role-editor.php:118
actioninitincludes\classes\user-role-editor.php:119
actionadmin_menuincludes\classes\user-role-editor.php:122
actionnetwork_admin_menuincludes\classes\user-role-editor.php:126
filterplugin_row_metaincludes\classes\user-role-editor.php:132
actionrestrict_manage_usersincludes\classes\user-role-editor.php:150
actionadmin_headincludes\classes\user-role-editor.php:151
actionadmin_footerincludes\classes\user-role-editor.php:152
actionadmin_enqueue_scriptsincludes\classes\user-role-editor.php:174
actionuser_row_actionsincludes\classes\user-role-editor.php:175
filterall_pluginsincludes\classes\user-role-editor.php:176
filtermap_meta_capincludes\classes\user-role-editor.php:183
filterenable_edit_any_user_configurationincludes\classes\user-role-editor.php:185
actionadmin_headincludes\classes\user-role-editor.php:187
filtersite_option_site_adminsincludes\classes\user-role-editor.php:189
filtereditable_rolesincludes\classes\user-role-editor.php:195
actionload-users.phpincludes\classes\user-role-editor.php:201
actioneditable_rolesincludes\classes\user-role-editor.php:212
filtereditable_rolesincludes\classes\user-role-editor.php:222
filtersite_option_site_adminsincludes\classes\user-role-editor.php:248
filtereditable_rolesincludes\classes\user-role-editor.php:933
Maintenance & Trust

User Role Editor Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedDec 2, 2025
PHP min version7.3
Downloads21.4M

Community Trust

Rating90/100
Number of ratings287
Active installs700K
Developer Profile

User Role Editor Developer Profile

Vladimir Garagulya

2 plugins · 710K total installs

73
trust score
Avg Security Score
91/100
Avg Patch Time
1426 days
View full developer profile
Detection Fingerprints

How We Detect User Role Editor

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/user-role-editor/css/editor.css/wp-content/plugins/user-role-editor/css/admin-notice.css/wp-content/plugins/user-role-editor/css/admin-users-page.css/wp-content/plugins/user-role-editor/css/user-role-editor.css/wp-content/plugins/user-role-editor/js/editor.js/wp-content/plugins/user-role-editor/js/admin-notice.js/wp-content/plugins/user-role-editor/js/user-role-editor.js/wp-content/plugins/user-role-editor/js/grant-roles.js
Script Paths
/wp-content/plugins/user-role-editor/js/editor.js/wp-content/plugins/user-role-editor/js/admin-notice.js/wp-content/plugins/user-role-editor/js/user-role-editor.js/wp-content/plugins/user-role-editor/js/grant-roles.js
Version Parameters
user-role-editor/css/editor.css?ver=user-role-editor/css/admin-notice.css?ver=user-role-editor/css/admin-users-page.css?ver=user-role-editor/css/user-role-editor.css?ver=user-role-editor/js/editor.js?ver=user-role-editor/js/admin-notice.js?ver=user-role-editor/js/user-role-editor.js?ver=user-role-editor/js/grant-roles.js?ver=

HTML / DOM Fingerprints

CSS Classes
ure-users-page-wrapperure-admin-notice-wrap
HTML Comments
Copyright 2010-2025 Vladimir GaragulyaSilence is golden, direct call is prohibitedIt seems that other copy of User Role Editor is active. Check if it's deactivated before activate this one.Project: User Role Editor plugin+2 more
Data Attributes
data-role-editor-noncedata-ure-admin-noncedata-ure-current-user-iddata-ure-grant-roles-noncedata-ure-grant-users-nonce
JS Globals
URE_Admin_NoticeURE_VERSIONURE_PLUGIN_URLURE_PLUGIN_DIRURE_PLUGIN_BASE_NAMEURE_PLUGIN_FILE+3 more
FAQ

Frequently Asked Questions about User Role Editor