• [^] # Re: euh je ne suis pas certain d'avoir compris

    Posté par . En réponse à la dépêche Sandboxing fin dans le noyau linux : la saga des filtres seccomp. Évalué à 4.

    Non, l'abandon de privilège peut être fait au sein de libpng, de façon purement locale. Par exemple libpng pourrait choisir de forker un thread pour parser les headers (opération notoirement sensible aux buffer overflow comme tout ce qui touche aux chaînes en C) qui, à la naissance, abandonne tous ses privilèges sauf celui de renvoyer des données correspondant au header sur un pipe pour son papa. Une faille de sécurité dans ce code de parsing de headers sera donc probablement sans danger1.

    Je n'aime pas trop le mot "sandbox" car il fait penser à un changement de contexte à un coup, qu'on peut utiliser quelque part une seule fois et c'est fini. L'abandon de privilège de capsicum ou seccomp_filter est composable, peut se répéter pour s'affiner encore. Si les tâches qui utilisent libpng ont déjà abandonné une partie de leurs privilèges pour la partie de leur travail qui appelle libpng, c'est tant mieux, mais dans tous les cas libpng peut se re-compartimentaliser en interne, pour gérer les droits restants avec une granularité plus fine.

    1: dans le sens où une exécution de code arbitraire ne sera pas possible; par contre un attaquant peut injecter le header qu'il veut, et parier sur un bug ensuite de traitement du header. C'est à regarder avec soin, mais le gain de sécurité lié à l'abandon de privilège reste très important (on passe de "hop avec une image craftée je peux te pousser à formater ton /home/foo" à quelque chose de beaucoup moins dangereux dans le cas courant).