Les chercheurs de Photon viennent de mettre en avant un bug assez étonnant de la part d'Apple : après 49 jours, 17 heures, 2 minutes et 47 secondes, les Mac peuvent perdre accès au réseau ou — plus exactement — ne peuvent plus ouvrir de connexions en TCP. Les plus aguerris auront reconnu cette durée : c'est le nombre de millisecondes dans un entier de 32 bits non signé.

Le problème vient de la valeur TIME_WAIT. De façon très schématique (il y a plus de détails dans le post), quand une connexion TCP est terminée (par exemple, si vous fermez le navigateur), elle est fermée par le système après 30 secondes sur les systèmes Apple. La valeur TIME_WAIT est un compteur, incrémenté chaque milliseconde, qui sert de base pour ce mécanisme, et les données sont stockées dans un entier de 32 bits non signé. C'est une zone mémoire qui peut contenir 232 -1 valeurs, soit 4 294 967 295. Il démarre à 0 en même temps que le système d'exploitation… et est donc rempli après un peu de 49 jours. Ensuite, il doit revenir à 0.
Le problème, c'est que quand il revient à zéro, la vérification des sessions TCP ouverte ne fonctionne plus. Les sessions ne sont pas fermées correctement, ce qui empêche, après un certain temps, la création de nouvelles sessions. La seule solution est basique : redémarrer pour passer le compteur à zéro.
Le résultat va dépendre de votre Mac : s'il effectue peu de connexions au réseau, il va prendre un peu plus de temps pour être bloqué qu'un autre Mac qui synchronise beaucoup de données, par exemple. Mais dans les faits, les chercheurs indiquent que le résultat, après quelques heures, est le même : il devient impossible d'ouvrir une session. Le bug n'a pas été découvert alors qu'il est visiblement assez ancien (il date au moins de macOS Catalina) pour une raison simple : un uptime de plus de 49 jours reste assez rare, étant donné qu'Apple pousse des mises à jour de façon régulière. Reste à voir comment Apple va corriger le problème.
Source :














