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 BennyLaMalice | 

N'est-ce pas l'un des intérêts de l'open-source d'éviter ce style d'erreur grossière ? Tous mes collègues experts en sécurité ne jurent que par les implémentations "publiques" justement pour ça...?!?

avatar kaos | 

Je suis tout seul à avoir rien compris ???

Ceux qui n'ont rien compris se demandent donc si on les à vus aller sur Youporn non ? ;D

Plusérieusement, je tombe déjà 2 fois par mois sur Flashback alors la sécurité d'OSX hein ... j'y ai jamais vraiment cru et ça fait un bail que j'ai un antivirus.

http://nsa20.casimages.com/img/2014/02/23/140223010536126167.jpg

avatar nayals | 

@kaos

Aucun antivirus ne te protège de cette faille. Ce sont deux choses qui n'ont vraiment rien à voir.

Là, on ne parle pas d'installer quoi que ce soit sur ta machine. Juste que quand tu es assis au WiFi d'un café, un voleur quelques tables plus loin peut voir tout ce que tu fais, voire récupérer mot de passes et CB si tu vas sur des sites marchands.

avatar Jean-Jacques Cortes | 

Cette histoire sent le copier-coller mal fait. Le programmeur n'a pas voulu retaper la seconde condition et a repris la première mais a aussi repris le goto fail avec.
C'est marrant, mais en Basic, l'instruction goto était source d'erreur et faisait figure de programmation spaghetti.

avatar supermars | 

Inadmissible !

avatar Log_Boy | 

J'ai du mal a croire qu'Apple puisse laisser passer un bout de code aussi dangereux, c'est tout simplement irréel. Si ce truc la est passé j'imagine même pas ce qui a pu passé à côté sans qu'on ne l'ai encore découvert. Sincèrement ça sent l'amateurisme à plein nez la.

avatar redchou | 

Le code nucléaire américain a été "00000000" pendant les 15 ans...

avatar byte_order | 

Exact.

Sur recommandation expresse de la NSA, ayant constaté que beaucoup de gens semblaient le connaitre, c'est désormais 12345678.

Oh, wait!...

avatar alan63 | 

Chrome va faire exploser ses stats ....

avatar patrick86 | 

"Chrome va faire exploser ses stats ..."

Ou pas.

avatar Ducletho | 

Effectivement, là c'est vraiment pas sérieux. Le SSL sécure, c'est un minimum ...

avatar Beaubarre | 

Un acte malveillant de la part d'Apple + NSA

C'est impossible, au-delà dela revue du code, de pas faire des tests lorsque le code est nouveau pour voir si cela fonctionne ou pas, et normalement le test a du montrer que le code ne marchait pas.

Grâce à cette faille, ils ont pu peut-être enregistrer en masse les logins de tous les utilisateurs iphone à gmail, caisse d'epargne, facebook etc - au cas ou vous serez associés à des terroristes un jour (ce jour là terroriste sera peut etre travailler pour Airbus qui gagne de parts de marchés sur Boeing en 2027).

C'est pour éviter cela que j'utilise autre chose que safari quand je surfe sur iphone ou ipad.

avatar Le docteur | 

Et tu utilises quoi ? Firefox ? :D

avatar Beaubarre | 

Non sur ipad j'utilise Mercury configuré comme Windows XP internet explorer 6 (du coup je suis peut etre piraté par des chinois 8-) ) + VPN Piratebay + dns opendns (et je checke que opendns marche en allant de temps en temps sur www.internetbadguys.com).

Et je coupe le wifi ou éteint l'ipad dès que je m'en sers plus.

(Non je suis pas parano j'ai été cible de voleurs de voitures qui avaient cela dans leur panoplie en plus des trucs classiques comme menaces, intimidations etc)

avatar tibet | 

Puisqu'on parle de code. Je voudrais en profiter pour demander à celui qui pollue l'interface du site sur iPhone avec le bandeau qui descend à travers tout l'écran pour se scotcher en bas en "proposant" de créer un icône sur le "bureau". S'il pouvait se rendre compte que c'est Hyper chiant il supprimerait ça tout de suite. On est maintenant presque autant "agressé" sur des petits sites comme macg que dans un hypermarché ! Je vais tenter un "Merci d'avance".

avatar jujuv71 | 

Ce qui expliquerait que mes deux macs ne pouvaient se connecter à iCloud dans Mail ?!?!?!

avatar noooty | 

Mince, mon iMac est touché...
Bon, heureusement, je ne me promène pas avec sous le bras pour découvrir les hot-spot wifi...

avatar Marty14 | 

M'en fou, je ne me connecte jamais sur des Hotspot !

avatar noooty | 

C'est normal que iOS 6 ne soit pas à jour pour les iPhone 4, puisqu'il est compatible avec iOS 7...

avatar Le docteur | 

Et pour la version 5 ?

avatar Philactere | 

Avec sa politique d'adoption d'iOS7 pour les iDevices "éligibles", Apple refuse volontairement de mettre à jour ses appareils vendus sous iOS6 qui le seraient restés.

En clair elle laisse sciemment et volontairement ouverte une faille de sécurité majeure sur des millions d'iDevices dont les propriétaires auraient fait le choix de garder l'OS qui était livré à l'achat de cet appareil, bref un refus pour des raisons commerciales de mettre à disposition un correctif de sécurité.
Et non, iOS7 n'est pas un correctif de sécurité à iOS6, c'est un nouvel OS qui ne devrait pas être imposé mais doit rester un choix.

C'est pas pour troller mais dans le monde des éditeurs d'OS, le grand méchant en face ne s'est jamais permis un truc pareil.

avatar shenmue | 

"Et non, iOS7 n'est pas un correctif de sécurité à iOS6, c'est un nouvel OS qui ne devrait pas être imposé mais doit rester un choix."

Et non, la faille a été corrigée AUSSI sur iOS 6. Lire les news, cela permet déviter ce genre de réaction à l'emporte-pièce et qui flirte bon avec le troll tellement tu t'égares.

avatar Philactere | 

@shenmue :
Lire les news est une chose, comprendre les commentaires en est une autre.
J'ai un iPad mini resté sous iOS6 (comme d'autres gardent leur iPhone 4 ou 4S sous iOS6). Pour ce dernier la mise à jour iOS6 n'est pas disponible, la seul solution étant de passer à iOS7 ce que je ne souhaite pas. C'est de cet aspect que je parlais, le correctif existe bel et bien pour iOS6 mais Apple refuse de le rendre disponible pour l'ensemble des iDevices tournant sur cet OS.
Pourquoi ?

avatar jbmg | 

@Philactère
tu vas sur la page
http://support.apple.com/fr_FR/downloads/#IOS%206
et peut être que tu trouveras ton bonheur.

avatar Philactere | 

@jbmg :
Ba non, rien d'autre que la roue qui tourne sans fin sur la page en question.

Je ne désespère pas qu'Apple daigne bien de soucier de la question des iDevices restés volontairement sous iOS6 alors qu'ils sont éligibles iOS7, mais pour l'instant je ne vois rien.

avatar Philactere | 

@Philactere :
Edit : la page a fini après de longues minutes par m'afficher les mises à jour pour iOS6, mais jusqu'à la version... 6.1.5. C'est ballot parce que le correctif est la version 6.1.6.

avatar Philactere | 

@Philactere :
Cela dit, quel que soit la version s'affichant sur cette page, aucune n'est telechargeable, ce n'est qu'un listing des versions avec plus d'info. Mais rien pour les télécharger et/ou les installer.

avatar jbmg | 

c'est vrai que c'est devenu un vrai foutoir ce centre de téléchargement, il est impossible de charger un logiciel qui passe habituellement par la machine.

Il fut un temps où on pouvait récupérer un grand nombre de logiciels sans problème et c'était plus facile à trouver.

Il ne te reste plus qu'à trouver sur p2p... |O|
ou
mieux, trouver une personne dont le 6 est l'ultime IOS pour sa machine.

avatar Philactere | 

@jbmg :
Une mise à jour de sécurité en p2p, hahaha, autant filer directement mon numéro de carte de crédit, le code de sécurité et mes coordonnées on gagnera une étape.
C'est à Apple et à personne d'autre de fournir les mises à jour de sécurité.
Il me reste en effet 3 solutions :
- Attendre qu'Apple veuille bien assurer le suivi de sécurité sur TOUS ses produits sans considérations commerciales (forcer la mise à jour vers iOS 7).
- Ne plus utiliser mon iPad mini pour des transactions SSL.
- Passer à iOS 7.

avatar iRobot 5S | 

@Philactere :
Parce que l'iphone 4S n'as aucun problème avec iOS 7, j'en ai un

avatar Philactere | 

@shenmue :
Et à propos d'égarement je te prierais d'en rester là sur tes prochains commentaires du tu veux tenir une discussion, pas la peine d'être méprisant si tu as une idée à développer.

avatar iRobot 5S | 

@Philactere :
Normal chez le grand méchant d'en fasse les smartphones ne sont plus supportés après 18 mois.

avatar Philactere | 

@iRobot 5S :
Je parlais de l'autre grand méchant, l'ancien, celui qui édite des OS pour ordinateurs depuis 30 ans.

avatar iRobot 5S | 

@Philactere :
A le méchant qui a des rhumatismes !

avatar BigMonster | 

Je plussifie. Je n'ai pas fait la mise à jour vers IOS7, et je n'en voulais pas.
Et maintenant, j'y suis obligé. J'ai acheté un téléphone avec une certaine interface, parce qu'elle me convenait et qu'elle me plaisait, et je suis obligé d'en changer. C'est pas correct.

avatar johnios | 

L'erreur est tellement visible que je penserai à de la malveillance plutôt....

avatar Anthanagor | 

Ce que les gens n'arrivent pas a comprendre, c'est que pour corriger cette faille, leur iPhone 4 est obligé de passer à iOS 7 car c'est une version éligible, l'iPhone ne se posera pas de question, il ira vers la version la plus récente... Le correctif d'iOS 6 n'est compatible qu'avec les iPhone 3GS, dernier iPhone compatible avec iOS 6...
En clair, utilisateurs d'iPhone 4, vous n'avez pas le choix... iOS 7 n'est pas si bugé que ça, vous verrez :)
Et je parle en connaissance de cause :)

avatar byte_order | 

Mouais, ben moi je n'accepterai pas de *devoir* passer de Windows 7 à Windows 8 afin d'avoir un correctif de sécurité au motif que mon ordinateur *peut* supporter Windows 8 et qu'en conséquence, le correctif pour Windows , bien qu'existant, ne m'est pas accessible.

Je ne vois donc pas au nom de quoi on devrait accepter de la part d'Apple ce que l'on refuse[rait] de Microsoft.
A moins d'avoir abandonner toute notion d'intégrité intellectuelle sur l'autel du fanboyisme 2.0.

avatar BKN1 | 

Puisque certains commencent à vomir sur Apple, peut-etre que ce billet de Gruber les amenera à (un peu) réflechir avant de parler :
http://daringfireball.net/2014/02/apple_prism

avatar Tibimac | 

C'est effectivement une erreur de code assez énorme. Pour ma part je n'utilise jamais les goto, je sais pas, mais j'ai toujours trouvé ça un peu bizarre comme technique de codage, m'enfin j'y viendrai peut-être un jour.

Pour les possesseurs iPhone 4, iPad 3 etc.Je pense qu'il va falloir attendre quelques jours que les sites qui proposent de télécharger iOS (IPSW) le propose. Peut-être que ca pourra être mis sur un iPhone 4, iPad etc.. mais pas sur :-/

avatar fabricepsb | 

@shenmue et les autres de la même veine :

"Le temps ne fait rien à l´affaire
Quand on est con, on est con"

De belles paroles de Brassens à méditer.

avatar jonson | 

C'est quoi cette embrouille avec Apple? Depuis quand cette faille existe-t-elle?
Parce qu'en général les sites avec certificats, sont ceux où tu échanges des données sensibles. Comme ta banque en ligne ou un organisme publique tel que les impôts ou la sécu.

Si il y a eu préjudice à travers cette faille, Apple peut-elle en être tenue pour responsable? Il y aurait il moyen de le prouver?

avatar quent1du58 | 

Ah, sacré NSA... Elle l'a tenté avec Linux, elle l'a fait avec iOS et OS X...

avatar bdc | 

Simple question d'un ignare en programmation :
Pourquoi faut-il charger un correctif de plusieurs dizaines de Mo pour une seule ligne de code erronée ????

avatar patrick86 | 

@bdc :
Parce que ce qui est installé sur ta machine n'est pas le code que tu vois là, mais sa compilation en langage machine (des suites de 0 et de 1). Donc la mise à jour remplace toute la partie de programme compilé qui contient le code corrigé.

avatar byte_order | 

Pour en profiter pour installer dans le même temps d'autres mises à jour plus importantes... commercialement parlant.

avatar Sydney Bristow | 

@fabrice: ios7 marche très bien sur mon iphone 4

avatar jbmg | 

@Sidney Bristow
mais certain ne trouve pas IOS 7 agréable au niveau dessin, de plus certains logiciels ne marchent pas avec.

avatar Francis Kuntz | 

1. Goto c'est juste honteux
2. Pas d'unit testing sur un code aussi important aussi...

avatar BeePotato | 

@ Francis Kuntz : « 1. Goto c'est juste honteux »

Non, pas dans ce cas-là. C'est un usage très classique du goto en C (et c'est aussi le seul usage raisonnable qu'on puisse en trouver).

« 2. Pas d'unit testing sur un code aussi important aussi... »

Là, en revanche, faut bien avouer que ça ne fait vraiment pas sérieux.

Pages

CONNEXION UTILISATEUR