Publié le: Aug 17, 2020
L'équilibreur de charge d'application et Classic Load Balancer prennent désormais en charge HTTP Desync Mitigation Mode, une nouvelle fonctionnalité qui permet de protéger votre application contre les problèmes causés par HTTP Desync. Les applications Web modernes reposent généralement sur une chaîne de proxys qui garantissent une communication rapide et fiable entre clients et serveurs. Ces proxys suivent un mécanisme standard pour analyser les demandes HTTP/1.1 conformes RFC 7230. Cependant, ils peuvent avoir des différences d'interprétation en ce qui concerne l'analyse des requêtes non conformes. Ces différences d'interprétation peuvent causer un état Desync dans lequel différents proxys de la chaîne peuvent désapprouver les limites de requêtes, et en conséquence ne pas traiter la même requête. Ceci peut entraîner l'abandon de messages arbitraires, qui sont susceptibles d'être ajoutés à la demande suivante dans la queue et dissimulés dans le backend. La dissimulation de requêtes peut donc rendre les applications vulnérables à la queue de requêtes ou à l'empoisonnement du cache, ce qui peut entraîner le piratage des informations d'identification ou l'exécution de commandes non autorisées.
Pour atténuer Desync, il faut notamment autoriser uniquement les requêtes strictement conformes RFC. Cependant, un grand pourcentage de requêtes concrètes comportent des caractères qui ne sont pas strictement conformes RFC. Ainsi, poursuivre la stratégie consistant à n'autoriser que les requêtes strictement conformes peut poser un risque en matière de disponibilité pour certains cas d'utilisation légitimes. Grâce à Desync Mitigation Mode, votre équilibreur de charge d'application (ALB) ou votre Classic Load Balancer (CLB) fournit une sécurité durable tout en maintenant la disponibilité et les performances de votre application. Pour ce faire, l'équilibreur de charge classifie les requêtes en fonction de leur niveau de menace à l'aide d'une bibliothèque AWS open source appelée HTTP Desync Guardian. Vous pouvez ensuite configurer votre équilibreur de charge et choisir la stratégie d'atténuation appropriée suivant les exigences de sécurité de votre application. Avec cette fonctionnalité, votre équilibreur de charge d'application ou votre Classic Load Balancer atténue les menaces liées aux vulnérabilités HTTP pesant sur votre application en avant comme en arrière-plan de l'équilibreur de charge.
Avec Desync Mitigation Mode, les clients peuvent choisir parmi les trois modes suivants : défensif, strict et surveillance. Dans le mode défensif, l'équilibreur de charge effectue trois tâches spécifiques. Premièrement, il autorise votre application à recevoir les requêtes sûres, indépendamment de leur conformité ou non à la norme RFC 7230. Deuxièmement, il bloque les requêtes non conformes RFC qui représentent des menaces de sécurité connues. Troisièmement, il ferme les connexions client et en amont, quelles que soient les limites keep-alive HTTP applicables aux requêtes ambigües. Les requêtes ambigües sont celles qui ne sont pas conformes RFC 7230 et qui peuvent causer un état Desync, car elles peuvent être diversement interprétées par différents proxys ou serveurs Web. Le mode défensif est choisi comme mode par défaut, car il procure une atténuation automatique et durable contre HTTP Desync, tout en maintenant la disponibilité de votre application. Vous pouvez choisir le mode strict si vous souhaitez garantir que votre application affiche uniquement les requêtes conformes RFC 7230. Pour finir, vous avez également la possibilité de configurer le mode surveillance, si vous souhaitez que votre équilibreur de charge envoie toutes les requêtes qu'elle reçoit, indépendamment de leur classification, vers l'application sous-jacente.
Tous les trois modes fournissent des métriques CloudWatch relatives à l'équilibreur de charge d'application et au Classic Load Balancer, ce qui vous donne la visibilité sur le niveau général de menace entre votre trafic et votre application. L'équilibreur de charge d'application fournit également des journaux d'accès. Vous pouvez les activer en vue d'une analyse par demande détaillée afin de déterminer les menaces que posent vos clients à votre application.