Запретить моей программе доступ к файловой системе - PullRequest
3 голосов
/ 28 декабря 2011

У меня есть программа, которая может быть взломана, но изначально требуются права root. В настоящее время программа выполняет загрузку в предварительно настроенный каталог, а затем удаляет привилегии.

Однако я хотел бы вообще запретить моей программе доступ к файловой системе после того, как она потеряла привилегии root, и, по возможности, не требует какой-либо настройки. Есть ли лучший способ, чем , создать временный каталог в / tmp и выполнить в нем хроматическую загрузку?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

У вас есть два варианта:

  • Используйте модуль безопасности, такой как SELinux, для блокировки этого процесса от остальной системы

Это правильный способ сделать это, но требует, чтобы вы изучили структуру и выполнили много настроек. Вы можете установить политику таким образом, чтобы этот процесс или пользователь, выполняющий его (или оба), не имели доступа к остальной системе.

  • Перехватывает вызовы файловой системы ядра, чтобы запретить их пользователю, запустившему скомпрометированную программу

Это гораздо менее элегантное решение, которое может оказать большее влияние на производительность, но требует очень небольшой настройки, всего лишь небольшого количества кода. Я делаю нечто подобное в модуле безопасности, который я написал:

https://github.com/cormander/tpe-lkm

Он подключается к execve, mmap, mprotect и другим вещам. То же самое можно сделать для open, write и т. Д. И запретить системные вызовы на основе uid или gid или даже имени процесса.

0 голосов
/ 06 января 2012

Я закончил хроматированием во временный каталог (в моем случае /var/run/programname) и после этого отбросил привилегии. Это обеспечивает адекватную защиту и не требует сложной установки. С другой стороны, это требует, чтобы моя программа работала как суперпользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...