10
votes

Quel est le moyen le plus sûr d'exécuter un exécutable sur Linux?

J'essaie d'exécuter un programme compilé du code C d'une source inconnue. Je veux m'assurer que le programme ne nuit à mon système de toute façon pas. Comme par exemple, le programme pourrait avoir la soirée comme un système ("rm -rf /") dans la source, non détectable, à moins que le code soient minutieusement examiné.

J'ai pensé aux deux manières suivantes

  1. exécutez-le à l'intérieur d'un VM comme VMware
  2. Construisez un exe Windows sous Linux et exécutez du vin

    Les deux ne sont pas des solutions très élégantes et je ne peux pas les automatiser. Et aussi, en cas de 1, il peut nuire à la machine virtuelle.

    Toute aide serait appréciée.

    Je veux exécuter le programme dans ce que nous pouvons appeler un "sandbox".


3 commentaires

J'ai pensé à Chroot, mais cela n'arrête pas les bombes de fourchettes et les autres problèmes d'appel système. Merci


QS similaire sur les processus de sandboxing / jailing in Linux ou UNIX: * Unix.stackexchange.com/q/6433/4319 * Stackoverflow.com/q/4410447/94687 * Stackoverflow.com/q/4249063/94687 * Stackoverflow.com/q/1019707/94687


Le vin n'a absolument aucune valeur pour contenir l'exécutable. Exécuter un vin exécutable en tant que root et vous pouvez essuyer votre système


9 Réponses :


1
votes

Créer un utilisateur qui a un accès en écriture uniquement aux répertoires non critiques. Exécutez le programme comme cet utilisateur. Si vous êtes également intéressé par la vie privée, envisagez également de limiter ses droits de lecture.


0 commentaires

1
votes

La page Wikipedia pour chroot peut être un bon départ. Il décrit Chroot et fournit également des liens vers quelques alternatives plus approfondies.


0 commentaires

1
votes

chroot est une possibilité si vous voulez l'isoler de tout le reste, mais j'ai toujours un environnement pour qu'il soit exécuté.

http://en.wikipedia.org/wiki/chroot

https://help.ubuntu.com/community/basicchroot


0 commentaires

2
votes

Vous pouvez utiliser quelque chose comme Schroot et chroot le programme, mais quelque chose d'une matière suffisante va éclairer de cela.

Vous avez le meilleur choix est probablement une machine virtuelle (VMware ou VirtualBox) et prenant un instantané avant de compiler et d'exécuter le programme. De cette façon, vous pouvez revenir en arrière si quelque chose se trompe horriblement.


3 commentaires

En fait, vous devriez simplement le rouler après les tests de toute façon, car vous n'avez peut-être pas remarqué ce qui s'est échappé horriblement.


@CAF True, s'il est inintéressé, il est intraduisé. Ne faites pas de boue et de restauration de toute façon.


Les machines virtuelles ne sont pas exactement un environnement sécurisé non plus, si le programme étant exécuté sait qu'il est en une.



6
votes

Consultez Secompanp . Il a été conçu pour ce cas d'utilisation.


1 commentaires

C'est vraiment très bon si ça marche! Je vais essayer de mettre en œuvre cela et de le signaler ici si cela fonctionne. Merci @florin!



4
votes

Geordi utilise une combinaison de chroot et d'interception de SysCalls pour compiler puis le code arbitraire de la boite de sable. < / p>


1 commentaires

Geordi Source a beaucoup d'idées que je peux utiliser. Merci!



0
votes

exécutez-le sur un ordinateur non réseau que vous allez re-image une fois que cela est fait. Il n'y a pas de moyen sûr de l'exécuter sur une machine et de continuer à faire confiance à cette machine par la suite.


0 commentaires

4
votes

J'ai écrit un Aperçu des méthodes de sandboxing sur Linux (archivé) ici. Vous êtes préférable d'utiliser des conteneurs Linux (LXC) ou SELINUX, à mon avis. Vous pouvez utiliser une solution de virtualisation et l'automatiser, mais c'est beaucoup plus d'effort.

LXC isolez vos processus, système de fichiers et réseau, et vous pouvez définir des limites de ressources sur le conteneur. Il y a toujours des risques d'attaque de noyau, mais ils sont beaucoup réduits.


0 commentaires

0
votes

En plus d'autres réponses, en utilisant strace ou ltrace peut vous aider à comprendre ce que fait le programme.


0 commentaires