Des chercheurs des universités de Hambourg et de Cologne
une nouvelle technique d'attaque contre les rĂ©seaux de distribution de contenu et les proxies de mise en cache â (Cache-Poisoned Denial-of-Service). Cette attaque permet de provoquer un refus d'accĂšs Ă une page en empoisonnant le cache.
Le problĂšme est que les CDN mettent en cache non seulement les requĂȘtes rĂ©ussies, mais aussi les situations oĂč le serveur http renvoie une erreur. En rĂšgle gĂ©nĂ©rale, lorsque des problĂšmes surviennent lors de la formation des requĂȘtes, le serveur renvoie une erreur 400 (Bad Request), Ă l'exception de l'IIS, qui renvoie une erreur 404 (Not Found) pour des en-tĂȘtes trop volumineux. La norme autorise la mise en cache uniquement des erreurs avec les codes 404 (Not Found), 405 (Method Not Allowed), 410 (Gone) et 501 (Not Implemented), mais certains CDN mettent Ă©galement en cache les rĂ©ponses avec le code 400 (Bad Request), qui dĂ©pend de la requĂȘte envoyĂ©e.
Les attaquants peuvent provoquer un retour d'erreur « 400 Bad Request » sur la ressource d'origine en envoyant une requĂȘte avec des en-tĂȘtes HTTP correctement formatĂ©s. Ces en-tĂȘtes ne sont pas pris en compte par les CDN, donc les informations sur l'impossibilitĂ© d'accĂ©der Ă la page seront mises en cache, et toutes les autres requĂȘtes correctes des utilisateurs jusqu'Ă l'expiration du dĂ©lai peuvent entraĂźner un affichage de l'erreur, bien que le site d'origine fournisse sans problĂšme le contenu.
Pour forcer le serveur HTTP à renvoyer une erreur, trois variantes d'attaque ont été proposées :
- HMO (HTTP Method Override) â l'attaquant peut réécrire la mĂ©thode de demande d'origine via les en-tĂȘtes « X-HTTP-Method-Override », « X-HTTP-Method » ou « X-Method-Override », qui sont pris en charge par certains serveurs, mais pas par les CDN. Par exemple, il est possible de changer la mĂ©thode d'origine « GET » en une mĂ©thode « DELETE » interdite sur le serveur ou en une mĂ©thode « POST » non applicable pour des contenus statiques ;
- HHO (HTTP Header Oversize) â l'attaquant peut ajuster la taille de l'en-tĂȘte de maniĂšre Ă ce qu'il dĂ©passe la limite du serveur d'origine, mais ne soit pas soumis aux restrictions du CDN. Par exemple, Apache httpd limite la taille de l'en-tĂȘte Ă 8 Ko, tandis que le CDN Amazon Cloudfront autorise des en-tĂȘtes allant jusqu'Ă 20 Ko ;
- HMC (HTTP Meta Character) â l'attaquant peut insĂ©rer des caractĂšres spĂ©ciaux dans la demande (\n, \r, \a), qui sont considĂ©rĂ©s comme non valides sur le serveur d'origine, mais ignorĂ©s dans le CDN.
Le CDN CloudFront, utilisé par Amazon Web Services (AWS), a été particuliÚrement touché par l'attaque. Actuellement, Amazon a déjà résolu le problÚme en interdisant la mise en cache des erreurs, mais il a fallu plus de trois mois aux chercheurs pour obtenir la mise en place de protections. Le problÚme a également affecté Cloudflare, Varnish, Akamai, CDN77 et
Fastly, mais l'attaque Ă travers eux est limitĂ©e aux serveurs cibles utilisĂ©s avec IIS, ASP.NET, et . , que potentiellement 11 % des domaines du ministĂšre amĂ©ricain de la DĂ©fense, 16 % des URL de la base HTTP Archive et environ 30 % des 500 plus grands sites selon le classement Alexa pourraient ĂȘtre exposĂ©s Ă cette attaque.
Comme mĂ©thode de contournement pour bloquer l'attaque du cĂŽtĂ© du site, il est possible d'utiliser l'en-tĂȘte « Cache-Control: no-store », interdisant la mise en cache des rĂ©ponses. Dans certains CDN, comme
CloudFront et Akamai, il est possible de dĂ©sactiver la mise en cache des erreurs au niveau des paramĂštres du profil. Des pare-feu pour applications web (WAF, Web Application Firewall) peuvent Ă©galement ĂȘtre utilisĂ©s pour la protection, mais ils doivent ĂȘtre dĂ©ployĂ©s du cĂŽtĂ© du CDN avant les hĂŽtes qui effectuent la mise en cache.
Source : opennet.ru
