Samedi dernier, Linus Torvalds a finalement décidé de permettre l’introduction de la fonctionnalité Lockdown dans le noyau Linux à partir de la version 5.4. La fonctionnalité a été proposée il y a quelques années par Matthew Garrett, ingénieur chez Google, qui en est l’auteur avec David Howells et d’autres développeurs, mais Torvalds est longtemps resté réticent concernant l’introduction d’une telle fonctionnalité dans le noyau. Ainsi, certaines distributions Linux parmi les plus courantes proposent des variantes de la fonctionnalité depuis quelques années déjà.
En effet, les travaux sur la fonction de verrouillage du noyau ont commencé au début des années 2010 et ont été dirigés par Matthew Garrett, maintenant ingénieur chez Google. L'idée derrière Lockdown était de créer un mécanisme de sécurité pour empêcher les utilisateurs avec des permissions élevées, même le compte « root », d’apporter des modifications au noyau. À cette époque, les systèmes Linux utilisaient des mécanismes de démarrage sécurisés, mais il existait encore des moyens par lesquels les logiciels malveillants pouvaient infecter le noyau.
Ces logiciels malveillants pouvaient abuser des comptes root et des comptes utilisateurs avec des privilèges spéciaux élevés pour trafiquer le code du noyau et, ce faisant, obtenir une persistance de démarrage et une prise permanente des systèmes infectés. De nombreux experts en sécurité ont demandé au fil des ans que le noyau Linux prenne en charge un moyen plus puissant pour restreindre le compte root et améliorer la sécurité du noyau. Après de longues discussions et réécriture de code, Linus Torvalds a finalement approuvé l’idée d’introduire la fonctionnalité Lockdown.
« La plupart des distributions grand public supportent des variantes de ce jeu de correctifs depuis de nombreuses années maintenant. Il est donc utile de fournir une distribution qui ne répond pas à toutes les exigences, mais qui nous rapproche beaucoup plus de la nécessité de ne pas requérir de correctifs externes », a déclaré Torvalds dans un mail. « Les applications qui dépendent d'un accès de bas niveau au matériel ou au noyau peuvent cesser de fonctionner. Par conséquent, ceci ne devrait pas être activé sans une évaluation préalable appropriée », a-t-il ajouté.
« Lockdown » sera livrée pour la première fois dans la prochaine version du noyau Linux, Linux 5.4, et permettra ainsi de verrouiller le noyau dès le démarrage du système d’exploitation. La fonction principale de Lockdown sera de renforcer le fossé entre les processus de l'espace utilisateur et le code du noyau. Pour cela, Lockdown va empêcher tous les utilisateurs, y compris le compte root, d'interagir avec le code du noyau, ce qu'il a été capable de faire, par conception, jusqu'à maintenant. Lorsqu'elle est activée, Lockdown restreindra certaines fonctionnalités du noyau.
Autrement dit, Lockdown définit une frontière entre le noyau Linux et l'utilisateur UID 0, c'est-à-dire l'utilisateur root. Le but est d'empêcher un compte root compromis de mettre à mal le système, ou encore de faire échouer des exécutions de code arbitraire. Lockdown pourra restreindre notamment les allocations de mémoire kmalloc, l'hibernation du système, les opérations de lecture/écriture sur /dev/mem et /devf/kmem, l'accès à /dev/port, l'accès au processeur, etc. Lockdown va être fourni sous la forme d’un module de sécurité LSM (Linux Module Security).
« Lorsque cette option est activée, les différentes fonctionnalités du noyau sont limitées. Cela inclut la restriction de l'accès aux fonctionnalités du noyau qui peuvent permettre l'exécution de code arbitraire via le code fourni par les processus utilisateur ; le blocage des processus d'écriture ou de lecture de la mémoire /dev/mem et /dev/kmem ; le blocage de l'accès à /dev/port pour empêcher l'accès au port brut ; le renforcement des signatures des modules du noyau ; et bien d'autres choses », a expliqué Torvalds. Par ailleurs, il faut noter que Lockdown proposera deux modes.
Lockdown proposera le mode “Intégrité” qui empêchera la modification du noyau en cours d'exécution, et le mode “Confidentialité” qui empêchera l'extraction d'informations confidentielles du noyau. Lockdown arrivera dans le noyau Linux 5.4 et sera désactivée par défaut afin de ne pas casser le fonctionnement de systèmes existants. L’arrivée de cette fonctionnalité est une bonne nouvelle pour les utilisateurs conscients de la sécurité et offre une sécurité supplémentaire très demandée pour des applications comme UEFI Secure Boot. La fonction est opt-in et limite les bits que le noyau peut toucher.
Enfin, notons que pendant tout le temps de refus de Torvalds d’introduire Lockdown dans le noyau Linux, de nombreuses distributions Linux, telles que Red Hat, ont développé leurs propres correctifs du noyau Linux qui ont ajouté une fonction de verrouillage sur le noyau principal. C’est en 2018 que les deux parties sont parvenues à un compromis et les travaux ont progressé cette année sur le dispositif de verrouillage. Les autres fonctionnalités importantes qui pourraient subvenir dans la version 5.4 du noyau Linux incluent :
- DM-Clone en tant que nouvel outil de réplication à distance de blocs ;
- prise en charge initiale du système de fichiers Microsoft exFAT ;
- prise en charge de F2FS insensible à la casse ;
- un noyau fixe autour de l'UMIP (User-Mode Instruction Prevention) pour aider diverses applications Windows dans Wine ;
- une foule d'autres nouveaux supports matériels ;
- etc.
Sources : Linus Torvalds, LWN.net, Proposition de Matthew Garrett (PDF)
Et vous ?
Qu'en pensez-vous ?
Voir aussi
La version 5.3 du noyau Linux est disponible avec la prise en charge des GPU AMD Navi et d'autres nouvelles fonctionnalités
Canonical annonce la disponibilité de la bêta d'Ubuntu 19.10, nom de code Eoan Ermine, avec le noyau Linux 5.3 pour les plateformes Desktop, Server et Cloud
Librem 5 : les premières livraisons du smartphone GNU/Linux orienté sécurité et vie privée ont commencé et vont se poursuivre par lots
Linux 5.0 est disponible en version stable, avec l'ajout du système de chiffrement Adiantum et la prise en charge des fichiers d'échange par Btrfs