Le travail des ingénieurs de Google s’est appuyé sur un document publié l'an dernier par Intel et l'Université Carnegie Mellon, lesquels ont découvert qu'il était possible de modifier les valeurs binaires dans la mémoire stockée en accédant de manière répétitive aux cellules mémoire situées à proximité, un processus dit de « retournement de bit ». La mémoire DRAM est vulnérable à ce type d’interférences électriques, car, pour augmenter la capacité mémoire des puces, les ingénieurs ont compacté de plus en plus les cellules ensemble. « Les fabricants de puces connaissent bien ce phénomène d’interférences électriques, mais jusqu’à présent ils le considéraient plus comme un problème de fiabilité que comme un problème de sécurité », a écrit Mark Seaborn, ingénieur logiciel de Google.
Mais les recherches réalisées par les ingénieurs de Google montrent que le retournement de bit peut avoir un impact beaucoup plus important. Sur la trentaine d’ordinateurs portables x86 testés par les chercheurs, plusieurs se sont montrés vulnérables. Tous les ordinateurs portables - leur marque et leur modèle ne sont pas précisés - ont été fabriqués entre 2010 et 2014 et ils tournent tous avec de la DRAM DDR3. « Le manque d'informations techniques ne permet pas de dire quels ordinateurs seraient plus vulnérables », a ajouté Mark Seaborn. « Par exemple, nous ne savons pas exactement combien de machines sont vulnérables à ce type d’attaque, ni s’il est possible de résoudre le problème sur ces machines », écrit-il. En utilisant cette technique dite de « rowhammering », deux exploits de Google ont pu accéder à plusieurs reprises à une rangée de cellules mémoire et modifier les valeurs binaires des cellules voisines qui sont passées de 0 à 1 ou l'inverse. Le « rowhammering » a permis au premier exploit de mener à bien une attaque par escalade des privilèges et d’échapper à la sandbox que Google a placée dans Chrome, laquelle est censée limiter les actions d’une application tournant dans le navigateur. « Une fois hors de la sandbox, le code peut atteindre directement le système d'exploitation », a déclaré l’ingénieur logiciel de Google.
Le second exploit a utilisé un retournement de bits induit par le rowhammering pour gagner des privilèges au niveau du noyau. Les retournements de bits ont été introduits dans les entrées des tables de page qui servent à faire coïncider la mémoire virtuelle à la mémoire physique. « Après quoi, le code a pu avoir accès en lecture-écriture à toute la mémoire physique de l'ordinateur », a encore écrit Mark Seaborn. Les dernières puces DRAM DDR4 disposent de quelques mesures d'atténuation pour limiter les retournements de bits, et ces mesures ont également bien fonctionné avec la DDR3 de plusieurs ordinateurs portables et serveurs testés par les chercheurs. « Mais ces mesures d'atténuation ont été mises en place uniquement pour des raisons de fiabilité », écrit encore l’ingénieur. « Or l'histoire a montré que les questions qui relèvent ‘seulement’ de problèmes de fiabilité ont souvent des implications de sécurité importantes, et le ‘rowhammering’ est un bon exemple de cela », a-t-il ajouté. « En matière de sécurité logicielle, un grand nombre de couches reposent sur l'hypothèse que le contenu de la mémoire ne change pas sauf si on écrit dessus ». Ce credo semble devoir être révisé aujourd’hui.