Impostazioni e plugin installati esposti nella pagina di accesso

Ciao a tutti,

Sto cercando di risolvere un problema sulla pagina di login dei nostri server Discourse. Attualmente, la pagina di login espone le impostazioni del server e i plugin installati. Questo è visibile se si esamina il codice sorgente della pagina o si ispeziona la pagina di login. Come possiamo rimuovere o nascondere queste informazioni dalla pagina?

Esempio di codice del plugin esposto:

<link href="[/stylesheets/poll_desktop_2_aaf730f938a1162e369c60cef250ac2b3bf97c05.css?__ws=discourse.bob.host](https://discourse.bob.host/stylesheets/poll_desktop_2_aaf730f938a1162e369c60cef250ac2b3bf97c05.css?__ws=discourse.bob.host)" media="all" rel="stylesheet" data-target="poll_desktop" data-theme-id="3"/>

Esempio di impostazioni esposte:

<div class="hidden" id="data-preloaded" data-preloaded="{\"site\":\"{\\\"periods\\\":[\\\"all\\\",\\\"yearly\\\",\\\"quarterly\\\",\\\"monthly\\\",\\\"weekly\\\",\\\"daily\\\"],\\\"filters\\\":[\\\"latest\\\",\\\"unread\\\",\\\"new\\\",\\\"read\\\",\\\"posted\\\",\\\"bookmarks\\\"],\\\"user_fields\\\":[],\\\"auth_providers\\\":[]}",\"siteSettings\":\"{\\\"default_locale\\\":\\\"en\\\",\\\"title\\\":\\\"bobDiscourse\\\",\\\"short_site_description\\\":\\\"bob Integration Discourse\\\",\\\"contact_email\\\":\\\"infrastructure@bob.com\\\",\\\"contact_url\\\":\\\"https://bob.com\\\",\\\"logo\\\":\\\"/uploads/default/original/1X/96eba37e4fb0f19f8f04e09ad31d1bf14111e122.png\\\",\\\"logo_small\\\":\\\"/uploads/default/original/1X/96eba37e4fb0f19f8f04e09ad31d1bf14111e122.png\\\",\\\"digest_logo\\\":\\\"\\\",\\\"mobile_logo\\\":\\\"\\\",\\\"large_icon\\\":\\\"/uploads/default/original/1X/96eba37e4fb0f19f8f04e09ad31d1bf14111e122.png\\\",\\\"favicon\\\":\\\"/uploads/default/original/1X/96eba37e4fb0f19f8f04e09ad31d1bf14111e122.png\\\",\\\"apple_touch_icon\\\":\\\"\\\",\\\"allow_user_locale\\\":false,\\\"support_mixed_text_direction\\\":false,\\\"suggested_topics\\\":5,\\\"ga_universal_tracking_code\\\":\\\"\\\",\\\"ga_universal_domain_name\\\":\\\"auto\\\",\\\"gtm_container_id\\\":\\\"\\\",\\\"top_menu\\\":\\\"categories|latest|new|unread|top\\\",\\\"post_menu\\\":\\\"read|like|share|flag|edit|bookmark|delete|admin|reply\\\",\\\"post_menu_hidden_items\\\":\\\"flag|bookmark|edit|delete|admin\\\",\\\"share_links\\\":\\\"twitter|facebook|email\\\",\\\"desktop_category_page_style\\\":\\\"categories_with_featured_topics\\\",\\\"category_colors\\\":\\\"BF1E2E|F1592A|F7941D|9EB83B|3AB54A|12A89D|25AAE2|0E76BD|652D90|92278F|ED207B|8C6238|231F20|808281|B3B5B4|E45735\\\",\\\"category_style\\\":\\\"bullet\\\",\\\"enable_mobile_theme\\\":true,\\\"relative_date_duration\\\":30,\\\"fixed_category_positions\\\":false,\\\"fixed_category_positions_on_create\\\":false,\\\"enable_badges\\\":true,\\\"enable_badge_sql\\\":false,\\\"enable_whispers\\\":false,\\\"push_notifications_prompt\\\":true,\\\"vapid_public_key_bytes\\\":\\\"4|170|50|111|127|76|83|223|177|204|254|218|146|40|188|175|8|235|76|71|207|133|49|159|219|30|44|72|138|250|138|188|150|192|11|194|246|81|233|148|144|142|143|243|38|251|133|5|10|219|95|160|9|246|246|186|2|162|200|182|219|187|92|28|26\\\",\\\"invite_only\\\":true,\\\"login_required\\\":true,\\\"must_approve_users\\\":false,\\\"enable_local_logins\\\":true,\\\"enable_local_logins_via_email\\\":true,\\\"allow_new_registrations\\\":true,\\\"enable_signup_cta\\\":true,\\\"enable_sso\\\":false,\\\"sso_overrides_email\\\":false,\\\"sso_overrides_avatar\\\":false,\\\"min_username_length\\\":3,\\\"max_username_length\\\":20,\\\"unicode_usernames\\\":false,\\\"min_password_length\\\":10,

Tutte queste impostazioni sono necessarie sul client e, in ogni caso, possono essere dedotte, quindi non sono davvero un segreto.

Qual è esattamente il tuo problema con questo?

Grazie Richard,

Dalla tua risposta sembra che si tratti di una configurazione standard e che il rischio sia stato valutato e ritenuto non problematico.

Io ritenevo invece che fosse un problema, perché:

Quando un attaccante cerca vulnerabilità nei siti web e modi per sfruttarle, inizia raccogliendo quante più informazioni possibili. Le informazioni presenti nel codice del sito permettono all’attaccante di passare da zero conoscenza a una conoscenza più approfondita senza richiedere grandi sforzi.

Ad esempio, le impostazioni forniscono all’attaccante indicazioni molto chiare su come è stato configurato il modello di sicurezza, consentendogli di indirizzare l’attacco in modo mirato. La lunghezza minima dell’utente, la lunghezza massima del nome utente e la lunghezza minima della password sono tutti dati utili per restringere i possibili vettori di attacco. È attivo l’SSO? È abilitato o meno il 2FA?

Queste informazioni sono inoltre utili per individuare server Discourse online potenzialmente mal configurati. Un Google Dork può essere utilizzato per trovare server Discourse che potrebbero essere insicuri o facilmente compromessi.

Se queste informazioni non fossero state disponibili in formato JSON nel codice sorgente, probabilmente ci vorrebbe circa un’ora per scrivere uno script che le estragga comunque. Dopotutto, tentando di registrarsi, un validatore di moduli fornirebbe comunque informazioni come la lunghezza del nome utente e della password.

Non credo che nessuna di queste informazioni riveli alcun tipo di problema relativo a una configurazione errata o a un’impostazione insicura.

Discourse è open source e le impostazioni predefinite sono comunque documentate pubblicamente.

Chiaramente non è un vantaggio sufficiente per guadagnare un premio per hacker.

Non sono sicuro di come si sia passati dalla mia domanda originale, in cui volevo ridurre la quantità di informazioni presenti sulla pagina di accesso dei nostri siti Discourse, a una bounty per gli hacker. Ciò di cui chiedo non è una vulnerabilità nel codice. Si tratta semplicemente di più informazioni di quante mi senta a mio agio nel vedere su una pagina di accesso, e volevo trovare un modo per rimuoverle.

Attieniti per favore all’argomento.

Ciao Richard,

la mia opinione su questo punto è diversa dalla tua, ma questa è la mia posizione e capisco che altre persone possano avere un punto di vista diverso. Sento che ci siamo un po’ allontanati dalla richiesta iniziale discutendo potenziali minacce che potrebbero o meno rappresentare un rischio.

Esiste un modo per ridurre la visibilità di queste informazioni o non è possibile? Se non è possibile, procedo oltre e possiamo chiudere questa richiesta di assistenza.