Correctifs introduits pour randomiser les adresses de pile du noyau Linux pour les appels système

Kees Cook, ancien administrateur système en chef de kernel.org et chef de l'équipe de sécurité Ubuntu, qui travaille désormais chez Google sur la sécurisation d'Android et de ChromeOS, a publié un ensemble de correctifs pour randomiser les décalages dans la pile du noyau lors du traitement des appels système. Les correctifs améliorent la sécurité du noyau en modifiant le placement de la pile, ce qui rend les attaques sur la pile beaucoup plus difficiles et moins efficaces. L'implémentation initiale prend en charge les processeurs ARM64 et x86/x86_64.

L'idée originale du patch appartient au projet PaX RANDKSTACK. En 2019, Elena Reshetova, ingénieure chez Intel, a tenté de créer une implémentation de cette idée pouvant être incluse dans le noyau Linux principal. Plus tard, l'initiative a été reprise par Kees Cook, qui a présenté une implémentation adaptée à la version principale du noyau. Les correctifs devraient être inclus dans la version 5.13. Le mode sera désactivé par défaut. Pour l'activer, le paramètre de ligne de commande du noyau « randomize_kstack_offset=on/off » et le paramètre CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT sont proposés. La surcharge liée à l'activation du mode est estimée à environ 1 % de perte de performances.

L'essence de la protection proposée est de choisir un décalage de pile aléatoire pour chaque appel système, ce qui rend difficile la détermination de la disposition de la pile en mémoire, même après avoir reçu les données d'adresse, puisque le prochain appel système modifiera l'adresse de base de la pile. Contrairement à l'implémentation PaX RANDKSTACK, dans les correctifs proposés pour inclusion dans le noyau, la randomisation n'est pas effectuée au stade initial (cpu_current_top_of_stack), mais après avoir défini la structure pt_regs, ce qui rend impossible l'utilisation de méthodes basées sur ptrace pour déterminer le décalage aléatoire. lors d’un appel système de longue durée.

Source: opennet.ru

Ajouter un commentaire