web-dev-qa-db-fra.com

Apparmor peut-il restreindre les langages interprétés?

Pour les langages interprétés/vm (par exemple, les scripts python, Java et Shell), peut-on configurer apparmor pour ne confiner qu'un script ou un programme particulier? Si c'est le cas, comment?

7
Ian N

Oui c'est possible. Il est également utilisé dans Ubuntu, notamment au téléphone.

Pour obtenir un script apparmor de base, vous pouvez utiliser aa-autodep à partir du paquet apparmor-utils.

Exemple rapide pour python:

cat >> ~/myapp << EOF
#! /usr/bin/python
EOF

Sudo aa-autodep ~/myapp

cat /etc/apparmor.d/home.<user-name>.myapp

Cela vous donnera quelque chose comme:

# Last Modified: Mon Feb 24 18:31:50 2014
#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/python>

  /home/sam/myapp r,
  /usr/bin/python2.7 ix,

}

Ensuite, vous pouvez développer cela.

2
labsin

En fait, utiliser '/usr/bin/python2.7 ix' n'est pas une bonne idée. Le code exploité pouvant exécuter python à partir de Shell, par exemple: python -c 'du code malveillant'. Ce n’est certainement pas ce que vous voulez et casse totalement le concept de bac à sable (ce qu’apparmor est)

#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>


  /home/sam/myapp r,
  /usr/bin/python2.7 Cx -> trusted_domain,

  profile trusted_domain {

   #include <abstractions/....>

   #include <abstraction/python>
   ... your policy for data, logs, connections, python files...
  }

}
0
Yurii Oleynikov

Je pense que yurii est peut-être confus et pense que "ix" signifie "non confiné", ce qui serait "Ux" ou "ux". Je ne vois aucune vulnérabilité en matière d’échappement lors du lancement de python à partir d’un shell ou d’un sous-processus.

Pour en savoir plus sur les drapeaux d'exécution, consultez la page https://gitlab.com/apparmor/apparmor/wikis/QuickProfileLanguage

0
AppArmor User