Vous avez pu identifier les températures suspectes des GPU: l'heure est venue
d'investiguer les causes de ces défaillances.
Malgré les ravages de l'incendie, vous trouvez une baie assez épargnée par les
flammes contenant un serveur toujours en état de marche. Pour investiguer les
causes logicielles, vous décidez d'effectuer un cliché de sa mémoire.
Saurez-vous trouver les causes des températures falsifiées des GPU du datacentre
sur ce serveur?
En regardant les processus en exécution dans le cliché mémoire, on identifie que
la machine possède des cartes graphiques Nvidia et appelle un programme pour
obtenir la température de ceux-ci.
On remarque que ce dernier utilise dlopen et dlsym pour récupérer des fonctions
d'une bibliothèque dynamique précise au lieu d'être lié dynamiquement avec elle.
La présence de libnvidia-ml.so.1.orig dans l'espace mémoire du
processus laisse penser que la bibliothèque pourrait avoir été remplacée.
À partir de la bibliothèque dynamique libnvidia-ml.so.1, on découvre que la
fonction chargée de retourner la température ouvre un fichier, lit et décode
son contenu, calcule la température à partir de celui-ci et met à jour le
fichier: il s'agit d'un compteur du nombre d'utilisations du binaire permettant
de générer des températures différentes mais avec une progression logique.
Enfin, en se basant sur la fonction de décodage de la bibliothèque, on peut
obtenir le nombre d'appels à la fonction.