Divulgação de informações sensíveis: segredo do cliente OAuth2 exposto nas configurações de admin (não mascarado)

Descrição do Problema

Durante uma revisão de segurança de nossa implantação personalizada do Discourse, encontramos uma potencial divulgação de informações sensíveis na interface Admin

Configurações em relação aos segredos do cliente OAuth2.

Detalhes

  • Na página de configuração do administrador, o segredo do cliente OAuth2 (e potencialmente outros tokens/chaves sensíveis) são exibidos em texto simples, em vez de serem mascarados (por exemplo, com asteriscos).

  • Os administradores são obrigados a inserir diretamente o segredo em texto simples nas configurações. Qualquer pessoa com acesso à UI de administração pode ver o segredo completo.

  • Se um invasor obtiver acesso (mesmo que temporariamente) a uma sessão de administrador, ele poderá obter facilmente o segredo do cliente e usá-lo para solicitações não autorizadas de token OAuth2 ou para forjar solicitações a serviços de terceiros.

Impacto na Segurança

  • A exposição de segredos em texto simples na UI de administração aumenta o risco de vazamento de credenciais.

  • A falta de mascaramento não está alinhada com as melhores práticas de segurança para o manuseio de segredos.

  • Os segredos/tokens podem ser abusados para escalonamento de privilégios, personificação ou ataques adicionais contra serviços integrados.

Perguntas

  • Existe um plano para mascarar campos sensíveis como segredos OAuth2 na UI de configurações de administrador (por exemplo, exibir como ****** com a opção de revelar, se necessário)?

  • Existem abordagens recomendadas ou plugins para aprimorar a proteção de credenciais sensíveis em implantações do Discourse?

  • Este problema já foi discutido anteriormente? Existem soluções alternativas disponíveis até uma correção oficial?

Obrigado pela sua atenção a esta importante preocupação de segurança!

Olá @Evie_Tao

Você está relatando muitas preocupações de segurança. Você já pensou em relatá-las no HackerOne, como explicado no repositório do GitHub?

2 curtidas

Não consideramos a divulgação de informações para administradores um problema, mas sim, deveria ser marcada como sensível para evitar que apareça desnecessariamente, da mesma forma que, por exemplo, google_oauth2_client_secret.

Esta é uma correção simples:

Há um equilíbrio entre sigilo e conveniência; não permitir que os segredos sejam desmascarados na interface do usuário forneceria apenas uma ilusão de inacessibilidade, existem outras maneiras para um administrador lê-lo facilmente do banco de dados.

No entanto, quaisquer segredos (qualquer configuração do site, na verdade) podem ser especificados através do ambiente, então eles não aparecerão na interface do administrador.

(certo @pmusaraj?)

2 curtidas