Можем ли мы определить, какая программа на другом конце named pipe?
Общая задача: есть привилегированная 32-битная программа, работающая как прокси одной из бухгалтерским систем. Нужно проверять, кто имеет доступ «к её телу».
С общением двух программ через консоль разобрались больше года назад, я проверил, кто программу вызывает.
Стали жить дальше, расширять программу — теперь её можно запустить в режиме службы, общаясь с ней через named pipe!
А вопрос безопасности данных остался.
Собственно, вопрос: можно ли определить, какая программа на другом конце трубы, чтобы потом проверить её подпись?
windows pipes могут использовать windows authentitication, т.е. доступ к пайпу имеют только разрешенные пользователи (по умолчанию все авторизованные пользователи, если я верно помню).
Ваша прокси должна быть дополнена для создания security descriptor создаваемых пайпов, все кто попытаются открыть этот пайп, к примеру, должны быть пользователями груп, указанных в дескрипторе
Нужно допускать только программу, независимо от того, какой пользователь её запустил.
Мы защищаемся не от пронырливых пользователей, а от вредоносного софта! — а у него те же права доступа, что и у юзверя.
named pipes не имеют такого функционала
если с обоих сторон пайпа ваше приложение, допишите в него авторизацию и/или цифровые подписи
p.s. 'злонамеренный пользователь' при наличии бюджетов сравнимых с затрат на защиту - победит
с другой стороны, если атака не адресная, то достаточно нетипичных конфигураций чтобы большинство из них не сработали, каких именно вирусов вы там боитесь?
какая разница, подписанное приложение или нет, если вы допускаете запуск сторонних приложений (например вирусы, от них де защититься пытаетесь) значит возможна следующая атака - запускается прокси, создающая сответствующий пайп, к которому подключается ваша программа, а прокси отсылает все что она отправила.
никто в такой схеме не сможет определить с прокси вы общаетесь или с программой, нет такого функционала в named pipes
p.s. программы подисаны? может попробовать лимитировать на машинах возможные приложения только подписанными и по списку (не все официальные приложения и даже драйвера имеют цифровые подписи)?