
Lorsqu’on saisit le mot « Taiwan »
iOS 11.4.1 est disponible depuis peu. La nouvelle mouture du système d’exploitation pour les dispositifs mobiles conçus par Apple est principalement connue pour sa prise en charge d’un mode USB restreint qui empêche les forces de l’ordre de procéder au déverrouillage des iPhone. Dans un billet de blog paru il y a peu, le chercheur en sécurité Patrick Wardle met un autre correctif en lumière. Certains utilisateurs ont rapporté que le fait de saisir le mot « Taiwan » ou de recevoir un message contenant un drapeau taïwanais provoque un déni de service de l’appareil. Apple a passé l’éponge sur cette tâche.
La manœuvre est reproductible avec un iPhone 7 ou 9 équipé d’iOS 11.3 en faisant usage d’applications de messagerie comme iMessage, Facebook Messenger, WhatsApp, etc. En d’autres termes, il est possible d’activer le bogue à distance sur un dispositif non débridé.
C’est une utilisatrice chinoise qui a remonté la situation à Patrick Wardle – un chercheur en sécurité auteur de plusieurs publications sur les failles dans iOS. Après analyse du code de la version d’iOS mentionnée, Wardle a publié des portions qui illustrent plus ou moins quel est le fond du problème. Le fait est qu’iOS (11.3) intègre une fonction de comparaison de chaînes de caractères – CFStringCompare() – qu’Apple a dédiée à la gestion de la zone géographique telle que configurée par le possesseur de l’appareil. Sous certaines conditions (la lumière totale reste à faire jaillir à ce sujet), la fonction est invoquée avec un pointeur NULL, ce qui mène à un plantage. Le constructeur de la marque à la pomme lui-même fait une précision à ce sujet en écrivant que « sous certaines conditions, si les paramètres de régionalisation sont mal configurés, le pointeur NULL peut être renvoyé. »
Code : | Sélectionner tout |
1 2 3 4 | //call CFStringCompare() // first parameter is NULL, and thus crashes // second parameter is @"CN" r0 = loc_182922ec4(r19, 0x1add1ad38, 0x0); |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CFLocaleRef locale = CFLocaleCopyCurrent(); CFStringRef countryCode = CFLocaleGetValue (locale, kCFLocaleCountryCode); //fix! // make sure to check this!! if(NULL!= countryCode) { CFStringCompare(countryCode, @"CN", 0x0); } //otherwise handle case where `countryCode` is NULL else { .... } |
À côté du flou qui entoure la technique autour du bogue, il y a quand même une certitude : il s’agit de code qu’Apple a mis en place pour satisfaire à des desiderata particuliers du gouvernement de l’empire du Milieu. En Chine, les applications de messagerie n’affichent pas le drapeau taïwanais inséré dans des messages. Lorsque il y a un bogue ce sont les consommateurs qui souffrent.
Source : billet Wardle
Et vous ?

Voir aussi :





Vous avez lu gratuitement 8 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.