Permitir que administradores sempre possam editar e-mails quando "Editar e-mail após cadastro" estiver desativado

Editado para esclarecimentos significativos e critérios de sugestão mais bem pensados, a fim de ajudar melhor os membros da comunidade a entenderem os benefícios dessa melhoria de recurso.

Atualize a configuração Email Editável para permitir opções adicionais sobre quem pode editar endereços de e-mail, conforme o design da configuração, por exemplo:

  • Todos os Usuários
  • Apenas Usuários [Administradores Normais ou Moderadores não podem, a menos que usem o console do Rails ou alterem a configuração.]
  • Apenas Funcionários
  • Apenas Administradores

Se a configuração estiver ativada [o que é o padrão], introduza uma proteção no modo Sudo para executar a ação como administrador [não como o usuário ao qual a conta editada pertence]; Isso permite que essa configuração seja introduzida com alguns pontos-chave mencionados abaixo, garantindo segurança contra alterações indesejadas.

Razão/Por que isso precisa ser feito

Se você deseja desativar a configuração porque deseja ter controle sobre isso (por exemplo, eles precisam solicitar a alteração, você faz isso por prática de segurança ou por outro motivo), mas, por algum motivo, precisa editar o e-mail; Com essa configuração desativada, mesmo administradores não podem editar os e-mails.

É aí que surge um novo problema, se um ou mais casos de uso se aplicarem.

Para editar e-mails de usuários atualmente; Você pode 1) Ativá-la em outra aba e editar rapidamente o e-mail, ou 2) Abrir o console do Rails e alterar manualmente o e-mail.

Para a maioria dos administradores nas operações diárias regulares, isso pode levar a um desafio técnico indesejado. se você depender exclusivamente de fazer tudo no Console do Rails, quando a configuração já existe.

Por que proteções extras poderiam ajudar a tornar esse recurso uma realidade:

  • Se deixada ativada devido a uma implicação técnica, usuários comprometidos poderiam ter seus e-mails alterados.
  • Administradores podem cometer erros ou realizar alterações não autorizadas.
  • Os usuários sentirão que aqueles com tal acesso estão protegidos contra alterações maliciosas.

Isso foi discutido pela última vez em 2015, e, embora seja verdade que você pode editar e-mails, não é possível editá-los na visualização de administrador; o sistema indica que você deve ir para a visualização de preferências do usuário, o que eu faço, e, mesmo como administrador, não consigo devido às restrições dessa configuração.

1 curtida

Sim, discordo muito fortemente disso. Embora seu caso de uso específico possa parecer bastante direto para você, implementar uma substituição simples na interface do usuário para isso introduziria um risco de segurança significativo por um ganho de conveniência muito pequeno.

A fricção é um recurso de segurança!

Portanto, a inconveniência de ter que usar o console do Rails ou alternar uma configuração em todo o site é, de fato, um recurso de segurança crítico, pois atua como um “freio de segurança” e força um administrador a realizar um processo deliberado e de alta fricção para uma operação muito sensível.

Alterar o endereço de e-mail de um usuário é equivalente a entregar as chaves da conta dele, já que o novo e-mail pode ser usado para acionar uma redefinição de senha, efetivamente bloqueando o usuário original e dando ao novo dono do e-mail controle total.

Alguns vetores de ataque primários que essa fricção previne:

  • Comprometimento de contas de administrador! - Este é o risco mais significativo. Se um invasor obtiver acesso à conta de um administrador (por meio de phishing, reutilização de senha, etc.), um simples botão na interface do usuário ou alternador permitiria que ele assumisse silenciosa e facilmente qualquer outra conta de usuário, inclusive de outros funcionários; a exigência de acesso ao shell via console do Rails fornece uma forte camada de segurança.

  • Engenharia social! - Isso abre as portas para a engenharia social. Um usuário mal-intencionado poderia se passar por um usuário legítimo e persuadir um administrador a alterar o endereço de e-mail dele; novamente, o processo atual de alta fricção torna muito mais provável que o administrador verifique ou considere a autenticidade da solicitação.

  • Ameaça interna - Um administrador mal-intencionado poderia abusar desse recurso para assumir contas.

Para esse tipo de ação administrativa infrequente e de alto risco, o console do Rails é apropriado porque garante que a pessoa que realiza a ação tenha acesso ao servidor e não uma sessão comprometida. Além disso, a ação é deliberada e exige conhecimento técnico específico (e é registrada no histórico do shell).

1 curtida

Agradeço a preocupação, mas acho que você pode estar entendendo mal o quadro geral aqui. Há até uma falha grave no seu argumento sobre “segurança”.

Você já pode editar os e-mails se essa configuração estiver ativada; e ela está ativada por padrão.

Comprometer contas de administrador! — este é o risco mais significativo. Se um atacante obtiver acesso à conta de um administrador (por meio de phishing, reutilização de senha, etc.), um simples botão ou alternador na interface permitiria que ele assumisse silenciosa e facilmente qualquer outra conta de usuário, inclusive de outros funcionários; a exigência de acesso ao shell via rails console oferece uma camada robusta de segurança.

Se uma conta de administrador for comprometida, o intruso pode simplesmente ativar a configuração que já existe hoje e fazer as coisas que você mencionou.

Alterar o endereço de e-mail de um usuário equivale a entregar as chaves da conta, já que o novo e-mail pode ser usado para acionar uma redefinição de senha, efetivamente bloqueando o usuário original e dando ao novo dono do e-mail controle total.

Para esse tipo de ação administrativa rara e de alto risco, o rails console é adequado porque garante que a pessoa que executa a ação tenha acesso ao servidor e não uma sessão comprometida. Além disso, a ação é deliberada e exige conhecimento técnico específico (e é registrada no histórico do shell).

Nem sempre, e como disse na postagem inicial: basta alternar a configuração de ligar para desligar para ativar a função de edição. O único problema é que alternar a configuração, que deveria estar desativada [mas está ativada por padrão], introduz a possibilidade de usuários que não são administradores editarem seu e-mail enquanto uma edição simples está sendo feita.

1 curtida

Ok, entendi seu ponto agora sobre quando essa configuração é alternada.

Ainda acho fortemente que o console do Rails é o caminho a seguir aqui. Talvez um plugin seja possível.

Quando a configuração estiver ATIVADA

“Permitir que os usuários alterem seu endereço de e-mail após o registro”

Isso habilita a edição para TODOS os usuários (e administradores). A solicitação de recurso simples é: permitir que a configuração seja definida para — por exemplo: “Apenas Administradores”, “Administradores + Usuários” ou “Usuários”.

Se eu apenas “ativar”, isso habilita a capacidade em todo o site para qualquer pessoa [ou administradores] alterar o e-mail de um usuário. Enquanto estiver habilitado.

Adicionar uma configuração, que já parcialmente existe, para se aplicar apenas aos administradores permite que uma funcionalidade simples, que já existe, não seja apenas um cenário de Tudo ou Nada.

1 curtida

Ok, pensando mais nisso, acho que um método de UI com alta fricção via sudo pode ser o caminho a seguir, já que essa configuração é “insegura” na janela de edição e nem todos os administradores têm acesso ao console do Rails (pensando em sites hospedados, por exemplo).

Talvez algo como: quando um administrador tentar salvar o novo e-mail, um diálogo modal deve aparecer, obrigando-o a reinserir sua própria senha para confirmar a ação (ou um desafio de 2FA, se estiver habilitado). Fica claro que essa ação deve ser registrada em detalhes nos logs da equipe. Acredito que uma verificação obrigatória do usuário ainda seja necessária de alguma forma, para dar a um usuário legítimo a chance de reportar uma invasão de conta, e uma notificação também deve ser enviada para o novo endereço de e-mail confirmando a alteração? :thinking:

1 curtida

Sim, o recurso definitivamente precisa de atenção e atualizações. No momento, se você o ativar, pode, como administrador, editar o e-mail de qualquer conta de usuário, sem proteções adicionais. Gosto da sua ideia de 2FA ou senha.

1 curtida

Obrigado por me fazer pensar sobre o recurso de email editável. Essa é uma discussão interessante e um tanto complexa para considerar! :slight_smile:

1 curtida

Fiz uma edição na postagem original para melhorar significativamente a redação e incluir aquelas sugestões extras sobre proteger a alteração :wink: Acredito que isso melhorará as coisas de forma significativa no geral.

1 curtida