URL: https://linuxfr.org/users/patrick_g/journaux/tame-et-openbsd Title: Tame et OpenBSD Authors: patrick_g Date: 2015年07月20日T10:24:49+02:00 License: CC By-SA Tags: tame, openbsd, theo_de_raadt, seccomp, sécurité et grsecurity Score: 67 Juste un petit journal pour vous signaler[ un post intéressant de Theo de Raadt](http://www.mail-archive.com/tech@openbsd.org/msg24665.html) (leader d'OpenBSD) sur la liste "Tech". Dans ce post il présente **tame**, un outil sur lequel il travaille depuis un certain temps et qui vise à réduire les droits d'un programme afin de diminuer la surface d'attaque. Theo commence par évoquer très brièvement les alternatives et pourquoi, selon lui, elles ne conviennent pas. - Capsicum nécessite de réécrire profondément le programme qui sera protégé. - D'autres approches (comme systrace) manquent de granularité et surtout bloquent les droits pendant toute la durée d'exécution du programme alors qu'il faudrait être permissif lors de l'initialisation pour ensuite verrouiller lors de l'exécution (main loop). - Les approches du style seccomp-bpf obligent à écrire un nouveau programme pour observer le programme initial. Selon Theo _"That is insane"_. Après ce dégommage succinct des alternatives il présente sa propre solution. Il s'agit d'un nouvel appel système qui serait inséré dans le programme, entre l'étape d'initialisation et la boucle principale d'exécution. Cet appel spécifie quels groupes de droits sont accordés au programme (et si le programme tente une opération non permise il est immédiatement killé). Parmi ces groupes de droits on trouve des trucs comme TAME_MALLOC (droits d'allocation mémoire), ou TAME_RW (droits read-write sur le ystème de fichiers) etc, etc. Cela ressemble donc bougrement aux [Capabilities POSIX](http://linux.die.net/man/7/capabilities) qui découpent les privilèges des programmes root en une trentaine de droits différents. Mais, à première vue, il y a deux différences. Tout d'abord, au lieu d'être défini par des attributs étendus, l'appel système **tame** est invoqué directement par le code du programme, après l'initialisation, et cela permet de réduire les droits au strict minimum nécessaire à l’exécution. Ensuite les groupes de droits définis par Theo ne suivent pas les frontières des Capabilities POSIX. Peut-être sont-ils mieux adaptés et plus facile à utiliser par les programmeurs ? Dans son post Theo cite 29 programmes qui ont été modifiés pour inclure l'appel à **tame** : `cat pax ps dmesg ping ping6 dc diff finger from id kdump logger script sed signify uniq w wc whois arp authpf bgpd httpd ntpd relayd syslogd tcpdump traceroute`. Le travail sur ces 29 programmes n'est pas terminé et le diff vise avant tout à montrer de quoi est capable ce nouveau système de restriction des droits. À première vue difficile de savoir si **tame** constitue une avancée notable qui intéressera les développeurs en dehors d'OpenBSD. Les Capabilities POSIX sont complexes, notoirement sous-utilisées et elles sont vertement critiquées (voir [cet article de Spender](http://forums.grsecurity.net/viewtopic.php?f=7&t=2522&sid=c6fbcf62fd5d3472562540a7e608ce4e#p10271)) car les droits sont trop larges et les groupes trop fourre-tout. Je ne sais pas si **tame** a une chance de sortir du microcosme OpenBSD. Il est probable que seccomp-bpf (plus puissant, plus flexible) restera la solution reine de restriction des programmes sous Linux.