Dépendance du temps d'exécution des instructions sur les données sur les processeurs ARM et Intel

Eric Biggers, l'un des développeurs du chiffrement Adiantum et responsable du sous-système fscrypt du noyau Linux, a proposé un ensemble de correctifs pour bloquer les problèmes de sécurité résultant d'une fonctionnalité des processeurs Intel qui ne garantit pas des temps d'exécution constants pour les différentes données traitées. Le problème apparaît dans les processeurs Intel à commencer par la famille Ice Lake. Un problème similaire est observé dans les processeurs ARM.

La présence d'une dépendance du temps d'exécution des instructions sur les données traitées dans ces instructions est considérée par l'auteur des correctifs comme une vulnérabilité des processeurs, car un tel comportement ne peut garantir la sécurité des opérations cryptographiques effectuées dans le système. De nombreuses implémentations d'algorithmes cryptographiques sont conçues pour garantir que les données n'affectent pas le temps d'exécution des instructions, et la violation de ce comportement peut conduire à la création d'attaques par canal secondaire qui récupèrent les données sur la base de l'analyse de leur temps de traitement.

Potentiellement, la dépendance des données d'exécution peut également être utilisée pour lancer des attaques visant à déterminer les données du noyau à partir de l'espace utilisateur. Selon Eric Biggers, un temps d'exécution constant n'est pas fourni par défaut même pour les instructions qui effectuent des opérations d'addition et XOR, ainsi que pour les instructions AES-NI spécialisées (information non confirmée par des tests, selon d'autres données, il y a un délai d'un cycle pendant la multiplication vectorielle et le comptage de bits).

Pour désactiver ce comportement, Intel et ARM ont proposé de nouveaux indicateurs : le bit PSTATE DIT (Data Independent Timing) pour les processeurs ARM et le bit MSR DOITM (Data Operand Independent Timing Mode) pour les processeurs Intel, renvoyant l'ancien comportement avec un temps d'exécution constant. Intel et ARM recommandent d'activer la protection nécessaire pour le code critique, mais en réalité, des calculs critiques peuvent avoir lieu n'importe où dans le noyau et dans l'espace utilisateur. Nous envisageons donc d'activer les modes DOITM et DIT pour l'ensemble du noyau à tout moment.

Pour les processeurs ARM, la branche du noyau Linux 6.2 a déjà adopté des correctifs qui modifient le comportement du noyau, mais ces correctifs sont considérés comme insuffisants car ils ne couvrent que le code du noyau et ne modifient pas le comportement de l'espace utilisateur. Pour les processeurs Intel, l'inclusion de la protection est encore au stade de l'examen. L'impact du correctif sur les performances n'a pas encore été mesuré, mais selon la documentation Intel, l'activation du mode DOITM réduit les performances (par exemple, en désactivant certaines optimisations, telles que le préchargement spécifique aux données) et dans les futurs modèles de processeurs, la réduction des performances pourrait augmenter. .

Source: opennet.ru

Ajouter un commentaire