Разрешить администраторам всегда редактировать электронные письма, даже если опция «Редактировать письмо после регистрации» отключена

Отредактировано для значительного уточнения формулировок и более продуманных критериев предложения, чтобы помочь членам сообщества лучше понять преимущества этого улучшения функции.

Обновите настройку Редактирование электронной почты, чтобы добавить дополнительные варианты того, кто может редактировать адреса электронной почты. Например, настройка может быть реализована следующим образом:

  • Все пользователи
  • Только пользователи (обычные администраторы или модераторы не могут это сделать без использования консоли Rails или изменения настройки)
  • Только сотрудники
  • Только администраторы

Если настройка включена (что является значением по умолчанию), добавьте защитный механизм режима суперпользователя (Sudo-Mode) для выполнения действия от имени администратора (не от имени пользователя, которому принадлежит редактируемая учётная запись). Это позволит внедрить эту настройку с соблюдением ключевых моментов, упомянутых ниже, обеспечив защиту от нежелательных изменений.

Обоснование/Почему это необходимо

Если вы хотите отключить эту настройку, например, чтобы контролировать изменения (пользователи должны запрашивать изменение, вы выполняете его по соображениям безопасности или по другим причинам), но при этом вам всё же нужно отредактировать адрес электронной почты: при отключённой настройке даже администраторы не смогут редактировать адреса электронной почты.

Именно здесь возникает новая проблема, если применим один или несколько случаев использования.

На данный момент для редактирования адресов электронной почты пользователей у вас есть два варианта: 1) включить настройку во вкладке и быстро отредактировать адрес, или 2) открыть консоль Rails и вручную изменить адрес.

Для большинства администраторов в повседневной работе это может привести к нежелательным техническим сложностям, если полагаться исключительно на выполнение всего через консоль Rails, когда такая настройка уже существует.

Почему дополнительные защитные механизмы могут помочь реализовать эту функцию:

  • Если настройка оставлена включённой из-за технических соображений, скомпрометированные пользователи могут изменить свои адреса электронной почты.
  • Администраторы могут допускать ошибки или вносить несанкционированные изменения.
  • Пользователи будут чувствовать себя в безопасности, зная, что лица с таким доступом защищены от злонамеренных изменений.

Обсуждение этой темы в последний раз проводилось в 2015 году. И хотя верно, что редактировать адреса электронной почты можно, сделать это через интерфейс администратора нельзя: система предлагает перейти к представлению настроек пользователя. Я делаю это, но даже будучи администратором, не могу изменить адрес из-за ограничений данной настройки.

1 лайк

Да, я категорически не согласен. Хотя ваш конкретный случай использования может казаться вам достаточно простым, реализация простого переопределения в интерфейсе для этого создала бы значительный риск безопасности ради крайне незначительного удобства.

Трение — это функция безопасности!

Таким образом, неудобство необходимости использовать консоль Rails или переключать настройку на весь сайт на самом деле является критически важной функцией безопасности, поскольку это действует как «тормоз безопасности» и вынуждает администратора выполнять намеренный процесс с высоким уровнем трения для очень чувствительной операции.

Смена адреса электронной почты пользователя равносильна передаче ключей от его аккаунта, поскольку новый адрес может быть использован для инициирования сброса пароля, что фактически блокирует оригинального пользователя и дает новому владельцу адреса полный контроль.

Основные векторы атак, которые предотвращает это трение:

  • Компрометация аккаунтов администраторов! — это самый значительный риск. Если злоумышленник получает доступ к аккаунту администратора (через фишинг, повторное использование паролей и т. д.), простая кнопка или переключатель в интерфейсе позволили бы им незаметно и легко захватить любой другой аккаунт пользователя, включая аккаунты других сотрудников; требование доступа к оболочке через консоль Rails обеспечивает мощный уровень защиты.

  • Социальная инженерия! — это открывает двери для социальной инженерии. Злонамеренный пользователь может выдать себя за легитимного пользователя и убедить администратора изменить для него адрес электронной почты; опять же, текущий процесс с высоким уровнем трения заставляет администратора гораздо более тщательно проверять или рассматривать подлинность запроса.

  • Угроза изнутри — злонамеренный администратор может злоупотребить этой функцией для захвата аккаунтов.

Для таких редких, но высокорисковых административных действий консоль Rails подходит, потому что она гарантирует, что лицо, выполняющее действие, имеет доступ к серверу, а не к скомпрометированной сессии. Кроме того, действие является намеренным, требует конкретных технических знаний (и фиксируется в истории командной оболочки).

1 лайк

Благодарю за беспокойство, но, кажется, вы неверно понимаете общую картину. В вашем аргументе о «безопасности» есть серьёзная дыра.

Вы уже можете редактировать электронные письма, если эта настройка включена; а включена она по умолчанию.

Компрометация учётных записей администраторов! — это самый значительный риск. Если злоумышленник получит доступ к учётной записи администратора (через фишинг, повторное использование паролей и т. д.), простая кнопка в интерфейсе или переключатель позволят ему тихо и легко захватить любую другую учётную запись пользователя, включая учётные записи других сотрудников; требование доступа к оболочке через rails console обеспечивает мощный уровень защиты.

Если учётная запись администратора скомпрометирована, злоумышленник может просто включить существующую сегодня настройку и сделать всё, о чём вы упомянули.

Изменение адреса электронной почты пользователя равносильно передаче ключей от его учётной записи, поскольку новый адрес можно использовать для инициирования сброса пароля, что фактически заблокирует доступ оригинального пользователя и передаст полный контроль владельцу нового адреса.

Для таких редких, но высокорискованных административных действий rails console подходит, так как он гарантирует, что действие выполняет человек, имеющий доступ к серверу, а не скомпрометированная сессия. Кроме того, действие является преднамеренным и требует определённых технических знаний (а также фиксируется в истории командной оболочки).

Не всегда, и как я уже сказал в первом сообщении: вы можете просто включить и выключить эту настройку, чтобы активировать функцию редактирования. Единственная проблема заключается в том, что включение настройки, которая по умолчанию должна быть выключена [хотя сейчас включена], открывает возможность для пользователей, не являющихся администраторами, редактировать свои адреса электронной почты во время выполнения простого редактирования.

1 лайк

Хорошо, теперь я понимаю вашу точку зрения касательно того, что происходит при переключении этой настройки.

Я всё ещё твёрдо убеждён, что в данном случае лучше использовать консоль Rails. Возможно, также можно создать плагин.

Когда настройка ВКЛЮЧЕНА

«Разрешить пользователям изменять адрес электронной почты после регистрации»

Это включает возможность редактирования для ВСЕХ пользователей (и администраторов). Простое предложение по улучшению: разрешить выбор настройки, например: «Только администраторы», «Администраторы + пользователи» или «Пользователи».

Если я просто включу это, то появится возможность для любого [или администраторов] изменять адрес электронной почты пользователя на всём сайте, пока функция активна.

Добавление настройки, которая уже частично существует, с ограничением только для администраторов, позволит реализовать простую функциональность, которая уже существует, избегая ситуации «всё или ничего».

1 лайк

Хм, подумав об этом подробнее, я склоняюсь к тому, что лучше выбрать метод с высоким порогом сложности (pseudo high friction), поскольку данная настройка считается «небезопасной» в окне редактирования, и не у всех администраторов есть доступ к консоли Rails (например, на хостинговых сайтах).

Возможно, стоит реализовать следующее: когда администратор пытается сохранить новый адрес электронной почты, должно появляться модальное окно, требующее повторного ввода его собственного пароля для подтверждения действия (или пройти 2FA-проверку, если она включена). Само собой разумеется, что это действие должно подробно регистрироваться в журналах персонала. Я считаю, что всё ещё необходима какая-то обязательная проверка пользователя, чтобы дать легитимному пользователю возможность сообщить о захвате аккаунта. Кроме того, на новый адрес электронной почты следует отправить уведомление, подтверждающее изменение? :thinking:

1 лайк

Да, эта функция определённо нуждается в доработке и обновлениях. Сейчас, если её включить, администратор может редактировать email любого аккаунта без дополнительных ограничений. Мне нравится ваша идея с 2FA или паролем.

1 лайк

Спасибо, что заставили меня задуматься о функции email editable. Это интересная и довольно сложная тема для обсуждения! :slight_smile:

1 лайк

Я внёс правки в оригинальный пост, чтобы значительно улучшить формулировки и добавить дополнительные рекомендации по обеспечению надёжности изменений :wink: Я считаю, что в целом это существенно улучшит ситуацию.

1 лайк