SSL : une faille majeure dans iOS et OS X

Christophe Laporte |

La faille de sécurité relative à la vérification de la connexion SSL est sans doute l’une des plus graves dans l’histoire d’Apple. Avant d’entrer dans les détails, nous ne pouvons que vous encourager à faire de toute urgence la mise à jour de tous vos terminaux iOS. Au passage, elle n'est pas problématique pour le jailbreak.

La sortie des mises à jour de sécurité pour iOS 6.1.x et 7.0.x fait l’objet d’une belle polémique depuis hier. En proposant ce correctif, Apple a officialisé cette faille en quelque sorte et rendu publique son existence. Comment a-t-elle pu faire cela tout en laissant OS X dans le noir et dans une moindre mesure ses testeurs sous 7.1 ? Précisons d’emblée que celle-ci touche « seulement » les personnes sous Mavericks.

Pourquoi cette faille est dangereuse

Revenons-en à la faille : Transport Layer Security (TLS), et son prédécesseur Secure Sockets Layer (SSL) sont des protocoles permettant de sécuriser les échanges sur Internet. Le problème dans l’implémentation d’Apple, c’est que le système de vérification de l’authentification SSL est en proie à un gros bogue d’une étonnante maladresse (on reviendra sur ce point un peu plus tard).

Qu’est-ce que cela signifie concrètement ? Une personne malintentionnée peut exploiter ce bogue très simplement. Elle peut initier une connexion soi-disant sécurisée en disant « je suis Google.com, regarde mon certificat ». Normalement, grâce à un système de clé, le système qui initie la connexion est en mesure de vérifier l’authenticité de ce certificat. Malheureusement, le système de vérification n’étant pas du tout opérationnel, la personne malintentionnée peut sans la moindre difficulté se faire passer pour quelqu’un d’autre.

Cette faille peut être très facilement exploitée par exemple avec un hot-spot Wi-Fi. En se débrouillant bien, son propriétaire peut par exemple déchiffrer vos échanges de données. Ce n'est qu'un exemple (le plus parlant), mais les angles d'attaque sont très nombreux.

Une erreur de programmation à peine croyable

Ce qui est hallucinant dans cette affaire, c’est que cette faille est particulièrement grossière. Spécialiste de ce genre de questions, Adam Langley a publié le code fautif en question, celui-ci étant open source. Il est relatif à SecureTransport, l’implémentation d’Apple donc pour SSL et TLS.

static OSStatus

SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,

uint8_t *signature, UInt16 signatureLen)

OSStatus err;

...

if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)

goto fail;

if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)

goto fail;

goto fail;

if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)

goto fail;

...

fail:

SSLFreeBuffer(&signedHashes);

SSLFreeBuffer(&hashCtx);

return err;

}

Si vous développez un peu, même sans tout comprendre, vous comprendrez aisément le problème. Ces quelques lignes de code sont donc censées vérifier l’authenticité de la connexion SSL. Le problème se situe dans la vérification de la seconde condition if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)

Il y a, à la suite de cette condition, deux goto fail. Si le premier obéit à une condition, le second s’exécute directement. Résultat, tout programme faisant appel à cette routine, pour vérifier l’authenticité d’une connexion SSL, obtient une réponse « bidon ».

L’erreur est tellement grossière que certains spécialistes en sécurité se demandent s’il ne s’agit pas d’un acte malveillant. À l’heure où nous écrivons ces lignes, personne ne sait si cette faille a été exploitée par un hacker malintentionné ou par des organismes de type NSA. Dans sa note de sécurité parue hier, Apple ne crédite personne.

Que faire pour se prémunir de cette faille ?

Ceux qui aiment bidouiller peuvent toujours installer ce correctif réalisé par l’expert en sécurité Stefan Esser. Installez-le uniquement si vous savez ce que vous faites. Et en sachant que celui-ci provoque des incompatibilités avec certains programmes.

Sur OS X, cette faille touche seulement 10.9 et ses « descendants ». Si cette faille est grave, il ne convient pas de céder à la panique pour autant. On peut imaginer qu’Apple proposera un correctif au plus tard en début de semaine prochaine.

D’ici là, pour minimiser les risques, passez-vous de Safari et de Mail. Chrome et Firefox, par exemple, ne sont apparemment pas concernés par ce problème, ils utilisent leur propre implémentation de SSL. Le souci c’est que ce problème n’est pas limité à Safari et Mail, un grand nombre de programmes font appel à des connexions sécurisées. Une page de test a d’ailleurs été mise au point pour savoir si votre navigateur est concerné ou non par cette faille. Si votre configuration est sécurisée, vous devriez obtenir un message d’erreur. Sinon, vous obtiendrez un court message vous confirmant que votre navigateur est bel et bien vulnérable. Enfin, évitez d’utiliser des connexions Internet qui ne sont pas dignes de confiance comme les hot-spot Wi-Fi.

Tags
avatar Theibaud | 

Je crois plutôt à un acte délibéré et malveillant.

avatar falemaster | 

Quand vous dites que ca n'affecte pas le jailbreak cela veut dire qu'en mettant a jour on ne perd pas le jailbreak ?? Ce serait etonnant quand meme ...

avatar patrick86 | 

" cela veut dire qu'en mettant a jour on ne perd pas le jailbreak ??"

Oui

avatar jowe_19 | 

Le bug concerne les bêtas d'iOS 7.1 ?

avatar Karamazow | 

C'est hallucinant !

avatar Domsou | 

Voilà pourquoi une règle de base de programmation en C est de toujours utiliser les accolades pour les blocs...

avatar Batoo82 | 

Sur la page de test on me dit ca :If you can see this message then you are probably affected by CVE-2014-1266! See https://www.imperialviolet.org/2014/02/22/applebug.html for details and http://support.apple.com/kb/HT6147 for the iOS patch. C'est que je suis infecté ?!?!?!

avatar Christophe Laporte | 
non tu n'es pas infecté. Ta configuration n'est juste pas "protégée"
avatar Lem3ssie | 

La beta 5 souffre aussi de ce "bug"... La beta 6 aura sûrement quelques jours de retard sur le planning d'Apple mais corrigera ce problème.

avatar esantirulo | 

Ce qui est un peu décevant est que depuis plus de 30 ans existent sur le marché des analyseurs de code qui détectent tout seul les branches mortes. Je suppose qu'Apple n'est pas à quelques centaines de dollars pour acheter une licence...

avatar Ali Baba | 

@esantirulo :
Ce n'est pas une branche morte et Apple a déjà un analyseur de code très puissant avec LLVC.

avatar flagos | 

Si. Tout ce qui est derrière le deuxième goto est du code mort.

De plus, il est vraiment innaceptable qu'un code aussi critique soit code a base de goto. C'est vraiment honteux.

avatar marc_os | 

C'est quoi LLVC ?
LLVC comme seul critère de recherche dans Google ne donne rien sauf des trucs du genre "Laboratoire en loisir et vie communautaire", ou bien la "LLVC Church"…
Pas grand chose à voir avec la recherche de code mort !
Et là : http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
Rien non plus

avatar Ajioss | 

Le plus drôle aurait été d'apprendre que c'est la nouvelle recrue de 17 ans qui a découverte la faille lol
Voilà l'une des conséquences de diriger une multinationale comme une start up. Ça donne des erreurs comme le retrait accidentel de jonny ive sur l'une page du site web comme ce genre de négligence plus importante.

avatar norman | 

Non, le bug c'est d'avoir remis Ive ;-)))

avatar RDBILL | 

Et si on n'utilise pas la sécurité SSL, on est en sécurité alors ?

avatar Lem3ssie | 

@RDBILL :
Tu l'utilises depuis longtemps, mais tu ne le savais pas, et tu l'utilises tous les jours.

avatar Lem3ssie | 

@RDBILL :
Et non, si tu n'utilises pas ssl, tu n'es pas en sécurité, c'est justement le but de ce protocole.
Utilises chrome, chromium ou Firefox en attendant.

avatar readrom | 

Dans l'hypothèse d'un acte malveillant, malveillant de la part de qui ?

avatar Lem3ssie | 

Et dire que des gouvernements dépensent des milliards pour nous espionner, alors que 10 pauvres caractères "oubliés" dans le code suffisent à mettre le système à genoux.

avatar fabricepsb | 

Ce qui est lamentable c'est que les possesseurs d'iPhone 4 qui sont restés volontairement à la version 6 sont maintenant obligés d'installer iOS 7 pour sécuriser leur téléphone avec le risque de se retrouver avec un veau comme à l'époque d'iOS 4 avec l'iPhone 3G

avatar nifex | 

@fabricepsb :
Au début de l'article il est bien indiqué qu'iOS 6 et 7 ont été mise à jour ;0)

avatar dandu | 

Plus exactement, iOS 6 pour iPod touche et iOS 6 pour iPone 3GS sont à jour, mais pas iOS 6 pour iPhone 4 ;)

avatar coolapic | 

Exact, mon iPhone 4 sous IOS 6.1.3 ne me propose QUE de passer à 7.0.6... Fait chier Apple !

Pages

CONNEXION UTILISATEUR