Perché il metodo OPTIONS non dovrebbe essere consentito su un server HTTP?

13

Perché il metodo OPTIONS non dovrebbe essere consentito su un server HTTP?

    
posta Tanaji Padwal 03.10.2016 - 08:26
fonte

2 risposte

34

Una parte essenziale della sicurezza è ridurre la superficie di attacco rimuovendo qualsiasi funzionalità che non è necessaria. Di solito questa è anche una funzionalità che è meno ben testata e quindi potrebbe essere un vettore per attacchi inaspettati. Per esempio ci potrebbero essere restrizioni / autorizzazioni nell'applicazione web che sono specifici per GET, POST e che ignorano altri metodi. D'altra parte una parte del codice delle applicazioni potrebbe ignorare il metodo di richiesta e quindi l'accesso alle risorse protette potrebbe essere possibile utilizzando metodi di richiesta non protetti. Pertanto la rimozione di OPZIONI, TESTA, TRACCIA ecc. Ha senso nel caso in cui questi non vengano utilizzati.

Tuttavia, OPTION potrebbe essere necessario in connessione con CORS per consentire richieste di origine incrociata. In questo caso la sua rimozione influirebbe sulla funzionalità e quindi non dovrebbe essere rimossa.

In generale è una cattiva idea solo i metodi di richiesta lista nera che potrebbero essere un problema. Invece dovrebbe essere fatto un elenco bianco, cioè consentire solo i metodi di richiesta che sono noti per essere gestiti correttamente dall'applicazione.

    
risposta data 03.10.2016 - 08:44
fonte
4

Altri hanno sottolineato che si desidera limitare la superficie di attacco e essere consapevoli che alcuni siti Ajax utilizzano legittimamente le OPZIONI. Ad ogni modo, volevo condividere un'esperienza recente con te.

Abbiamo testato un sito e scoperto che era vulnerabile al caricamento di file eseguibili. In parole povere, puoi caricare un file JSP come immagine del profilo, quindi eseguire il file JSP e assumere il controllo del server.

Il primo tentativo del client di una correzione ha bloccato il recupero del JSP con una richiesta GET. Tuttavia, abbiamo scoperto che era ancora possibile eseguire il JSP utilizzando una richiesta OPTIONS. Non ottieni l'output JSP, ma è facile codificare il JSP per riconnettersi con un meccanismo fuori banda.

In questo caso, consentire OPTIONS ha permesso di compromettere un server remoto.

R ha commentato che non è OPTIONS in difetto. Questo è vero, è colpa della codifica in difetto. Tuttavia, se OPTIONS è stato disabilitato come misura difensiva, questo sito non sarebbe stato sfruttabile.

    
risposta data 03.10.2016 - 13:59
fonte

Leggi altre domande sui tag