Я использую AppLocker для предотвращения выполнения обычным пользователем чего-либо кроме приложений, подписанных нами, и некоторых необходимых файлов Windows.
Файлы exe и dll подписаны нашим сертификатом с использованием signtool.exe
,и затем в AppLocker у меня есть правила Publisher, которые запрещают пользователю запускать что-либо, что не было подписано нами.
Это сработало, но это не мешает подписанному исполняемому файлу загружать неподписанные dll-файлы, что кажетсякак риск для безопасности. Я протестировал, заменив все dll на неподписанные версии, оставив только подписанный exe-файл, включил dll-правила, которые блокировали все, что не было подписано нами, и приложение работало нормально. EventLog не показывал никаких потенциальных блоков (я включил dll-правила в режиме аудита).
Я немного читал, и, насколько я понимаю, причина этого может заключаться в том, что они не являются "нормальными" (Win32) а точнее сборки dll, которые компилируются и выполняются в CLR, что обходит правила dll AppLocker?
В таком случае кажется, что единственный способ убедиться, что библиотеки DLL не подделаны, - это подписать сборку, присвоив каждой сборке строгое имя, и это обеспечит, что исполняемый файл будет только загружаться и запускаться. эти конкретные DLL. Это правильно?
Есть ли способ заставить правила AppLocker dll блокировать dll (сборки), которые компилируются и запускаются CLR? Если нет, то есть ли смысл даже подписывать сборки dll's?