Vos recrutements informatiques

700 000 développeurs, chefs de projets, ingénieurs, informaticiens...

Contactez notre équipe spécialiste en recrutement

OpenBSD va embarquer une fonctionnalité permettant de disposer d'un noyau unique à chaque redémarrage système
KARL est déjà disponible en test

Le , par Stéphane le calme, Chroniqueur Actualités
Une nouvelle fonctionnalité, qui a été ajoutée dans les snapshots de test du système d’exploitation Unix OpenBSD, va permettre de créer un noyau unique à chaque fois que l’utilisateur va redémarrer ou mettre à jour son ordinateur. Baptisée KARL (Kernel Address Randomized Link), elle fonctionne en reliant les fichiers internes du noyau dans un ordre aléatoire afin qu'il génère chaque fois un binaire unique du noyau.

Rappelons qu’actuellement, pour les versions stables, le noyau OpenBSD utilise un ordre prédéfini pour lier et charger des fichiers internes à l'intérieur des binaires du noyau, ce qui a pour conséquence d’attribuer le même noyau à tous les utilisateurs.

C’est Theo de Raadt, un ingénieur qui est le créateur et le chef des projets OpenBSD, OpenSSH, OpenNTPD et OpenBGPD, qui a expliqué la raison pour laquelle il a dû travailler sur une nouvelle fonctionnalité de randomisation du noyau pour le protéger : « La situation actuelle est que de nombreuses personnes installent un kernel binaire depuis OpenBSD et exécutent ce même binaire kernel pendant six mois, voire plus. Nous avons une randomisation substantielle pour les allocations de mémoire faites par le noyau, mais aussi pour les utilisateurs, bien sûr. Cependant, ce noyau est toujours dans la même mémoire physique et au même espace d'adresse virtuelle (on l'appelle KVA). »

Il ne s’agit pas de ASLR

Raadt rappelle qu’auparavant, le langage d'assemblage du noyau bootstrap / runtime locore.S était compilé et lié à tous les autres fichiers .c du noyau dans un mode déterministe : « Locore.o était toujours le premier, puis venaient les fichiers .c dans un ordre spécifié par notre utilitaire config (8) et certains fichiers auxiliaires. »

« Dans le nouvel ordre, locore est divisé en deux fichiers : un morceau Bootstrap, qui est laissé au début. Le runtime du langage d'assemblage et tous les autres fichiers qui sont liés de manière aléatoire. Il y a d'autres pièces qu’il faudrait essayer afin d'améliorer le caractère aléatoire de la mise en page. Par conséquent, chaque nouveau noyau est unique. Les compensations relatives entre les fonctions et les données sont uniques », a-t-il assuré.

En clair, KARL ne doit pas être confondu avec ASLR (Address Space Layout Randomization), une technique qui répartit de manière aléatoire l'adresse de la mémoire où le code de l'application est exécuté, de sorte que les exploits ne peuvent pas cibler une zone spécifique de mémoire où une application ou le noyau est connu pour s'exécuter.

Au lieu de cela, KARL génère des binaires de noyau avec des structures internes aléatoires, de sorte que les exploits ne peuvent pas faire fuiter ou attaquer les fonctions, les pointeurs ou les objets internes du noyau.

Les travaux sur cette fonctionnalité ont débuté en mai et ont d'abord fait l’objet d’une discussion à la mi-juin sur la liste de diffusion technique OpenBSD. KARL a récemment atterri dans des versions instantanées d'OpenBSD 6.1.

« Nos systèmes immunitaires fonctionnent mieux lorsqu'ils sont uniques », a-t-il conclu.
Pour Tiberiu C. Turbureanu, fondateur de la startup Technoethical qui vend des produits matériels axés sur la vie privée, cette fonctionnalité semble être unique à OpenBSD.

« Elle n'est pas implémentée dans Linux », a-t-il déclaré. « Cela semble être une excellente idée », a-t-il ajouté, pour ce qui concerne la possibilité de porter cette fonctionnalité sur le noyau Linux.

Au lieu de cela, le projet Linux vient d'ajouter une prise en charge de Kernel Address Space Layout Randomization (KASLR), une fonctionnalité qui porte ASLR sur le noyau lui-même, en chargeant le noyau à une adresse de mémoire aléatoire.

Cette fonctionnalité a été activée par défaut dans Linux 4.12, publié la semaine dernière. La différence entre les deux est que KARL charge un binaire de noyau différent au même endroit, tandis que KASLR charge le même binaire dans des endroits aléatoires. En clair, ils ont le même but, mais empruntent des voies différentes.

En ce qui concerne Windows, KARL n'est pas pris en charge, mais Microsoft a utilisé KASLR depuis de nombreuses années. Fabian Wosar, responsable technique chez l’éditeur de l'antivirus Emsisoft, est enthousiaste à l’idée d’ajouter KARL au noyau de Windows : « L'idée d'OpenBSD irait encore plus loin [que les protections actuelles du noyau de Windows], car tout le monde aurait un binaire unique du noyau », a-t-il expliqué.

« Donc, même si vous aviez l'adresse où le noyau débute (qui est randomisée), vous ne pourriez pas l'utiliser pour déterminer où se trouvent certaines fonctions, car l'emplacement des fonctions par rapport au début du noyau sera différent d’un système à l’autre », a-t-il ajouté.

Source : liste de diffusion OpenBSD

Et vous ?

Que pensez-vous de cette fonctionnalité ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de TiranusKBX TiranusKBX - Expert confirmé https://www.developpez.com
le 08/07/2017 à 14:48
Voila quelque chose d'intéressant, il et vrai qu'un mélange des 2 techniques serait un must mais je ne pense pas que cela se fasse sans difficultés
Avatar de marsupial marsupial - Membre éprouvé https://www.developpez.com
le 08/07/2017 à 18:42
Il serait effectivement intéressant que la thread linux y parvienne tout comme Microsoft.
Avatar de Iradrille Iradrille - Expert confirmé https://www.developpez.com
le 09/07/2017 à 6:33
Intéressant, reste à voir la granularité utilisé pour réordonner le binaire.

Si le kernel est découpé en une dizaine de "morceaux" mis dans un ordre aléatoire, c'est beaucoup plus simple de passer outre que si il est découpé en 100k morceaux.

Je me posais des questions sur le temps de boot, mais à priori ce n'est pas un problème
On a fast machine it takes less than a second (pour link le kernel lors de la phase de boot).
Quelque chose comme ça donne vraiment envi de bosser dans la sécurité: ça à l'air plutôt sympa d'essayer de trouver les morceaux qui restent statiques entre chaque reboot et comment ça peut être exploité.
Avatar de Thorna Thorna - Membre éclairé https://www.developpez.com
le 09/07/2017 à 21:50
Utilisable dans l'espoir de ne pas être tracé par les pubs ?
Avatar de abriotde abriotde - Membre éclairé https://www.developpez.com
le 09/07/2017 à 21:51
les morceaux qui restent statiques entre chaque reboot et comment ça peut être exploité
Je ne suis même pas certains que cela puisse être exploité par un attaquant. Parce qu'il me semble que le problème posé par un noyau aléatoire (ou chaque librairie est a une adresse aléatoire) c'est qu'en exploitant une faille d'un programme anodin, le pirate ne puisse pas corrompre tout le système. Explication même si un exploitant arrive par une faille a remonter dans la librairie "réseau" il ne puisse pas modifier l'adresse de boot (par décalage) ou la librairie "system (libc)". Il aura corrompu le réseau mais il en sera "prisonnier" puisqu'il ne saura pas ou aller... A moins peux t'être de trouver une parade (chercher une signature d'une autre librairie sur tout le système?) Le but d'une sécurité n'est pas de garantir la sécurité mais de compliquer la tâche des pirates, de les bloquer aussi bien que possible...
Avatar de ovh ovh - Rédacteur https://www.developpez.com
le 10/07/2017 à 13:26
C'est un peu ce que faisaient les virus polymorphes dans le temps non ? (et peut-être encore maintenant)
Avatar de BufferBob BufferBob - Expert confirmé https://www.developpez.com
le 12/07/2017 à 21:14
Citation Envoyé par ovh Voir le message
C'est un peu ce que faisaient les virus polymorphes dans le temps non ? (et peut-être encore maintenant)
oui et non, pour autant que je sache le polymorphisme ça consistait plutot en une couche de chiffrement, avec uniquement la clé qui changeait (et donc quelques octets seulement de la routine de déchiffrement), ça ça se rapproche plus de ce qu'on appelait "métamorphe" en fait, même si dans les deux cas les termes sont abusifs
Offres d'emploi IT
Gestionnaire de processus ITIL H/F
Sogeti France - Poitou Charentes - Niort (79000)
Architecte développeur symfony senior (projets nationaux)
Linagora - Ile de France - Puteaux (92800)
Recherche alter ego/associé(e)
myHerakles.fr - France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil