Le bug du 1er janvier 1970 peut encore frapper

Mickaël Bazoge |

iOS 9.3 a corrigé un bug rare, mais particulièrement handicapant : si, pour une raison ou une autre, on changeait la date d’un appareil iOS au 1er janvier 1970, l’iPhone ou l’iPad plongeait dans une boucle de redémarrage sans fin (lire : iOS 9.3 : la bêta 4 corrige le bug de l'année 1970). Le correctif était simple et efficace : depuis cette version d’iOS, il est impossible de remonter avant le 1er janvier 2001… ce qui ne signifie pas que le bug a été éradiqué.

Les chercheurs en sécurité Patrick Kelley, de CriticalAssets, et Matt Harrigan de PacketSled sont ainsi parvenus à exploiter de nouveau cette vulnérabilité, avec l’aide de deux « faiblesses » d’iOS. La première est liée au comportement du système d’exploitation en présence d’un réseau Wi-Fi : l’iPhone ou, dans le cas qui nous occupe ici, l’iPad se connecte automatiquement à un hotspot Wi-Fi connu. Or, l’identification du réseau est très peu sécurisée puisqu’elle est simplement liée au nom dudit réseau.

Si l’on s’est connecté une fois à un réseau qui portait le nom « Hotspot », l’appareil se connectera ensuite automatiquement à tous les réseaux ouverts appelés de la même manière. Rien n’empêche un malandrin de créer un faux réseau portant le nom d’un hotspot sur lequel beaucoup d’utilisateurs ont pu se brancher au moins une fois — comme par exemple « attwifi », qui est le SSID des cafés Starbucks.

L’autre faiblesse d’iOS, c’est la connexion constante à des serveurs NTP afin de synchroniser l’horloge interne des appareils. En mêlant ces deux fragilités, les chercheurs ont pu reproduire le fameux bug du 1er janvier 1970. Il « suffit », si on peut dire, de créer un réseau Wi-Fi bidon portant un nom connu, qui force les appareils iOS s’y connectant automatiquement à se brancher sur un serveur NTP mal intentionné dont la date est calée sur le 1er janvier 1970.

L’iPad cobaye, pris dans cette toile maléfique, est retombé dans les années 70 et contrairement au précédent bug, il ne redémarre pas immédiatement : la tablette fonctionne de moins en moins bien, elle est moins réactive, elle refuse de se déverrouiller… et elle remonte même dans le temps, jusqu’en 1965 dans ce cas précis.

Après un redémarrage forcé, la tablette n’affiche que le logo d’Apple, tandis que la batterie devient très chaude (54°). Branché à iTunes, l’appareil n’est pas reconnu, puis il ne réagit plus du tout : la batterie a complètement flanché. La vidéo ci-dessous fait le point sur tous les symptômes :

Prévenu du problème, Apple n’a pu dépasser la température de 45,8° sur un iPad affecté par le problème, et surtout le constructeur a pu réinstaller iOS 9.3 sur le cobaye des chercheurs (un iPad Air). Néanmoins, ce bug présent sur les appareils iOS 64 bits, a été corrigé avec iOS 9.3.1, disponible en version finale depuis peu. Il est aussi possible de demander à iOS et OS X de confirmer l’accès à un réseau Wi-Fi connu.

avatar r e m y | 

La deLorean aussi chauffait beaucoup en remontant le temps...

avatar byte_order | 

Mais elle, elle accélérait, tandis que l'iPad, lui, il ralentit ;-)

avatar C1rc3@0rc | 

@Remy
Ben elle refroidissait surtout beaucoup: elle etait couverte de givre a l'arrivée, probablement du a un pricipe de Bose-Einstein ;)

Sinon personne n'a relevé cette perle: «Le correctif était simple et efficace : depuis cette version d’iOS, il est impossible de remonter avant le 1er janvier 2001… ce qui ne signifie pas que le bug a été éradiqué.»

Simple oui, mais efficace surement pas!
En fait c'est une infâme bidouille pour maquiller une faille de conception et de réalisation majeure du niveau d'un programmeur débutant.
C'est un peu le niveau de dissimuler le tas de poussière sous le tapis!

Par contre l'idée du hotspot pirate avec un serveur NTP ça c'est du grand art.
On peut dire qu'Apple s'etait deja couvert de honte avec la presence de cette malfaçon (a ce niveau c'est même pas une faille) mais que Patrick Kelley et Matt Harrigan ont humilié Apple.

Ce serait temps qu'Apple redevienne une boite d'ingénieurs de d'ergonomes et arrête d'être centrée sur les pitreries pitoyable de designer.

avatar House M.D. | 

Allez... *petit doigt à la bouche* mouahahahahahaha... Mouahahahahahahahaha... Mouahahahahahaha...

;)

avatar Paquito06 | 

Les malendrins peuvent encore frapper!
L'iPad qui retourne en 1965 me laisse pantois.

avatar MacGruber | 

Au risque de paraître encore ridicule.

J'aimerais vraiment la possibilité de pouvoir dater des fichiers sources type jpeg ou TIFF à une date antérieure à cette fichue année 0.

avatar marc_os | 

@ MacGruber
Pourquoi faire ?
Les "dates de fichiers" ne correspondent pas à n'importe quoi.
En général ce sont les dates de création, de modification, d'accès ou ce genre de choses qui sont dans tous les cas des caractéristiques physiques liées au fichier informatique lui même, pas son contenu.
Or aucun des fichiers présents sur les systèmes informatiques de nos jours n'existaient avant le 1er janvier 1970.
Si tu veux associer la date de réalisation d'une peinture que tu as prise en photo au fichier stockant cette photo, tu peux la stocker avec les informations liées au fichier (Cmd-I dans le Finder), ou utiliser une base de données quelconque.
Tu peux aussi te définir des règles de nommage spécifiques et utiliser un format de nom comportant la date qui t'intéresse.

avatar oomu | 

J'attends surtout 2038.

-
Mais enfin Doc, y a pas assez de stockage pour mettre cette application sur l'ipad

- là où on va, y a pas besoin de... stockage.

avatar byte_order | 

- 2 gigabytes !!! 2 gigabytes !!! Mon Dieu !!!
- Mais enfin c'est quoi un gigabyte ?

avatar BeePotato | 

Dire qu'un Mac 128 remontait jusqu'au 1er janvier 1904 (un vendredi, à en croire Mac OS) sans problème… :-)

avatar marc_os | 

@ BeePotato
Mac OS utilisait effectivement le 1er janvier 1904 comme référence.
Le 1er janvier 1970 est utilisé par Unix et tous les systèmes basés sur Unix.
Or OS X est un Unix.
Ceci explique donc cela.

Le truc, c'est que pour stocker une date les OS stockent en fait souvent le nombre de secondes écoulées depuis une date de référence. Or la valeur maximum d'un nombre dépend du type de données utilisé. Si le nombre est stocké avec 32 bits, la date maxi qu'on peut représenter ainsi est la date de référence plus 2^32 s, soit 4 294 967 296 secondes, ou bien 136 ans. Et 1904 + 136 = 2040. Les Macintosh sous Mac OS auront donc leur bogue de l'an 2000 en 2040 !
Pour Unix, la date maxi est... 1970 + 136 = 2106.
Ça va encore. D'ici là, les dates seront probablement stockées sur 64 bits.
Remarque : Stocker une date sous forme de caractères n'est pas efficace. Par exemple "20160416" utilise 8 caractères. Avec au minimum un octet (8 bits) par caractère, cette représentation requiert donc 8 x 8 = 64 bits. Et on n'a même pas les secondes.

avatar noooty | 

@r e m y :
La DeLorean chauffait beaucoup quand elle serait retrouvée au XIX° siècle, parce qu'elle marchait à la vapeur, et plus à la fusion de l'atome...
:)

avatar r e m y | 

@the Joker
C'est normal qu'ils soient grisés car ils ont été envoyés à une date antérieure à l'invention de l'email et de l'Internet! ;-)

CONNEXION UTILISATEUR