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 : , ,

Vous lisez 5 fils de discussion
  • Auteur
    Messages
    • #3948
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      OlivierOlivier
      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-Faustin / Université Nice Sophia Antipolis

    • #3957
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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
        Merci, ca m’a aidé
        Up
        0
        Down
        Pas très utile.
        OlivierOlivier
        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 années et 3 mois par OlivierOlivier.
        • Cette réponse a été modifiée le il y a 2 années et 3 mois par OlivierOlivier.

        Olivier Bado-Faustin / Université Nice Sophia Antipolis

      • #3962
        Merci, ca m’a aidé
        Up
        0
        Down
        Pas très utile.
        OlivierOlivier
        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 années et 3 mois par OlivierOlivier.

        Olivier Bado-Faustin / Université Nice Sophia Antipolis

    • #3958
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      bernadette
      Admin bbPress

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

    • #3966
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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 lisez 5 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.