PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

Attention : Avast déchiffre le SSL/TLS à la volée - Liens - Choses vues, sur le web et ailleurs - Les liens de Kevin Merigot

mercredi 3 décembre 2014 à 10:36
Liens en vrac de sebsauvage > Les liens de Kevin Merigot 03/12/2014
Je confirme: C'est bien le seul moyen pour Avast (et pour tout autre logiciel de sécurité) de filtrer les malwares dans les flux HTTPS. Il n'y a pas d'autre solution.  Ça ne me choque pas.
Non ce qui me choque, par contre, c'est de voir Avast vous suggérer par popup leur service de VPN pil-poil quand vous commencez à consulter certains sites (Vous voyez très bien de quoi je parle). Là c'est nettement moins reluisant.
Ou encore de vous dire que votre ordinateur est lent et qu'ils peuvent vous l'«optimiser» pour un prix modique.
Il y a également eu une polémique sur leur toolbar navigateur (SafePrice) qui avait tendance à vous proposer des offres commerciales quand vous consultez des sites de vente en ligne (qu'Avast a rapidement désactivé face aux critiques). http://www.brad.net.nz/blog/2014/02/safeprice-avast-and-sneaky-browser-plugins/
A force de vouloir tout faire (toolbar de recommandation, contrôle à distance, VPN, sauvegarde, mise à jour des logiciels...) Avast est en train de prendre la direction de ZoneAlarm/Norton: Devenir un énorme bouzin à tout faire.
Je ne suis pas optimiste: Je pense que d'ici un an ou deux, il faudra sérieusement envisager de passer à autre chose.
(Permalink)

Liens 05/12/2014
Filtrer les flux HTTPS est l'exemple typique de la fausse bonne idée. Cela fragilise la sécurité.

J'avoue avoir été un peu obscur sur mon explication précédente, car le temps me manquait. Je vais tâcher d'être plus clair et plus complet.
Pour le prérequis de connaissances, voir ici : http://famille-michon.fr/journalgeek/2009/06/09/openssl-et-les-certificats/
Pour mémoire, SSL n'existe plus vraiment. Il est considéré comme obsolète et faible. On utilise désormais TLS. Les différences n'ont pas d'importance dans mon propos, ça fonctionne schématiquement de la même manière.

Avast réalise ici ce qu'on appelle une attaque d'homme du milieu (ou MITM : Man In The Middle), où l'homme du milieu est "gentil".
Lorsque le navigateur tente de se connecter à un serveur en HTTPS, ce n'est pas le serveur qui répond mais Avast. Celui-ci présente un certificat valide (généré), et l'autorité de certification (CA) d'Avast, valide pour cet ordinateur (car il a été installé en même temps qu'Avast). Ensuite, l'antivirus se connecte de son côté au serveur en HTTPS, de manière classique.
Ainsi :
- Le navigateur croit communiquer avec le serveur de manière sécurisée ;
- Le navigateur communique en réalité avec Avast de manière chiffrée (notez bien que je n'utilise pas le terme "sécurisé" - j'y reviendrai plus tard) ;
- Avast déchiffre le flux à la volée et l'analyse ;
- Avast communique avec le serveur de manière chiffrée.

C'est effectivement le seul moyen de déchiffrer un flux TLS et de l'analyser, mais cela ne permet certainement pas de filtrer les malwares. Faire un MITM "gentil" baisse la sécurité d'un côté, sans l'augmenter de l'autre.
Par ailleurs, ce n'est pas le rôle de l'antivirus de filtrer un flux de cette manière. Un antivirus fait partie de la couche de défense en profondeur. Le filtrage de flux doit se faire en amont, dans la défense périphérique que peu d'entre nous ont (moi y compris). Baser toute la défense sur un seul logiciel est considéré comme faible.


Pourquoi cela n'augmente pas la sécurité ?

L'argument principal de mypersonnaldata et sebsauvage est que cette "protection" permet de filtrer un malware qui téléchargerait sa charge utile (le code "virus") en HTTPS après avoir été installé.
C'est candide.

Les malwares qui sont suffisamment évolués pour cela (et ils sont loin d'être communs, car cela nécessite une équipe pour tout maintenir en état de fonctionnement, et donc des moyens financiers minimaux) sont développés en gardant en tête qu'ils fonctionneront en environnement hostile (présence d'un antivirus). L'accent est donc mis fortement sur l'évasion.
Quelques exemples d'évasion :
- Découper la charge utile, et la télécharger en plusieurs fois, chaque morceau étant analysé comme bénin par l'antivirus ;
- Identifier l'antivirus et télécharger un code qui passe sous son radar. Avec son nouveau comportement, Avast simplifie cette démarche en s'annonçant de lui-même dans sa CA. Cela permet d'éviter au malware de consulter la liste des processus (ce qui augmente le score de suspicion dans une analyse heuristique) ;
- Chiffrer la charge utile. C'est-à-dire chiffrer directement le fichier, et pas se baser sur une connexion TLS. En effet, se contenter de la connexion TLS implique de faire confiance à l'OS, or on est en environnement hostile. En chiffrant directement le fichier, on s'assure que seul le malware est capable de le déchiffrer. Suffit-il alors de bloquer tout fichier chiffré directement ? Non, car cela bloquerait aussi des comportements légitimes (par exemple : récupérer via un webmail une pièce jointe confidentielle et donc chiffrée).

L'utilisation d'HTTPS pour un malware a plutôt un but de résistance. En s'assurant que le serveur en face est bien le serveur de contrôle, il complique la tâche des experts en sécurité qui cherchent à le décortiquer.

En activant une telle option, on se sent donc en sécurité, à tort. Et on peut donc avoir involontairement un comportement plus risqué.
Très important : même si vous avez un antivirus, ne vous sentez pas en sécurité. Cela va sans dire, mais ça va mieux en le disant : sachez que les développeurs de malware aussi ont accès aux antivirus :) Et qu'ils cherchent toujours à les duper.
Attention, je ne dis pas qu'un antivirus est inutile, mais bien que cette attaque MITM n'augmente pas la sécurité (voire facilite le travail du malware évolué).


Pourquoi cela baisse la sécurité ?

Pour être sécurisée en TLS, une connexion a besoin de deux éléments : le chiffrement et l'authentification. Si l'une de ces composantes est faible ou inexistante, la connexion n'est tout simplement pas sécurisée. Le cadenas qui se trouve dans la barre d'adresse du navigateur garantit que la connexion est sécurisée : cela signifie que personne, entre le navigateur et le serveur, ne peut lire ce qu'il se passe.

Le chiffrement, c'est s'assurer que quelqu'un qui se trouve sur le passage ne verra qu'un flux inintelligible, et ne pourra pas le modifier, à moins de disposer de temps et de gros, gros moyens.
Le problème est, qu'en déchiffrant au passage, Avast casse ce comportement. Ce qui est chiffré dans le navigateur n'est plus garanti d'arriver à destination sans lecture et modification. Avast voit le flux en clair, et peut stocker les informations qui s'y trouvent, voire les modifier sans que l'on s'en aperçoive.
Pourquoi le ferait-il ? En l'état actuel, la seule chose que je vois serait l'insertion de pub dans les pages web consultées. Mais s'il se retrouve vérolé (souvenez-vous, il indique clairement aux malwares qui il est), il peut se retrouver bien malgré lui à jouer le rôle de MITM hostile, qui envoie vos identifiants, mots de passe, et numéro de CB, à qui il veut.

L'authentification est souvent oubliée et est pourtant primordiale. C'est elle qui vous permet d'être sûr que le serveur qui vous répond est bien celui qu'il prétend être. Le fonctionnement schématique est le suivant : lorsque le serveur vous présente son certificat, ce dernier est signé par une CA. Cette CA peut être signée par une autre CA, et ainsi de suite, jusqu'à une CA racine qui est enregistrée dans votre navigateur, et à qui vous faites donc confiance d'office. Avast implémente d'ailleurs son MITM en ajoutant une CA racine.

Le protocole est bien fait, ce qui fait qu'il n'y a grosso-modo que deux endroits où il est attaquable (si l'on excepte les attaques sur le protocole lui-même, raison pour laquelle SSL n'est plus sûr) : le client (navigateur), et la CA. Or, en implémentant son MITM, Avast, en plus de briser la chaîne de confiance, ajoute sur celle-ci un client et une CA, doublant ainsi la surface d'attaque. La question que je me pose est évidemment : le client ajouté est-il sans défaut ? Le protocole n'est évidemment pas si simple : il faut par exemple vérifier les listes de révocation émises par la CA. Là où les navigateurs reposent sur des bibliothèques bien connues, les antivirus (à code fermé et probablement obscurci) demandent qu'on leur fasse confiance les yeux fermés.

Le problème de déplacer l'authentification du navigateur vers l'antivirus implique aussi d'autres problèmes :
- Si je décide de ne pas faire confiance à une CA, comment je l'enlève ? Par exemple, la CA du gouvernement chinois est présente par défaut un peu partout, et ils ont déjà, "par erreur", émis des certificats valides pour Google. Je ne veux pas leur faire confiance ;
- A l'inverse, si je veux faire confiance à une autre CA, comment je l'ajoute ? L'exemple le plus connu est CACert : beaucoup l'ajoutent à leur magasin de CA (dans mon cas c'est juste théorique car je ne l'ai pas fait) ;
- Enfin, cela casse complètement un comportement qui est loin d'être dans l'écrasante majorité, mais qui est utile tout de même : l'authentification du client. TLS permet en effet au client d'authentifier le serveur, mais aussi au serveur d'authentifier le client grâce à un certificat. Cela remplace l'utilisation d'un login/mdp (c'est même plus sécurisé). C'était utilisé pour déclarer ses impôts en France il y a quelques années. Ca l'est toujours, par exemple, lorsqu'on se connecte à son compte sur le site de StartSSL.


Voilà, j'espère avoir été plus explicite.
En résumé, cette option est dangereuse, et d'autant plus qu'elle est activée par défaut. D'un côté, elle n'augmente pas la sécurité et ajoute même un risque de phishing, de l'autre, elle baisse la sécurité et casse des comportements. Pire, on se sent faussement en sécurité et on peut adopter des comportements plus risqués.
Voilà pourquoi c'est choquant.
(Permalink)