Ограничить доступ к системным функциям для библиотеки C++ во время компиляции

Я нахожусь на пути реализации некоторой системы плагинов для приложения C++. Я бы назвал это изменчивым. Плагин является общей библиотекой *.so,

требование

Не разрешать любые звонки в систему.

эта проблема

Поскольку плагин SO загружен приложением, он наследует все права и доступы. Мы не доверяем плагину.

идея

Из заданного исходного кода C++ плагина скомпилируйте SO со специальными флагами GCC/CLang, например --do-not-link-filesystem, --do-not-link-pthread, Поэтому, если этот код попытается получить доступ к системным ресурсам, он потерпит неудачу во время компиляции. Это дает лучшую гарантию.
Плагин может вызывать интерфейс, предоставляемый приложением.
СТЛ <vector>, <algorithm> а также <boost/template-only-headers> все еще должен быть доступен.

идея 2

Запустите ApplicationHelper, чтобы загрузить Plugin.so в ограниченный контейнер и / или запустить как пользователь с ограниченными правами. выглядит тяжело

вопрос

  • Можно ли реализовать идею 1 - ограничить доступ во время компиляции?
  • Расскажите пожалуйста, как реализовать идею 2 в Linux, особенно Ubuntu.

0 ответов

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