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