web-dev-qa-db-fra.com

Pourquoi la méthode OPTIONS ne devrait-elle pas être autorisée sur un serveur HTTP?

Pourquoi la méthode OPTIONS ne devrait-elle pas être autorisée sur un serveur HTTP?

16
Tanaji Padwal

Un élément essentiel de la sécurité consiste à réduire la surface d'attaque en supprimant toute fonctionnalité qui n'est pas nécessaire. Habituellement, c'est également une fonctionnalité qui est moins bien testée et qui pourrait donc être un vecteur d'attaques inattendues. Par exemple, il peut y avoir des restrictions/autorisations dans l'application Web qui sont spécifiques à GET, POST et qui ignorent toutes les autres méthodes. D'un autre côté, une partie du code des applications peut ignorer la méthode de demande et ainsi l'accès aux ressources protégées pourrait être possible en utilisant des méthodes de demande non protégées, ainsi la suppression des OPTIONS, HEAD, TRACE, etc.

Mais, des OPTIONS peuvent être nécessaires en lien avec CORS pour autoriser les requêtes Cross Origin. Dans ce cas, sa suppression aurait un impact sur la fonctionnalité et ne devrait donc pas être supprimée.

En général, c'est une mauvaise idée de simplement mettre sur liste noire les méthodes de demande qui pourraient être un problème. Au lieu de cela, une liste blanche doit être effectuée, c'est-à-dire autoriser uniquement les méthodes de demande qui sont connues pour être traitées correctement par l'application.

34
Steffen Ullrich

D'autres ont souligné que vous souhaitez limiter votre surface d'attaque, et être conscient que certains sites Ajax utilisent légitimement OPTIONS. Quoi qu'il en soit, je voulais partager avec vous une expérience récente.

Nous avons testé un site et découvert qu'il était vulnérable au téléchargement de fichiers exécutables. En gros, vous pouvez télécharger un fichier JSP comme image de profil, puis exécuter le fichier JSP et prendre le contrôle du serveur.

La première tentative du client d'un correctif a bloqué la récupération du JSP avec une demande GET. Cependant, nous avons découvert qu'il était toujours possible d'exécuter le JSP à l'aide d'une demande OPTIONS. Vous n'obtenez pas la sortie JSP - mais il est facile de coder la JSP pour se reconnecter avec un mécanisme hors bande.

Dans ce cas, autoriser OPTIONS a permis un compromis sur le serveur distant.


R a commenté que ce n'était pas des OPTIONS en faute. C'est vrai, c'est un mauvais codage en faute. Cependant, si OPTIONS avait été désactivée comme mesure de défense en profondeur, ce site n'aurait pas été exploitable.

4
paj28