Gevoelige informatielek: OAuth2 clientgeheim blootgesteld in admin-instellingen (niet gemaskeerd)

Probleembeschrijving

Tijdens een beveiligingsbeoordeling van onze aangepaste Discourse-implementatie hebben we een mogelijke openbaarmaking van gevoelige informatie gevonden in de Admin > Instellingen-interface met betrekking tot OAuth2 client secrets.

Details

  • Op de admin configuratiepagina worden het OAuth2 client secret (en mogelijk andere gevoelige tokens/sleutels) in platte tekst weergegeven, in plaats van gemaskeerd te zijn (bijv. met sterretjes).

  • Beheerders zijn verplicht om het platte secret rechtstreeks in de instellingen in te voeren. Iedereen met toegang tot de admin UI kan het volledige secret zien.

  • Als een aanvaller toegang krijgt (zelfs tijdelijk) tot een admin-sessie, kunnen ze gemakkelijk het client secret verkrijgen en gebruiken voor ongeautoriseerde OAuth2-tokenaanvragen of om aanvragen naar externe services te vervalsen.

Beveiligingsimpact

  • Blootstelling van secrets in platte tekst in de admin UI verhoogt het risico op het lekken van inloggegevens.

  • Het ontbreken van maskering is niet in lijn met beveiligingsbest practices voor het omgaan met secrets.

  • De secrets/tokens kunnen worden misbruikt voor privilege-escalatie, impersonatie of verdere aanvallen tegen geĆÆntegreerde services.

Vragen

  • Is er een plan om gevoelige velden zoals OAuth2 secrets te maskeren in de admin instellingen UI (bijv. weergeven als ****** met de optie om indien nodig te onthullen)?

  • Zijn er aanbevolen benaderingen of plugins om de bescherming van gevoelige inloggegevens in Discourse-implementaties te verbeteren?

  • Is dit probleem eerder besproken? Zijn er workarounds beschikbaar tot een officiĆ«le oplossing?

Bedankt voor uw aandacht voor deze belangrijke beveiligingskwestie!

Hey @Evie_Tao
You are reporting lots of security concerns. Have you thought about reporting them on HackerOne, as it’s explained in the GitHub repository?

Security Overview Ā· discourse/discourse Ā· GitHub

2 likes

We don’t consider information disclosure to administrators a problem, but yes it should be marked as sensitive to avoid showing up unnecessariliy, the same as e.g. google_oauth2_client_secret.

This is a simple fix:

There’s a tradeoff of secrecy vs. convenience; not allowing the secrets to be unmasked in the UI would only provide an illusion of inaccessibility, there’s other ways for an admin to easily read it from the database.

However, any secrets (any site setting really) can be specified via the environment, then they won’t show up in the admin UI.

(right @pmusaraj?)

2 likes