14 juillet 2009 – 14:30
L'architecture x86 possède des subtilités parfois méconnues de beaucoup de développeurs. En effet, il existe une instruction assez spéciale, RDTSC, qui renvoie le nombre de cycles d'horloge depuis le démarrage du processeur. En 2007, un chercheur d'IBM présente au Black Hat une technique de hook basée sur cette instruction. En effet, il se trouve qu'il existe un flag dans le registre de contrôle CR4 permettant de désactiver cette instruction en ring 3, et de déclencher une exception #GP (int 13) lors de son appel. Via un hook de l'IDT par un driver codé maison, il devient donc possible de détourner les appels ring 3 à RDTSC, de filtrer les résultats et imaginer toutes sortes de choses. D'autant plus que RDTSC est couramment utilisée dans des application ayant trait à la sécurité, comme les méthodes d'anti-debugging ou de génération de nombres aléatoires...
Classé dans Linux, Reverse Engineering, Sécurité informatique | 4 commentaires »