Isolement
Processus d'isolat de systèmes de deux manières.
Dans le premier, le processus est présenté avec un
environnement qui semble être un ordinateur fonctionnant seulement
que processus ou ces processus à isoler. Dans l'en second lieu,
on fournit un environnement dans lequel des actions de processus sont
analysées pour déterminer si elles fuient l'information. Le
premier type d'environnement empêche le processus d'accéder au
système informatique fondamental et tous les processus ou les
ressources qui ne sont pas une partie de cet environnement. Le
deuxième type d'environnement n'émule pas un ordinateur. Il
change simplement l'interface entre l'ordinateur existant et le
process(es).
Machines Virtuelles
Le premier type d'environnement s'appelle une
machine virtuelle.
Une machine virtuelle est un programme
qui simule le matériel du système informatique de a (probablement
abstrait).
Une machine virtuelle emploie un logiciel d'exploitation
spécial appelé un moniteur virtuel de machine pour fournir une
machine virtuelle sur laquelle les logiciels d'exploitation
conventionnels peuvent fonctionner
L'avantage primaire d'une machine virtuelle est
celui les logiciels d'exploitation existants n'a pas besoin d'être
modifié. Ils fonctionnent sur le moniteur virtuel de machine.
Le moniteur virtuel de machine impose la politique désirée de
sécurité. C'est transparent à l'utilisateur. Le
moniteur virtuel de machine fonctionne comme grain de sécurité.
En termes de politique, le moniteur virtuel de machine a
affaire avec des sujets (les sujets étant les machines virtuelles).
Même si une machine virtuelle court des centaines de processus,
le moniteur virtuel de machine sait seulement la machine virtuelle.
Ainsi, elle peut appliquer des contrôles de sécurité à ses
sujets, et ces commandes s'appliquent aux processus que ces sujets
courent. Ceci satisfait la règle de l'emprisonnement transitif.
EXEMPLE : Le KVM/370 était une version
sécurité-augmentée du moniteur virtuel de machine d'IBM VM/370.
Ce système a fourni les machines virtuelles pour ses
utilisateurs, et un de ses buts était d'empêcher des communications
entre les machines virtuelles de différentes classes de sécurité,
ainsi les utilisateurs dans différentes classes de sécurité
pourraient employer le système en même temps. Comme VM/370, il
a fourni aux machines virtuelles des minidisks et a permis à des
systèmes de partager quelques secteurs de disque. À la
différence de VM/370, il a employé une politique de sécurité pour
négocier l'accès aux secteurs partagés du disque pour limiter des
communications entre les systèmes. |
EXEMPLE : Karger et collègues à la Digital
Equipment Corporation Ont développé un moniteur virtuel de machine
(VMM) pour le DEC VAX. Le moniteur est un grain de sécurité et
peut exploiter le VMS ou le logiciel d'exploitation d'Ultrix.
Les courses VMM sur le matériel indigène de VAX et est
appelées toutes les fois que la machine virtuelle exécute une
instruction privilégiée. Sa structure est typique des machines
virtuelles conçues pour fournir la sécurité.
Le VAX a quatre niveaux de privilège : utilisateur,
surveillant, directeur, et modes de grain. Afin de fournir une
machine virtuelle compatible, les machines virtuelles doivent
également avoir quatre niveaux de privilège. Cependant, le
mode de grain permet à un processus d'accéder à des instructions
privilégiées sur le matériel de VAX directement. On permet
seulement Au le VMM de faire ceci. Les machines virtuelles ne
peuvent pas accéder au mode de grain. La solution est de
fournir des modes virtuels. Ces modes sont utilisateur de VM
(correspondant au mode d'utilisateur), mode de surveillant de VM, et
directeur de VM et des modes de grain de VM (les deux le mode
réellement exécutif).
Les sujets VMM sont des utilisateurs et des machines
virtuelles. VMM a un système de fichiers de base et plat pour
son usage personnel et des cloisons l'espace disque restant parmi les
machines virtuelles. Ces machines peuvent employer n'importe
quelle structure de dossier qu'elles désirent, et chaque machine
virtuelle a son propre ensemble de systèmes de fichiers. Chaque
sujet et objet fait former une étiquette à multiniveaux de
sécurité et d'intégrité, et les niveaux de sécurité et
d'intégrité une classe d'accès. Deux entités ont la même
classe d'accès si et seulement si leur sécurité et des étiquettes
d'intégrité sont identique, et une entité domine des autres si et
seulement si les classes de sécurité et d'intégrité dominent.
Un composant intégral du VMM est un mécanisme apurant.
Ce mécanisme enregistre des actions pour l'analyse
postérieure. |
Puisque les machines virtuelles fournissent la même
interface pour la communication avec d'autres machines virtuelles que
les ordinateurs fournissent, ces canaux de communication peuvent être
commandés ou ont divisé. Comme cité précédemment, si un
centre serveur simple court les machines virtuelles multiples, ces
machines virtuelles partagent les ressources physiques en centre
serveur sur lequel elles fonctionnent. (elles peuvent également
partager les ressources logiques, selon la façon dont le grain
virtualizing est mis en application.) Ceci fournit une terre
fertile pour les canaux secrets.
Sandboxes
Un sandbox de cour de jeu fournit un environnement
sûr pour des enfants pour rester dedans. Si les enfants
laissent le sandbox sans surveillance, ils peuvent faire des choses
qu'ils ne sont pas censés faire. Le sandbox d'ordinateur est
semblable. Il fournit un environnement sûr pour des programmes
pour s'exécuter dedans. Si les programmes "partent" du sandbox,
ils peuvent faire les choses qu'ils ne sont pas censé pour faire.
Les deux types de sandboxes limitent les actions de leurs
occupants.
Un sandbox est un
environnement dans lequel les actions d'un processus sont s'accorder
restreint à une politique de sécurité.
Les systèmes peuvent imposer des restrictions de deux
manières. D'abord, le sandbox peut limiter l'environnement
d'exécution comme nécessaire. Ceci est habituellement fait en
ajoutant les mécanismes devérification de frais supplémentaires aux
bibliothèques ou au grain. Le programme lui-même n'est pas
modifié. Par exemple, le grain VMM discuté plus tôt est un
sandbox parce qu'il contraint les accès des logiciels d'exploitation
(non modifiés) qui fonctionnent là-dessus. La machine
virtuelle de Java est un sandbox parce que son directeur de sécurité
limite l'accès des programmes téléchargés aux ressources de
système comme dictées par une politique de sécurité.
EXEMPLE : Le grain opérationnel du mur à
l'épreuve du feu de Sidewinder emploie le type application pour
confiner des processus. C'est un exemple d'un sandbox établi
dans un grain, et il a la propriété que le sandbox est défini par
le fournisseur. On ne le prévoit pas pour être changé à
l'emplacement. Une telle conception est typique pour un système
clés en main, qui est l'utilisation prévue pour un mur à l'épreuve
du feu de Sidewinder.
La machine virtuelle de Java, en laquelle a téléchargé
des applet sont exécutées, sont un autre exemple d'un sandbox.
Le sandbox limite l'ensemble de dossiers aux lesquels l'applet
peut accéder et des centres serveurs auxquels l'applet peut se
relier. D'autres mécanismes de sécurité augmentent le
sandbox.
DTE, le type mécanisme d'application pour DTEL, est un
exemple dans lequel les modifications de grain permettent à des
interfaces gestionnaire de configurer leurs propres sandboxes.
Le grain impose les contraintes. |
La deuxième méthode d'application est de modifier le
programme (ou le processus) à exécuter. Les programmes de mise
au point dynamiques et quelques profileurs emploient cette technique
en ajoutant des paliers au code et, quand le piège se produit, en
analysant l'état du processus courant. Un variable, connu en
tant qu'analyse de panne de logiciel, ajoute les instructions qui
exécutent des contrôles d'accès mémoire ou autre vérifie pendant
que le programme fonctionne, ainsi n'importe quelle tentative de
violer la politique de sécurité cause une erreur.
EXEMPLE : Janus met en application un sandbox.
C'est un environnement d'exécution dans lequel des appels de
système sont emprisonnés et vérifiés. Les utilisateurs
l'exécutent pour limiter les objets et les modes de l'accès de
l'untrusted le programme. Janus se compose d'un cadre, qui fait
la vérification d'exécution, et des modules, qui déterminent quels
accès doivent être laissés.
Janus lit d'abord un dossier de configuration. Ce
dossier lui demande pour charger certains modules. Avec le
module l'identification est une liste de contraintes. Le dossier
suivant de configuration d'exemple définit les Statistiques
financière internationale de variable d'environnement pour l'enfant
et limite l'accès de l'enfant au système de fichiers. L'enfant
ne peut accéder à aucun dossiers excepté ceux qui sont appelés
ci-dessous. L'enfant peut lire ou écrire à n'importe quel
dossier dans le système de fichiers de /usr excepté ceux dans le
/usr/lib et les annuaires de /usr/local/lib (qui sont lus seulement)
et dans /usr/bin (lu et s'exécuter). L'enfant peut lire
n'importe quel dossier dans l'annuaire de /lib et peut lire et
exécuter n'importe quel dossier dans les annuaires de /sbin et de
/bin. Dans le dossier de configuration ci-dessous, le premier
mot dans chaque ligne d'instruction est le nom du module et les autres
mots sont les arguments passés aux modules ("#" commence un
commentaire).
# module de base de base
# définissez le putenv IFS="\t\n"
PATH=/sbin:/bin:/usr/bin TZ=PST8PDT de variables d'environnement de
sous-processus
# niez l'accès à tout à moins que les dossiers
sous le chemin de /usr nient lu, écrivent * le chemin laissent
indiqué, écrivent /usr/* # permettent au sous-processus de lire des
dossiers dans des annuaires de bibliothèque # nécessaire pour le
chemin dynamique de chargement laissent lisent /lib/* /usr/lib/*
/usr/local/lib/* # nécessaire ainsi l'enfant peut exécuter des
programmes que le chemin permettent indiqué, l'exec /sbin/* /bin/*
/usr/bin/*
Chaque module contraint des appels de système.
Le cadre utilise les modules pour établir une liste liée pour
chaque appel surveillé de système. La liste définit des
actions permises et rejetées. Une fois que cette liste a été
construite, le cadre de Janus appelle le programme de telle manière
que tous les appels surveillés de système soient emprisonnés.
Quand le programme exécute un appel surveillé de
système, les pièges de programme et le cadre de Janus est appelés.
Il a accès aux arguments fournis à l'appel de sysem. Il
valide qu'on permet l'appel de système, avec ces paramètres
spécifiques. Si on ne permet pas l'appel de système, le cadre
place l'environnement de l'enfant de sorte que l'appel de système
semble avoir échoué. Si on permet l'appel de système, le
cadre renvoie la commande à l'enfant, qui passe alternativement la
main au grain. Sur le retour, la commande va au cadre, qui met
à jour n'importe quel état interne et renvoie les résultats à
l'enfant.
Une utilisation d'exemple serait dans le courrier de MIME
de lecture. On pourrait avoir placé le programme de lecture de
courrier pour passer la main à un moteur d'affichage de
post-scriptum. Quelques tels moteurs ont un mécanisme pour
exécuter des commandes au niveau système incluses dans le dossier de
post-scriptum. Par conséquent, un attaquant a pu mettre une
commande de suppression de dossier dans le dossier de post-scriptum.
Le destinataire courrait le moteur d'affichage pour lire le
dossier, et une partie d'elle des dossiers serait supprimée.
Cependant, l'utilisateur (ou l'interface gestionnaire) peut
installer le dossier de configuration de Janus rejettent l'exécution
de tous les sous-programmes. La commande incluse sera détectée
(à l'appel de système pour l'exécuter) et alors rejetée. |
Comme un moniteur virtuel de machine, un sandbox fait
partie de la base de calcul de confiance. Si le sandbox échoue,
il assure moins de protection qu'on l'est censé pour fournir.
Par conséquent, assurer que le sandbox met en application
correctement une politique désirée de sécurité est critique à la
sécurité du système.
c'est un article supplémentaire par Fred Foster