[wp-trac] [WordPress Trac] #46744: Prevent default_role being set to dangerous values

WordPress Trac noreply at wordpress.org
Mon Apr 1 02:30:46 UTC 2019

#46744: Prevent default_role being set to dangerous values
 Reporter:  dd32                |      Owner:  (none)
     Type:  enhancement         |     Status:  new
 Priority:  normal              |  Milestone:  Awaiting Review
Component:  Options, Meta APIs  |    Version:
 Severity:  normal              |   Keywords:
  Focuses:                      |
 A number of vulnerabilities have occurred in plugins which allow setting
 arbitrary options, similar to #46705 I think it's worth preventing
 `default_role` being set to `administrator` while `users_can_register` is

 I'd suggest it being implemented as a run-time filter on the
 `default_role` value so that plugins can disable the functionality (plus
 some UI magic), but basically:
 function filter_default_role( $default_role ) {
   // $users_can_register = ....
   if ( $users_can_register && get_role( $default_role )->has_cap(
 'manage_options' /* or other cap deemed useful, `publish_posts` could also
 be used */ ) ) {
     $default_role = 'subscriber';
   return $default_role;

 #46705 may render this invalid, but this would protect against an options-
 overwrite bug having much more impact (where a bot overwrites the above
 values, gets an administrator account, adds PHP to theme files or installs
 malicious plugins, etc).

Ticket URL: <https://core.trac.wordpress.org/ticket/46744>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list