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

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

требование

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

проблема

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

идея

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

идея 2

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

вопрос

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