Linus Torvalds Dans le prochain noyau Linux 5.4, un ensemble de patches ««, David Howells (travaille chez Red Hat) et Matthew Garrett (, travaille chez Google) vise à restreindre l'accès de l'utilisateur root au noyau. La fonctionnalité liée à «lockdown» est intégrée dans un module LSM optionnel (), qui établit une barrière entre l'UID 0 et le noyau, limitant certaines fonctionnalités de bas niveau.
Si un attaquant réussit, à la suite d'une attaque, à exécuter du code avec des privilèges root, il peut exécuter son code au niveau du noyau, par exemple en remplaçant le noyau via kexec ou en lisant/écrivant la mémoire à travers /dev/kmem. La conséquence la plus évidente de telles activités pourrait être de l'UEFI Secure Boot ou l'extraction de données sensibles stockées au niveau du noyau.
Au départ, les fonctions de restriction de root ont été développées dans le contexte du renforcement de la protection de la chaîne de démarrage vérifiée, et les distributions utilisent déjà depuis longtemps des patches tiers pour bloquer le contournement de l'UEFI Secure Boot. Cependant, ces restrictions n'ont pas été incluses dans la version principale du noyau en raison de sur leur mise en œuvre et des craintes de perturber le fonctionnement des systèmes existants. Le module «lockdown» a intégré les patches déjà utilisés dans les distributions, qui ont été retravaillés sous la forme d'un sous-système distinct, non lié à l'UEFI Secure Boot.
En mode lockdown, l'accès à /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, au mode de débogage kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), certains interfaces ACPI et registres MSR du CPU est limité. Les appels kexec_file et kexec_load sont bloqués, le passage en mode veille est interdit, l'utilisation de DMA pour les dispositifs PCI est limitée, l'importation de code ACPI à partir de variables EFI est interdite,
les manœuvres avec les ports d'entrée/sortie sont proscrites, y compris la modification du numéro d'interruption et du port d'entrée/sortie pour le port série.
Par défaut, le module lockdown n'est pas actif, il est compilé en spécifiant l'option SECURITY_LOCKDOWN_LSM dans kconfig et est activé via le paramètre noyau «lockdown=», le fichier de contrôle «/sys/kernel/security/lockdown» ou les options de compilation , qui peuvent prendre les valeurs «intégrité» et «confidentialité». Dans le premier cas, les possibilités d'apporter des modifications au noyau en fonctionnement depuis l'espace utilisateur sont bloquées, tandis que dans le second, en plus de cela, la fonctionnalité pouvant être utilisée pour extraire des informations confidentielles du noyau est désactivée.
Il est important de noter que le lockdown limite seulement les capacités d'accès standard au noyau, mais ne protège pas contre les modifications résultant de l'exploitation de vulnérabilités. Pour empêcher les modifications du noyau en fonctionnement lors de l'utilisation d'exploits, le projet Openwall un module séparé (Linux Kernel Runtime Guard).
Source : opennet.ru
