J'essaie d'atténuer notre vulnérabilité à l' attaque de secours Poodle SSL 3.0 . Nos administrateurs ont déjà commencé à désactiver SSL au profit de TLS pour les connexions entrantes vers nos serveurs. Et nous avons également conseillé à notre équipe de désactiver SSL dans leurs navigateurs Web. Je regarde maintenant notre base de code .NET, qui initie des connexions HTTPS avec divers services via System.Net.HttpWebRequest . Je pense que ces connexions pourraient être vulnérables à une attaque MITM si elles permettent le retour de TLS vers SSL. Voici ce que j'ai déterminé jusqu'à présent. Quelqu'un pourrait-il vérifier cela pour vérifier que j'ai raison? Cette vulnérabilité est toute nouvelle, je n'ai donc pas encore vu de conseils de Microsoft sur la façon de l'atténuer dans .NET:
Les protocoles autorisés pour la classe System.Net.Security.SslStream, qui sous-tendent la communication sécurisée dans .NET, sont définis globalement pour chaque AppDomain via la propriété System.Net.ServicePointManager.SecurityProtocol .
La valeur par défaut de cette propriété dans .NET 4.5 est
Ssl3 | Tls
(bien que je ne trouve pas de documentation pour le sauvegarder.) SecurityProtocolType est une énumération avec l'attribut Flags, donc c'est un OU au niveau du bit de ces deux valeurs. Vous pouvez vérifier cela dans votre environnement avec cette ligne de code:Console.WriteLine (System.Net.ServicePointManager.SecurityProtocol.ToString ());
Cela devrait être remplacé par juste
Tls
, ou peutTls12
- être , avant de lancer des connexions dans votre application:System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
Important: Étant donné que la propriété prend en charge plusieurs indicateurs au niveau du bit, je suppose que SslStream ne se repliera pas automatiquement vers d'autres protocoles non spécifiés pendant la négociation. Sinon, quel serait l'intérêt de supporter plusieurs drapeaux?
Mise à jour sur TLS 1.0 vs 1.1 / 1.2:
Selon l'expert en sécurité de Google, Adam Langley, TLS 1.0 s'est avéré plus tard vulnérable à POODLE s'il n'était pas implémenté correctement , vous devriez donc envisager de passer exclusivement à TLS 1.2.
Mise à jour pour .NET Framework 4.7 et supérieur:
Comme évoqué par le professeur Von Lemongargle ci-dessous, à partir de la version 4.7 du .NET Framework, il n'est pas nécessaire d'utiliser ce hack car le paramètre par défaut permettra au système d'exploitation de choisir la version de protocole TLS la plus sécurisée. Consultez les bonnes pratiques TLS (Transport Layer Security) avec le .NET Framework pour plus d'informations.