Exécution sécurisée de code

Accueil Forums Programmation WIMS Programmation dans le langage wims Exécution sécurisée de code

Mots-clés : , ,

Ce sujet a 7 réponses, 4 participants et a été mis à jour par  jm.evers, il y a 2 mois et 1 semaine.

  • Auteur
    Messages
  • #3948
    Nicolas Thiéry
    Nicolas Thiéry
    Participant

    Ce message est pour information, et pour founir un peu de contexte au message qui suivra.

    Avec Judicaël Courant, prof en classes prépa au Lycée de la Martinière
    à Lyon, nous avons fait la semaine dernière un sprint pour implanter
    une nouvelle primitive dans WIMS permettant d’exécuter, depuis un
    exercice OEF quelconque, du code arbitraire de manière sûre dans un bac à sable
    isolé. Xiao avait développé dans les années 2000 une commande
    similaire ch..root; celle ci a des soucis de portabilité et
    n’est donc pas activée dans WIMS. En gros on reprend le flambeau
    avec les technologies actuelles (docker, …).

    Notre cas d’utilisation est la création d’exercices WIMS pour
    l’informatique, où les étudiants doivent écrire des programmes et être
    évalués dessus. En l’occurence c’est pour le moment pour la première
    année d’université et les classes préparatoires respectivement.

    Voici la description proposée de cette primitive:

    secure_exec <dir> <cmd>

    Transfère dans un bac à sable le contenu du sous-répertoire
    <dir> du répertoire de session de l’étudiant, et y exécute la
    commande <cmd>.

    EXEMPLE:

    \text{output = wims(exec secure_exec « tmp » « python fichier.py »)}

    Dans la pratique, l’exécution est déportée sur un service web distant.
    L’utilisation de secure_exec nécessite donc de déployer un tel service
    web. Notre déploiement actuel, hébergée sur le cloud de l’université
    Paris Sud, utilise docker pour l’isolation. Le code dans son état
    actuel (expérimental) est sur:

    https://gitlri.lri.fr/nthiery/wims-info/tree/master/secure_exec

    Au total, il s’agit de quelques lignes côté client (=serveur wims) et
    2-3 pages — configuration comprise — côté service web. Il
    faudra rajouter en sus la documentation.

    Nous rajouterons des précisions ici lorsque ce projet aura maturé; j’espère dans quelques jours/semaines. D’ici là, nous sommes preneurs de commentaires et suggestions, sur la syntaxe, l’implantation ou des usages potientiels.

  • #3954

    Olivier
    Admin bbPress

    Juste une précision sur le système « ch..root » de Xiao Gang : Celui-ci est toujours actif sur le serveur « wims.unice.fr », ainsi que au moins sur le serveur de Joke Evers si je ne me trompe pas.

    Olivier Bado - Université Nice Sophia Antipolis

  • #3957

    bernadette
    Admin bbPress

    Oui, mais je ne pense pas qu’il soit suffisant pour permettre l’exécution de programmes par n’importe qui.

    Les modules d’informatique qu’avait fait Xiao demandaient autre chose.

    Bernadette

    • #3960

      Olivier
      Admin bbPress

      Les modules d’informatique qu’avait fait Xiao demandaient autre chose.

      En effet : il me semble que ce qu’avait mis en place Xiao Gang pour sécuriser son serveur (en plus de chroot), c’était son systeme « sysmask »

      les sources sont toujours ici :
      sourceforge.net/projects/sysmask

      Et la doc ici : wims.unice.fr/sysmask/doc

      • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par  Olivier.
      • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par  Olivier.

      Olivier Bado - Université Nice Sophia Antipolis

    • #3962

      Olivier
      Admin bbPress

      Notez également que grace à l’Internet Web archive, on retrouve le module WIMS qui permettait aux potentiels hackers de tenter de contrer son systeme de sécurité.
      http://web.archive.org/web/20080601200544/http://wims.unice.fr/wims/wims.cgi?module=adm/unice/challenge

      Et il est toujours resté inviolé.

      Aujourd’hui Wims.unice.fr est installé sur un autre serveur sans sysmask, c’est pourquoi le module challenge ne s’y trouve plus.

      • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par  Olivier.

      Olivier Bado - Université Nice Sophia Antipolis

  • #3958

    jm.evers
    Participant

    A language like python could be incorporated in a chroot environment, for creating programming exercises.
    Escaping a correctly stripped down chroot jail is not very easy…and only managed by very good students 🙂

  • #3965

    bernadette
    Admin bbPress

    But an exercise on wims can be done by anybody ! not uniquely by our students !

  • #3966

    jm.evers
    Participant

    it was a small joke…

    but that’s why you can’t make exercises using perl,python,C,lisp,haskell,ruby etc.etc. in a wims chroot : because they are not installed…however in servers -without the extra security of a chroot- one can try to escape to the « real system » ,when exploiting some « new_and_unknown_to_wims_security_flaw » in the aux. software needed by wims.

Vous devez être connecté pour répondre à ce sujet.