Grsecurity/PaX_logoConnaissez-vous le projet Grsecurity/PaX ? NBS System tient aujourd’hui à mettre en lumière ce composant essentiel de son infrastructure CerberHost, le Cloud de très haute sécurité.
Il s’agit d’un des projets qui a révolutionné littéralement l’industrie de la sécurité informatique depuis plus de 15 ans à de multiples reprises, et continue de le faire, grâce au génie de ses deux développeurs principaux, Pipacs (développeur hongrois anonyme de PaX) et Brad « spender » Sprengler (pour Grsecurity).

Ils sont à l’origine de nombreuses solutions de défense que beaucoup pensaient infaisables, et – heureusement pour nous – les mettent librement et gratuitement à disposition de tous dans un projet OpenSource ! Quand beaucoup de développeurs se bornent à corriger les bugs quand ils apparaissent, ce duo de choc extermine complètement des types de vulnérabilités !

Le projet Grsecurity/PaX est un patch tiers de durcissement de noyau Linux, qui bloque tous les exploits disponibles publiquement à ce jour. Le fait qu’il ne soit pas directement intégré dans le noyaux Linux (à la fois pour des raisons techniques, mais aussi politiques) mais qu’il faille l’appliquer à chaque mise à jour, ajoute du temps de maintenance, mais le jeu en vaut la chandelle.

Parmi les nombreuses fonctionnalités de Grsecurity/PaX voici les plus proéminentes :

  • ASLR : cette fonctionnalité a tout d’abord fait son apparition dans PaX en 2001, avant d’être massivement adoptée par l’intégralité des systèmes d’exploitation modernes (Linux, OSX, Windows, BSD, …). Il s’agit d’une protection contre plusieurs familles de vulnérabilités de type « corruption mémoire » : en plaçant aléatoirement en mémoire les différentes parties des programmes (zone de code, zone mémoire, …), elle empêche les pirates de se repérer, les obligeant à lancer des attaques à l’aveugle en espérant deviner juste ; c’est un peu comme tenter de marquer un panier de basket dans le noir complet.
  • UDEREF et KERNEXEC : Dans la plupart des systèmes d’exploitation modernes, il y a deux espaces distincts : celui du noyau et celui des utilisateurs. Si un pirate parvenait à demander au noyau d’exécuter du code dans l’espace utilisateur (sur lequel il a les droits), il aboutirait à une compromission totale du système. Grsecurity/PaX empêchent ce cas de figure, en limitant les droits du noyau. Pour accéder à l’espace utilisateur depuis le noyau, ils obligent le pirate à utiliser des fonctions particulièrement strictes, limitant sa marge de manœuvre et lui mettant donc encore plus de bâtons dans les roues pour exécuter du code malveillant.
  • Actions sur le compilateur : Le noyau Linux ne peut être officiellement compilé que sur un seul compilateur : celui du projet GNU, appellé « gcc ». Le développeur de PaX, entre deux avancées majeures en matière de défense informatique, s’amuse à rendre le noyau compilable par le biais d’un autre compilateur, « clang ». En attendant que ce dernier soit officiellement supporté, le projet utilise le système de plugins de gcc pour instrumenter et automatiser encore plus de choses, pour empêcher les attaquants de parvenir à leurs fins. Il ajoute par exemple encore plus d’aléa dans la position des structures de données critiques (toujours plus difficiles à retrouver), ou en restreignant les droits d’écriture dans des zones mémoires sensibles.
  • pax_tuxRéponse automatique aux attaques : De manière générale, quand un processus essuie des tentatives d’attaques, le système d’exploitation le relance à chaque crash, permettant à l’attaquant de revoir son attaque et de la modifier jusqu’à ce qu’elle fonctionne. Cependant, le patch Grsecurity/PaX détecte ce genre de comportements et prend des mesures appropriées pour faire échouer l’attaque. Par exemple, si un utilisateur génère trop de crashs, ses processus seront tués, il sera éjecté de sa session et dans l’impossibilité de se reconnecter, tandis que ses actions précédentes seront enregistrées et que l’administrateur sera prévenu. Quand il ne s’agit pas d’un utilisateur lambda, mais d’un processus/utilisateur privilégié, il est possible de configurer le patch pour crasher délibérément le système après avoir enregistré le plus possible d’informations : c’est la mort plutôt que la soumission.
  • TPE (Trust Path Execution) : il s’agit d’une « whitelist » de fichiers pouvant être exécutés. Ainsi, les utilisateurs (et les attaquants) ne pourront pas exécuter autre chose que les fichiers autorisés par l’administrateur.
  • RBAC (Role Based Access Control) : Il s’agit d’un système de sécurité développé par Spender pendant sa thèse, agissant comme une surcouche de protection. Doté d’une capacité d’auto-apprentissage, elle étudie le comportement des programmes et une fois renseigné, interdit formellement tout comportement sortant de la norme observée. Par exemple, un serveur web n’a pas à accéder aux fichiers des autres utilisateurs de la machine ; même si le système d’exploitation l’y autorise (ce qu’il ne devrait pas faire), RBAC veille, et l’interdira.

N’hésitez pas à visiter leur site pour retrouver toutes leurs fonctionnalités, ainsi que le nombre impressionnant de papiers et articles écrits sur ce monument de la sécurité informatique !

Ce patch extrêmement efficace est, comme mentionné plus haut, gratuit et OpenSource. NBS System est donc particulièrement fier de soutenir ce projet, en faisant partie de ses 12 sponsors publics. En effet, non-agréé à contribuer à son code source, nous remontons des bugs quand il y en a et soutenons financièrement le projet. Le fait que ce patch soit disponible gratuitement ne signifie pas qu’il n’y a pas de coût (matériel ou humain) derrière, et nous estimons donc qu’il est important, et juste, pour les utilisateurs de ce type de technologies de les soutenir à hauteur de leurs moyens, pour ne pas que le projet périclite.

Lucie Saunois
Lucie Saunois
Passionnée d'informatique, en particulier de sécurité, depuis qu'elle a rejoint l'OT Group en 2015, Lucie se spécialise dans la vulgarisation technique pour permettre à tous d'appréhender ces sujets parfois complexes.