Divulgation d'informations sensibles : secret client OAuth2 exposé dans les paramètres d'administration (non masqué)

Description du problème

Lors d’une revue de sécurité de notre déploiement personnalisé de Discourse, nous avons découvert une divulgation potentielle d’informations sensibles dans l’interface Admin > Paramètres concernant les secrets clients OAuth2.

Détails

  • Dans la page de configuration d’administration, le secret client OAuth2 (et potentiellement d’autres jetons/clés sensibles) sont affichés en texte brut, au lieu d’être masqués (par exemple, avec des astérisques).

  • Les administrateurs sont tenus de saisir directement le secret en texte brut dans les paramètres. Toute personne ayant accès à l’interface d’administration peut voir le secret entier.

  • Si un attaquant obtient un accès (même temporaire) à une session d’administrateur, il pourrait facilement obtenir le secret client et l’utiliser pour des requêtes de jetons OAuth2 non autorisées ou pour usurper des requêtes à des services tiers.

Impact sur la sécurité

  • L’exposition en texte brut des secrets dans l’interface d’administration augmente le risque de fuite d’informations d’identification.

  • Le manque de masquage n’est pas conforme aux meilleures pratiques de sécurité pour la gestion des secrets.

  • Les secrets/jetons pourraient être détournés pour une escalade de privilèges, une usurpation d’identité ou d’autres attaques contre les services intégrés.

Questions

  • Y a-t-il un plan pour masquer les champs sensibles comme les secrets OAuth2 dans l’interface des paramètres d’administration (par exemple, les afficher sous forme de ****** avec la possibilité de les révéler si nécessaire) ?

  • Existe-t-il des approches recommandées ou des plugins pour améliorer la protection des informations d’identification sensibles dans les déploiements Discourse ?

  • Ce problème a-t-il déjà été discuté ? Des solutions de contournement sont-elles disponibles en attendant une correction officielle ?

Merci de votre attention à cette importante préoccupation de sécurité !

Salut @Evie_Tao
Vous signalez de nombreuses préoccupations de sécurité. Avez-vous pensé à les signaler sur HackerOne, comme expliqué dans le dépôt GitHub ?

2 « J'aime »

Nous ne considérons pas la divulgation d’informations aux administrateurs comme un problème, mais oui, cela devrait être marqué comme sensible pour éviter de s’afficher inutilement, tout comme par exemple google_oauth2_client_secret.

C’est une correction simple :

Il y a un compromis entre le secret et la commodité ; ne pas permettre de démasquer les secrets dans l’interface utilisateur ne fournirait qu’une illusion d’inaccessibilité, il existe d’autres moyens pour un administrateur de les lire facilement dans la base de données.

Cependant, tous les secrets (tous les paramètres du site en fait) peuvent être spécifiés via l’environnement, ils ne s’afficheront alors pas dans l’interface d’administration.

(n’est-ce pas @pmusaraj ?)

2 « J'aime »