6 votes

Exécuter le code utilisateur en toute sécurité

Je dois marquer le code C et cela implique en partie d'exécuter et de chronométrer leurs soumissions. Le problème est que leur code s'exécute alors en tant que moi et qu'ils peuvent en principe faire ce qu'ils veulent en utilisant mes paramètres d'autorisation. Par exemple, ils pourraient copier ma clé privée ssh.

Je pourrais mettre en place une machine virtuelle et y exécuter leur code (bien que je ne sois pas entièrement sûr de la meilleure façon de verrouiller cela non plus). Le problème est que les performances en termes de vitesse ne seront plus réalistes. Je pourrais fournir la même machine virtuelle à tous les utilisateurs pour qu'ils testent leur code à l'avance, de sorte qu'ils aient au moins la même configuration à tester.

Existe-t-il un bon moyen de mettre en place un environnement dans lequel vous pouvez exécuter du code écrit par d'autres personnes tout en limitant les dégâts qu'il peut causer ?

0voto

jiakai Points 101

J'ai travaillé sur un système similaire il y a quelques années. Ce que j'ai fait, c'est utiliser ptrace pour limiter les appels système (voir le code aquí ), et éventuellement changer l'identifiant de l'utilisateur ou le chroot. Si les programmes sont simples, n'impliquant que des algorithmes purs et des tâches d'E/S de base, il s'agit d'une solution pratique que vous pouvez envisager.

BTW, il convient de mentionner que vous devriez également limiter l'utilisation du compilateur en termes de temps et de mémoire. Certains programmes malveillants peuvent inclure des directives telles que #include </dev/random> ce qui pourrait bloquer le compilateur pendant un long moment, ou certaines macros récursives qui font que le compilateur consomme beaucoup de mémoire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X