Безопасная привилегированная служба <=> Пользовательское пространство именованного канала WCF-Connection - PullRequest
0 голосов
/ 10 июня 2019

У меня есть что-то вроде этого: Architecture

(есть клиент , которому необходимо запустить сторонний .exe с правами администратора с некоторыми пользовательскими параметрами. Чтобы не постоянно раздражать пользователя диалогами UAC, я сделал Служба , работающая с привилегиями SYSTEM. Клиент и Служба взаимодействуют через WCF и NetNamedPipeBinding.)


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

Я не вижу ничего, что подтверждает подлинность Клиента на Сервере как действительного клиента. Учитывая, что именованные каналы представляют собой известную угрозу / проблему безопасности (см. http://www.blakewatts.com/namedpipepaper.html / https://hackinparis.com/data/slides/2017/2017_Cohen_Gil_The_forgotten_interface_Windows_named_pipes.pdf), я искал контрольный список рекомендаций / рекомендаций по безопасности, но не нашел ни одного.


Таким образом, вопрос в основном: Как я могу убедиться, что только мой клиент (не другие программы) не имеет права подключаться к привилегированной службе? И как мне это сделать при использовании WCF?

Что я думал до сих пор:
И Service.exe, и Client.exe будут в C:\Program Files\<some name>. Другие невыпущенные программы не могут писать по этому пути, поэтому, возможно, разрешит клиенту записать аргументы в некоторый файл и разрешить службе читать его? Можно ли использовать аналогичный метод для аутентификации всего соединения WCF?

...