2 votes

Bitdefender Analyse Web Chiffrée bloque les Appels Same-Site Api

Je dispose d'une configuration simple et sécurisée avec les mêmes sites et les mêmes origines, comme suit :

Frontend : https://www.example.com API : https://api.example.com

Sur les deux domaines, nous utilisons des certificats SSL délivrés par Amazon (AWS ACM)

Certains de nos clients ont Bitdefender Total Security installé, ce qui bloque les appels d'API à notre propre API, même un simple appel GET qui ne nécessite aucun échange de crédentials/cookies sophistiqué.

J'ai découvert que Bitdefender supprime l'en-tête access-control-allow-origin dans la requête XHR réelle; l'appel OPTIONS à l'API a toujours correctement l'en-tête.

Lorsque je désactive la fonction "Prévention des menaces en ligne > Protection Web > Analyse Web chiffrée" dans Bitdefender et redémarre Chrome, tout fonctionne comme prévu et l'appel GET à l'API renvoie correctement access-controll-allow-origin=https://www.example.com

Le problème ne se produit pas non plus si l'API est sur le même domaine, comme https://www.example.com/api, ce qui suggère qu'il s'agit également d'un comportement lié à CORS de la part de Bitdefender.

En lisant la description de cette fonctionnalité, j'ai pensé que peut-être Bitdefender n'aimait pas nos certificats et j'ai remplacé nos certificats AWS par des certificats LetsEncrypt ; même pas un certificat générique ; toujours le même problème.

J'ai également remarqué que Bitdefender remplace notre certificat par son propre certificat local, agissant comme un homme du milieu, probablement pour analyser les demandes, je suppose.

Ce que je ne comprends pas, c'est que par exemple www.imdb.com a une configuration similaire avec leur api.graphql.imdb.com et ils utilisent également les certificats AWS.

Mais, pour une raison quelconque, leurs certificats ne sont pas remplacés et leur en-tête access-controll-allow-origin n'est pas supprimé dans leurs requêtes API.

Les seules différences que j'ai pu repérer jusqu'à présent entre nous et IMDB, c'est qu'ils utilisent TLS 1.3 dans leurs requêtes et nous utilisons TLS 1.2 (via AWS API Gateway)

L'aide en ligne que j'ai trouvée jusqu'à présent suggère uniquement de demander au client de désactiver cette fonctionnalité dans Bitdefender sur leur site, ce que je trouve difficile à accepter si ce type de configuration fonctionne pour IMDB (bien, peut-être qu'ils sont sur liste blanche de Bitdefender)

J'ai également signalé à Bitdefender une identification de menace comme "Faux positif", mais je n'ai rien reçu en retour de cela.

D'autres idées de ce que je peux chercher ?

0voto

Björn Grambow Points 121

L'équipe de Bitdefender a été très utile. Il s'est avéré que lorsque Bitdefender est actif, il rétrograde vers le protocole http/1.1. Notre serveur ne renvoyait pas l'en-tête "Access-Control-Allow-Origin" pour http/1 mais seulement pour http/2. J'ai pu facilement déboguer cela même sans Bitdefender en utilisant curl avec le drapeau --http1.1 activé, ou en démarrant Chrome avec --disable-http2. Nous utilisons AWS API Gateway dans notre configuration et après quelques recherches supplémentaires, j'ai découvert qu'AWS analyse les en-têtes de requête légèrement différemment pour http/1.

headers.Origine vs. headers.Origine

Nous utilisons la valeur de l'origine pour créer les en-têtes de réponse corrects, et comme nous attendions en minuscules, nous ne pouvions tout simplement pas trouver la valeur. Oui, juste une lettre qui m'a pris des jours. En ajoutant simplement cette solution de secours, cela a fonctionné :

const origin = headers["origin"] || headers ["Origin"]

Merci Bitdefender pour l'astuce!

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X