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 J'ai pensé aux deux manières suivantes p>
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. P>
Toute aide serait appréciée. P>
Je veux exécuter le programme dans ce que nous pouvons appeler un "sandbox". P> ("rm -rf /") code> dans la source, non détectable, à moins que le code soient minutieusement examiné. P>
9 Réponses :
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. P>
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. P>
chroot code> est une possibilité si vous voulez l'isoler de tout le reste, mais j'ai toujours un environnement pour qu'il soit exécuté. P>
Vous pouvez utiliser quelque chose comme Schroot et chroot le programme, mais quelque chose d'une matière suffisante va éclairer de cela. p>
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. P>
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.
Consultez Secompanp . Il a été conçu pour ce cas d'utilisation. P>
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!
Geordi utilise une combinaison de chroot et d'interception de SysCalls pour compiler puis le code arbitraire de la boite de sable. < / p>
Geordi Source a beaucoup d'idées que je peux utiliser. Merci!
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. P>
J'ai écrit un Aperçu des méthodes de sandboxing sur Linux (archivé) em> 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. P>
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. P>
En plus d'autres réponses, en utilisant strace code> ou
ltrace code> peut vous aider à comprendre ce que fait le programme. P>
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 a>
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