Отключить доступ к функциям "exec"? - PullRequest
0 голосов
/ 07 декабря 2009

Допустим, у меня есть процесс "A", который загружает динамическую библиотеку "L".

В: Есть ли способ отключить доступ к функциям "exec" для функций внутри "L"?

Ответы [ 4 ]

2 голосов
/ 07 декабря 2009

Используйте AppArmor для этого. Это позволяет специально сократить операции, которые может выполнять приложение: какие файлы оно может читать / записывать, какие функции ОС оно может вызывать, какие сетевые службы оно может использовать.

Это немного сложно в настройке, но вы можете использовать инструмент, который записывает все операции, необходимые для запуска вашего приложения. После запуска вы можете проверить вывод, немного его изменить и затем использовать.

1 голос
/ 07 декабря 2009

Динамическая библиотека использует то же пространство процесса, что и вызывающее приложение, так что это определенно непросто (и я думаю, что это невозможно, не отказывая в этом и вашему приложению). Если вы можете обернуть библиотеку в отдельное приложение, то AppArmor или SELinux могут помочь, но в целом: почему вы загружаете ненадежную библиотеку в свое приложение?

Вы также можете обнаружить, что Chromium справляется с песочницей полезно.

1 голос
/ 07 декабря 2009

Если вы работаете в Linux, вы можете сделать следующее:

Реализуйте свою СОБСТВЕННУЮ версию exec () и system (), которая делает то, что вы хотите (или не делаете), и либо LD_PRELOAD, либо передает RTLD_DEEPBIND в dlopen () ... Это заставит компоновщик отдавать предпочтение ВАШИ версии этих методов выше версий, предоставленных libc.

0 голосов
/ 07 декабря 2009

Возможно, есть некоторые приемы, которые вы можете сделать (например, используйте MMU для отображения раздела библиотеки C, который содержит функции exec () как неисполняемые), который может получить желаемый эффект.

Однако - поскольку динамическая библиотека работает в том же пространстве процессов, что и вы, вы ничего не можете сделать, чтобы навсегда отключить ее для библиотеки, которую библиотека не могла отменить.

...