Обнаружение и контроль несанкционированных операций чтения из общей памяти

Мне было интересно - есть ли известные методы для контроля доступа к объекту общей памяти из любой точки, кроме авторизованной программы?

Например, допустим, я создаю сегмент совместно используемой памяти для использования в программе P, к которой должен обращаться Q, и делаю его для чтения-записи. Я могу получить к нему доступ, используя Q, потому что я дал ему (Q) необходимые разрешения для этого (запуск в качестве отдельного пользователя с группами и т. Д.).

Тем не менее, я предполагаю, что есть случаи, когда кто-то потенциально может получить доступ к этой общей памяти из программы R - просто присоединяя ее и изменяя ее. Чтобы остановить это, вы могли бы сделать сегмент памяти только для чтения - но теперь программа R все еще можетread что было в памяти.

Мой вопрос по частям -

Is there a way to,

a) allow only Q to access the shared memory?

b) figure whether a read was done by someone apart from Q - and who did it? [Is this even possible?] For bonus points, could this be done cross-platform? [Probably not, but no harm trying :)]

Under what circumstances could a rogue program attach to the shared memory? I presume one way is if a user is able to exploit OS holes and become the user that started the program. Any others?

Ответы на вопрос(1)

Ваш ответ на вопрос