[wp-trac] [WordPress Trac] #42967: New admin email change featuer should be rolled back

WordPress Trac noreply at wordpress.org
Sat Dec 23 16:03:17 UTC 2017


#42967: New admin email change featuer should be rolled back
-----------------------------+------------------------------
 Reporter:  johndeebdd       |       Owner:
     Type:  feature request  |      Status:  new
 Priority:  normal           |   Milestone:  Awaiting Review
Component:  Security         |     Version:  4.9
 Severity:  normal           |  Resolution:
 Keywords:  close            |     Focuses:
-----------------------------+------------------------------

Comment (by johndeebdd):

 > Here's the current flow:
 >
 > - User is registered with the email address `username at hotmail.com`
 > - User goes into their profile page in the WordPress admin
 > - User edits the ''email'' field and changes it to `username at gmail.com`
 > - WordPress sends an email to **`username at gmail.com`** with a link to
 click to confirm the address change
 > - User clicks the link in the email to change their address
 > - WordPress sends an email to `username at hotmail.com` with information
 that the address has now been changed to `username at gmail.com`
 >
 > No access to the old address is required, it is merely included in the
 flow as a courtesy (and security precaution, in case of a malicious change
 the user is now made aware of that change) to inform of an already
 completed change.
 >
 > ---
 >
 > Honestly, for the vast majority of users, this behavior isn't a problem
 (and for many, probably expected as most services you encounter these days
 require email verification on edits), as such I would say this is a
 `wontfix` issue, as the behavior can be controlled via filters and actions
 for those unhappy with the implementation, but will leave it open for
 final input by the implementing deveoper.
 >
 > The `send_email_change_email` filter will allow you to prevent sending
 the email, and also provides you with the data the user supplied, this can
 be used to override things and store the new email straight away.

 You're looking at it from the point of view of a shared hosting user.
 You're not looking at it from the point of view of a sys admin who has to
 install WordPress themselves. How can WordPress SEND an email if you don't
 have access to the OLD email? What if the OLD email was setup as
 "dummy at local.dev"? You don't need external SMTP to install WordPress, but
 as of now, you do infact need it to CHANGE the email. So you can install
 it fine, just not change it [yet you can run arbitrary code]. That's weird
 - and new, and a unique case in WordPress.

 Here is how WordPress is setup:
 - WordPress receives an HTTP request and is activated without wp-config
 and goes into install mode.
 - DB creds are entered, and the system asks the admin for an email WHICH
 IS NOT CONFIRMED, JUST ACCEPTED. I think this is the misunderstanding. You
 DO NOT need to confirm the initial admin email, and this is absolutely by
 design. i.e. localhost installs, single page apps. There are MANY uses of
 WordPress besides blogging on a shared host with email setup. I was
 brought here because this cause a problem in one of my apps.

 The CHANGE:
 Previously, admins could change the site email without a confirmation. For
 instance, they STILL can create users without email confirmation. The
 change is that they cannot change the site email. This is absolutely
 different from other emails, and doesn't make sense. It was made by
 someone who doesn't understand that on single sites, there is no "super
 admin", just "admin" who is the penultimate. The change assumes there is
 someone besides the "admin" who could control outgoing SMTP, this isn't
 the case.

 Questions:
 -------------------------------------
 What is the benefit to create this new restriction?
 Do you understand this is a NEW thing, that previously an admin could
 operate WordPress without restriction, and now this additional restriction
 has been made?
 -------------------------------------
 Do you understand this creates a new class of settings. This is the ONLY
 setting in WordPress which has this characteristic:
         -This setting cannot be changed by the logged in user with
 capabilities to in fact change it
         -This same user [a logged in single site admin] CAN run arbitrary
 code
         -This same user CAN still actually affect to change the setting,
 they just need to know PHP - this is a SERIOUS security flaw. A co-admin
 might assume another admin couldn't change the site email, since he can't.
 But the co-admin would be wrong! This is the only example of this in the
 system.
         -This setting requires external send SMTP to be changed by a
 logged in admin
 -------------------------------------
 Do you understand this is a CHANGE, that previously no setting existed
 with the characteristic?
 -------------------------------------
 Do you understand that if you install WordPress without external SMTP, you
 can never change the admin email within WordPress [but not really, because
 you can run arbitrary code]?

--
Ticket URL: <https://core.trac.wordpress.org/ticket/42967#comment:9>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list