Le principe des outils comme seccomp, c'est d'autoriser/interdire chaque syscall un par un (il existe un mode "simple", qui n'autorise que read(2), write(2), _exit(2) (削除) et un autre dont je ne me souviens plus, (削除ここまで) sigreturn(2)).
Le problème c'est que si tu dois faire passer ton programme dans une moulinette qui t'indique les syscall utilisés, c'est sous-optimal et pas forcément pratique. De plus c'est complexe.
Prenons un exemple : imagine que tu analyses un serveur web que tu as codé toi-même. Pour savoir quel syscalls sont utilisés, tu as deux choix, lire statiquement le code source de ton programme et déterminer lesquels sont des syscalls, et retourner la liste (complexe + cher, mais marche à tous les coups). L'autre solution c'est de lancer ton programme et de regarder les syscalls qui apparaissent au fur et à mesure et à la fin retourne lui aussi la liste des syscalls (simple + léger, mais si un syscall n'a pas apparu durant ton exécution, alors certains auront des problèmes).
Le principe de tame, c'est d'autoriser/interdire des groupes d'opérations au cours de l'exécution (hors initialisation du programme, là où des opérations privilégiées sont nécessaires).
[^] # Re: seccomp-bpf
Posté par ntimeu . En réponse au journal Tame et OpenBSD. Évalué à 1. Dernière modification le 23 juillet 2015 à 10:29.
Post de Theo paragraphe 4.
Le principe des outils comme seccomp, c'est d'autoriser/interdire chaque syscall un par un (il existe un mode "simple", qui n'autorise que read(2), write(2), _exit(2)
(削除) et un autre dont je ne me souviens plus, (削除ここまで)sigreturn(2)).Le problème c'est que si tu dois faire passer ton programme dans une moulinette qui t'indique les syscall utilisés, c'est sous-optimal et pas forcément pratique. De plus c'est complexe.
Prenons un exemple : imagine que tu analyses un serveur web que tu as codé toi-même. Pour savoir quel syscalls sont utilisés, tu as deux choix, lire statiquement le code source de ton programme et déterminer lesquels sont des syscalls, et retourner la liste (complexe + cher, mais marche à tous les coups). L'autre solution c'est de lancer ton programme et de regarder les syscalls qui apparaissent au fur et à mesure et à la fin retourne lui aussi la liste des syscalls (simple + léger, mais si un syscall n'a pas apparu durant ton exécution, alors certains auront des problèmes).
Le principe de tame, c'est d'autoriser/interdire des groupes d'opérations au cours de l'exécution (hors initialisation du programme, là où des opérations privilégiées sont nécessaires).