Avenir de PaX

PaX Tux PaX est un patch pour le noyau Linux permettant de se protéger contre l'exploitation des dépassements de tampons. Plusieurs techniques sont mises en œuvre, comme rendre la pile non exécutable (Executable space protection) ou rajouter de la randomisation (Address space layout randomization). Ce patch, développé depuis 2000 par The PaX Team, un groupe anonyme, n'est pas inclus dans le noyau officiel pour diverses raisons (patch trop gros et intrusif, pas d'efforts fait dans ce sens par The PaX Team, ...). Il est en revanche inclus dans grsecurity, un autre patch noyau, développé par Brad Spengler, qui permet entres autres de renforcer la sécurité au seins des chroot et qui intègre RBAC, un contrôle d'accès à base de rôles.

Brad Spengler, a récemment annoncé sur la liste de diffusion de grsecurity que l'avenir de PaX était incertain[1]. Bien qu'aucune décision ne semble avoir été prise pour l'instant, la raison invoquée est le travail considérable nécessaire pour adapter PaX aux nouvelles versions du noyau 2.6. La fréquence de ces dernières étant importante et surtout introduisant de plus en plus de changements à chaque fois :

It is not clear if the PaX Team will be able to continue supporting future versions of the 2.6 kernels, given their rapid rate of release and the incredible amount of work that goes into porting such a low-level enhancement to the kernel (especially now in view of the reworking of the i386/x86-64 trees).

Une partie du patch touche en effet un certain nombre de fichiers ASM, notamment pour implémenter le bit NX sur i386. Or, comme depuis le 2.6.24 il a été décidé de fusionner x86_64 et i386 en une architecture x86[2], ce travail d'adaptation de PaX est d'autant plus important.

It may be necessary that grsecurity instead track the Ubuntu LTS kernel so that users can have a stable kernel with up-to-date security fixes.

Le choix qui semble privilégié est de suivre une version du noyau particulière, d'une distribution particulière. Le choix d'Ubuntu semble hautement discutable, déjà parce que son noyau n'est pas standard, et donc PaX ne s'appliquera pas sur une version du noyau téléchargée depuis kernel.org. Stabiliser le patch pour une version spécifique du noyau semble en revanche intéressant, c'est le choix qu'on fait par exemple les développeur de Xen, d'OpenVZ, en fournissant des patchs pour la version 2.6.18 du noyau.

L'idéal serait de fusionner tout ou partie de PaX dans la version officielle du noyau, mais comme le rappelle Brad Spengler sur le forum de grsecurity[3], ce n'est pas à l'ordre du jour. De plus, ça ne réglerait pas grand chose selon lui :

Neither PaX nor grsecurity will be accepted into the kernel. Just getting it into the mainline kernel doesn't solve any problems anyways. If there is no maintainer for some code, it gets removed. If no one will work on PaX outside of the mainline kernel, no one will work on PaX when it's in the mainline kernel.

La version officielle de Linux part plutôt vers Exec Shield, moins performant, mais développé sous forme de patchs plus petits et plus facilement intégrables (et surtout développé par Ingo Molnar, kernel hacker reconnu). Certains éléments ont d'ailleurs déjà été intégrés, dans le 2.6.25 notamment.

Notes

[1] « grsecurity 2.1.11 released for Linux 2.4.36.2/2.6.24.4 » par Brad Spendler

[2] « i386 and x86_64: back together? » sur LWN.net (commit)

[3] « Future of 2.6 support sur le forum de Grsecurity

Linux-2.6.18 : support des smartbatteries

Tux A partir de la version 2.6.18, le noyau Linux supporte les smart batteries « out-of-the-box » ! Il faudra quand même recompiler son noyau pour activer cette option :

- Power Management support --->
     ACPI ... --->
        <*> Smart Battery System (EXPERIMENTAL)

Ceux qui ont un portable Acer (1683 par exemple :) ) vont enfin pouvoir faire marcher leur batterie sans avoir à modifier leur table DSDT...

J'ai mis à jour la documentation pour installer Debian sur un Acer 1683 (qui du coup ne sert plus à grand chose...).

Encore plus loin avec les SBS

Je parlais dernièrement du support des smart battery sous Linux. Rich Townsend a bien travaillé sur la chose et a ajouté le support de l'interface /proc/acpi (ac_adapter, battery et sbs qui lui permet de récupérer des informations sur la batterie). Pour le faire marcher, il faut patcher le noyau et compiler 2 petits modules. Il ne s'agit encore que d'un début : Rich Townsend devrait s'attaquer à une intégration propre dans le noyau !

La dernière version (à ce jour) est disponible ici. Vous trouverez des informations à jour sur la mailing list d'ACPI4Linux, et vous pouvez consulter ma page sur la configuration d'un Acer Aspire 1683 sous Debian.

Enfin un début de support des smartbattery !

C'est un grand jour, Bruno Ducrot vient de fournir un premier outil permettant de récupérer le status des smart batteries sous GNU/Linux. Il s'agit de batteries super top génial mega cool selon Acer, mais qui ne marchent pas du tout sous mon (votre ?) OS favori. Cet outil nécessite un petit patch noyau, et ne marche qu'en ligne de commande (mais qui marche ;) ) :

$ sudo ./smartbattery 0
status: charging
current:       159 mA
time to full:  39 minutes
remain:        1877 mAh
temperature:   27.6 C
voltage:       16853 mV

Il n'y a pas encore d'intégration à /proc, mais c'est déjà une très bonne nouvelle pour tout les possesseurs d'Acer avec de smart batteries ! Vous trouverez tout le bazar ici, et les discussions se font sur la mailing list ACPI devel.