I messaggi di eccezione generici dovrebbero essere considerati un rischio per la sicurezza?

5

Ad esempio, se visiti una pagina web ottieni la risposta:

Error in exception handler.

È probabile che il sito web stia utilizzando Laravel . Questa classe sarebbe divulgazione di informazioni?

Non indovino, ma ho pensato di chiedere. Ci sono opinioni contrastanti tra il nostro gruppo.

    
posta BugHunterUK 07.04.2016 - 13:43
fonte

1 risposta

3

Le eccezioni dovrebbero essere mostrate all'utente?

No.

La visualizzazione di messaggi di eccezione è una cattiva pratica. Le eccezioni dovrebbero essere utilizzate per eseguire il debug del codice, non dovrebbero essere utilizzate per visualizzare qualcosa all'utente.

Se utilizzi lo stesso meccanismo, eccezioni, per entrambe le attività, sarà molto difficile separarle. Alla fine, mostrerai un messaggio di eccezione con troppe informazioni oppure registrerai un'eccezione con informazioni insufficienti.

Inoltre, i messaggi di eccezione generalmente non offrono una buona usabilità. Perché un utente dovrebbe preoccuparsi che ci sia stato un errore nel gestore delle eccezioni? Cosa dovrebbero fare con queste informazioni? La maggior parte degli utenti non saprebbe cosa sia un gestore di eccezioni e sarebbe confusa da tale messaggio.

Queste informazioni vengono divulgate?

Come hai notato, divulghi informazioni tramite questo messaggio (stai usando Laravel). Ed è anche ricercabile tramite google, quindi se per esempio viene trovata una nuova vulnerabilità in Laravel, qualcuno può cercare su google questo messaggio di errore per trovare un sacco di installazioni di Laravel da attaccare. Ciò significa che con questo messaggio potresti teoricamente attirare l'attenzione e attirarti contro di te.

D'altro canto, divulgare il software usato (senza la versione esatta) è spesso abbastanza difficile da prevenire, e talvolta nemmeno desiderato.

È davvero una sentenza se si desidera chiamare questa divulgazione di informazioni o no. Se ad esempio prendi la definizione di CWE-200 :

An information exposure is the intentional or unintentional disclosure of information to an actor that is not explicitly authorized to have access to that information.

The information either

  1. is regarded as sensitive within the product's own functionality, such as a private message; or

  2. provides information about the product or its environment that could be useful in an attack but is normally not available to the attacker, such as the installation path of a product that is remotely accessible.

Quindi la domanda è se pensi che un utente non sia autorizzato a sapere che stai usando Laravel e se pensi che questa informazione non sia normalmente disponibile.

Conclusione

Perdite alcune informazioni, piuttosto secondarie, senza una buona ragione, che potrebbero avere un piccolo impatto sulla sicurezza e sull'usabilità.

Dovresti invece visualizzare un utile messaggio di errore, se possibile, o un messaggio di errore generico se non.

    
risposta data 07.04.2016 - 14:44
fonte

Leggi altre domande sui tag