Я нахожусь на пути реализации некоторой системы плагинов для приложения 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.