Может ли apparmor ограничивать интерпретируемые языки?

Для интерпретируемых языков / vm (например, python, java, shell-скрипты) можно установить apparmor так, чтобы он ограничивал только определенный скрипт или программу? Если да, то как?

7
задан 19 October 2013 в 08:06

3 ответа

Да, это возможно. Он также используется в Ubuntu, особенно по телефону.

Чтобы получить базовый скрипт apparmor, вы можете использовать aa-autodep из пакета apparmor-utils.

Быстрый пример для python:

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

sudo aa-autodep ~/myapp

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

Это даст вам что-то вроде:

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

}

Тогда вы можете расширить это.

0
ответ дан 19 October 2013 в 08:06

Ну, на самом деле использование «/usr/bin/python2.7 ix» не очень хорошая идея. Поскольку эксплуатируемый код может выполнять python из оболочки, например: python -c 'некоторый злой код'. Это определенно не то, что вы хотите, и полностью нарушает концепцию песочницы (что такое apparmor)

#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
ответ дан 19 October 2013 в 08:06

Я думаю, что yurii перепутан возможно и думает, что "ix" означает "неограниченный", который был бы "Ux" или "ux". Я не вижу уязвимости Escape здесь с запускающимся Python снова или от оболочки или от подпроцесса.

Больше на выполнении флаги могут быть найдены в https://gitlab.com/apparmor/apparmor/wikis/QuickProfileLanguage

0
ответ дан 23 November 2019 в 06:54

Другие вопросы по тегам:

Похожие вопросы: