Y a-t-il un risque à traiter des ressources statiques via un protocole SSL compressé à partir d'un domaine tiers?


2

par exemple.

curl -v -H 'Accept-Encoding: gzip' 'https://cdnjs.cloudflare.com/ajax/libs/Colors.js/1.2.2/colors.min.js' 

Comme vous pouvez le voir, le résultat est gzippé. Mon hypothèse est car ils servent de domaine de tiers, il est sûr pour moi. Je dois seulement désactiver quand il est servi de mon propre domaine, non?

+2

Devrait être sûr puisque le contenu du fichier n'est pas secret. Le CRIME a seulement brisé la confidentialité, pas l'authenticité. 13 août. 132013-08-13 18:17:02

12

Notez d'abord que vous êtes et non en utilisant la compression au niveau SSL, mais la compression au niveau HTTP: il existe un en-tête HTTP qui décrit le mode de compression. La compression est appliquée à la réponse HTTP uniquement au corps, c'est-à-dire au fichier colors.min.js, à l'exclusion de toute autre chose, en particulier des cookies HTTP ou d'autres valeurs similaires.

La compression est dangereuse lorsqu'elle est appliquée sur valeurs secrètes et l'attaquant a la possibilité d'obtenir de nombreux exemples de données compressées avec le même secret répété dans chacun d'eux, mais aussi avec des variantes. En particulier lorsque l'attaquant parvient à insérer des données choisies par lui dans la séquence de données qui est compressée.

Dans le cas que vous montrez, il n'y a pas de données secrètes du tout; la séquence de données compressée est un morceau de Javascript complètement public. Compression est abusé en attaques par sa capacité à fuir des informations sur les données contenu à travers les données longueur (et la longueur n'est pas protégé par un chiffrement ultérieur). Si les données sources sont complètement publiques, il n'y a pas d'information à divulguer, et donc pas d'attaque.

(Bien que colors.min.js est public, vous voulez toujours obtenir HTTPS, non pas pour la confidentialité mais pour intégrité:. Vous voulez empêcher les attaquants actifs de changer le code Javascript à la volée)

Même si les données compressées n'étaient pas publiques, un fichier statique pourrait encore être servi avec compression, car la compression est déterministe et produirait exactement la même séquence d'octets à chaque fois, donc, en particulier, toujours la même longueur - rien à apprendre pour le attaquant.

  0

Merci, je suis un peu confus par la compression SSL et la compression HTTP, 1. Y a-t-il un exemple de site public utilisant la compression SSL? Peut-il être vérifié via curl? 2. Je suppose que la compression HTTP nuit également à la sécurité si les données sont secrètes, n'est-ce pas? 14 août. 132013-08-14 03:54:42

  0

La compression SSL a été désactivée la plupart du temps à la suite de l'attaque CRIME. Je ne pense pas que "curl" le montrerait; C'est très interne à la bibliothèque SSL. 'openssl s_client' vous dira si le serveur autorise la compression, mais comme les navigateurs web modernes ne le supportent plus, il ne sera pas utilisé en pratique. 14 août. 132013-08-14 10:44:40

  0

La compression au niveau HTTP peut faire mal lorsque ce qui est compressé contient à la fois des données secrètes et des données choisies par l'attaquant, dans le même corps de réponse. Apparemment, cela peut arriver dans un site Web; soi-disant "attaque BREAK" semble être une démonstration d'une telle chose. Cela dépend du site Web et de sa structure. Généralement, les "pages statiques" peuvent être compressées en toute sécurité, car, en étant statiques, elles n'incluent pas les données choisies par l'attaquant. 14 août. 132013-08-14 10:47:27

  0

donc je pense que la plupart des compression SSL est désactivée par défaut dans la plupart des serveurs, mais la compression HTTP (via SSL) est toujours très populaire, donc nous devrions aussi la désactiver aussi? 15 août. 132013-08-15 09:11:23

+1

Vous pouvez conserver la compression pour tout ce qui n'est pas en SSL. Pour les objets protégés par SSL, vous pouvez conserver la compression en toute sécurité pour les pages statiques; pour tout ce qui est généré dynamiquement, eh bien ... ça dépend. Donc, le _generic_ safe est de désactiver la compression au niveau HTTP pour toutes les pages dynamiques servies sur SSL. 15 août. 132013-08-15 11:05:22

  0

Merci, alors je peux dire que Yahoo semble avoir des problèmes car ils retournent le contenu gzip sur SSL pour leur page de connexion? curl -I -H 'Accept-Encoding: gzip' 'https://login.yahoo.com/config/login' 16 août. 132013-08-16 16:16:37

+1

Ils ont un problème _potential_. Le diable est dans les détails. Voir [ce site] (http://breachattack.com/): pour abuser de la compression HTTP dans une attaque, le site doit proposer une page qui contient un secret que l'attaquant cherche après, _et_ reflète certaines données que l'attaquant peut choisir. Cela peut ou non s'appliquer à la page de connexion de Yahoo. 16 août. 132013-08-16 17:32:23