Una traccia dello stack di un'applicazione server è vulnerabile?

15

In relazione a la mia domanda su programmers.stackexchange.com .

È un rischio per la sicurezza che l'applicazione visualizzi una traccia stack completa per l'utente quando le cose si bloccano? Alcuni controlli di sicurezza che la nostra applicazione ha superato dicono che lo è. Non sono d'accordo. Non vedo come questo possa aiutare un aggressore in alcun modo.

Certo, c'è il principio di "raccontare il meno possibile", ma anche questo deve essere bilanciato con il buon senso, e penso che ci sia un maggiore beneficio di avere queste informazioni facilmente disponibili rispetto al rischio di abusarne .

Ci sono stati studi su questo? Alcuna prova che suggerirebbe che questo è un rischio per la sicurezza? O si tratta di un'applicazione eccessiva del principio di cui sopra?

    
posta Vilx- 23.08.2012 - 16:29
fonte

3 risposte

15

Una traccia dello stack è una perdita di informazioni che rivela informazioni sulla tua implementazione. Pur non essendo una vulnerabilità seria, consente a un utente malintenzionato di ottenere determinate informazioni sul proprio sistema. Potrebbe anche consentire loro di utilizzare un approccio basato sul debug per sfruttare i difetti del tuo sito.

Si potrebbe sostenere che la traccia dello stack di per sé è una vulnerabilità, dal momento che nessuno dovrebbe essere in grado di bloccare il tuo sito in questo modo.

Ignorando le implicazioni per la sicurezza, non è proprio la fiducia che induce i clienti a vedere uno stacktrace. Assumeranno che il sito è rotto (il che è, in realtà) e si preoccupano se la loro transazione funzionerà, o forse addirittura penseranno che il sito sia stato violato.

Ulteriori letture: È una vulnerabilità mostrare messaggi di eccezione in una pagina di errore?

    
risposta data 23.08.2012 - 16:40
fonte
6

Una traccia dello stack di solito non è una vulnerabilità di per sé. Tuttavia, può contenere alcune informazioni sulla struttura del software, che possono essere utili per l'autore dell'attacco (ad es., Rivelando versioni di database, nomi di tabelle, nomi di file di codice e così via). Pertanto, di solito non è una buona idea rivelare la traccia dello stack.

Il modo standard per gestirlo è: disabilitare le tracce dello stack sui server di produzione. Puoi attivare tracce di stack su build di debug che non sono esposte al mondo esterno, per aiutarti a eseguire il debug degli arresti anomali, ma quando lo trasferisci in produzione, disattiva le tracce di stack.

Il sito web web2py ha un ancora più elegante modo di affrontare questo problema . web2py non rivela mai le tracce dello stack ai visitatori. Invece, se si verifica un'eccezione non rilevata, web2py costruisce un nuovo "ticket", rivela un numero di ticket al visitatore e salva i dettagli dell'errore (ad es., Traccia dello stack, ecc.) Associati a quel ticket in un database interno. I visitatori ordinari non possono vedere i dettagli del biglietto, ma un amministratore può. Un amministratore può consultare l'elenco di tutti i ticket. Inoltre, dato un numero di ticket, l'amministratore può cercare i dettagli di quel ticket e vedere, ad esempio, la traccia dello stack. Dal punto di vista della sicurezza, questo è un ottimo approccio.

(Incidentalmente, web2py è un'elegante struttura che ha messo molta attenzione nel rendere la sicurezza predefinita e semplice per gli sviluppatori. web2py cerca di eliminare le insidie della sicurezza e rendere il servizio sicuro per impostazione predefinita, nella misura in cui può farlo. Se stai creando un servizio web che deve essere sicuro, dai un'occhiata a web2py!)

    
risposta data 24.08.2012 - 05:57
fonte
2

Sì, lo è.

Il migliore è quello che ho trovato che ha rivelato ALL le credenziali del database su un server web. Sì, è possibile accedere in remoto al DB ed eseguire query su di esso. Il che probabilmente significa che qualcuno potrebbe fare qualcosa di sgradevole come DROP "databasename" o, in modo più appropriato, sottrarre tutti i dati nel database.

Un altro messaggio che ho segnalato al proprietario era una sessione registrata in cui la traccia dello stack mostrava il nome di accesso dell'amministratore e la password non crittografata.

La maggior parte delle tracce di stack sono solo perdite di informazioni che aiuteranno qualcuno nelle loro nefande attività, non così sfacciate come i primi due esempi forniti.

    
risposta data 24.08.2012 - 04:23
fonte

Leggi altre domande sui tag