(запретить программе запускать другие программы). Но продублирую в контексте .NET.
Можно ли это сделать родными средствами? Суть программы — хост, который запускае динамический код, полученные после компиляции? Анализ кода не предлагать, это утопия не реальная защита.
(запретить программе запускать другие программы). Но продублирую в контексте .NET.
S>Можно ли это сделать родными средствами? Суть программы — хост, который запускае динамический код, полученные после компиляции? Анализ кода не предлагать, это утопия не реальная защита.
Можно сформулировать точнее ? Запрещать — но, видимо, когда-то и разрешать ? По каким критериям ?
Если же просто запретить — так не вводите в нее код, который запускает. Например, программа "Hello, World" никак не может запустить другую программу
У Вас кросспост существенно по тексту отличается, что сбивает с толку.
По теме: не понимаю, чем собственно поможет ограничение только на запуск дочерних процессов. Я бы производил запуск динамического кода в процессе, запущенном от пользователя с низкими правами.
Здравствуйте, m2user, Вы писали:
M>У Вас кросспост существенно по тексту отличается, что сбивает с толку.
M>По теме: не понимаю, чем собственно поможет ограничение только на запуск дочерних процессов. Я бы производил запуск динамического кода в процессе, запущенном от пользователя с низкими правами.
Хорошо, как этому пользователю с ограниченными правами запретить запуск других программ? Какие настройки, код?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Если же просто запретить — так не вводите в нее код, который запускает. Например, программа "Hello, World" никак не может запустить другую программу
Это юзер код. Хост лишь исполняет код, что пришлет юзер. Код должен быть выполнен в изолированной песочнице. Со всякими сетевыми подключения и доступу к файлам — понятно — это через учетку в Windows+Firewall. А как запретить использовать Process.Start?
Здравствуйте, Sаныч, Вы писали:
S>Это юзер код. Хост лишь исполняет код, что пришлет юзер. Код должен быть выполнен в изолированной песочнице. Со всякими сетевыми подключения и доступу к файлам — понятно — это через учетку в Windows+Firewall. А как запретить использовать Process.Start?
Хм. Не знаю, что за песочницу ты используешь, но если вот эту
S>Хорошо, как этому пользователю с ограниченными правами запретить запуск других программ? Какие настройки, код?
Можно назначить процессу job object и ограничить число процессов в job`е.
Но это повлияет только на дочерние процессы. Т.е. не ограничит запуск например через через scheduled task или WMI (Win32_Process.Create).
Здравствуйте, m2user, Вы писали:
S>>Хорошо, как этому пользователю с ограниченными правами запретить запуск других программ? Какие настройки, код?
M>Можно назначить процессу job object и ограничить число процессов в job`е. M>Но это повлияет только на дочерние процессы. Т.е. не ограничит запуск например через через scheduled task или WMI (Win32_Process.Create).
Получается средствами Windows или .NET никак не ограничить запускать сторонние процессы из динамического кода? Ведь DLL Import будет работать так и так и в .NET CORE уже нет средств на подобие CAS?
Здравствуйте, Sаныч, Вы писали:
S>Суть программы — хост, который запускае динамический код, полученные после компиляции?
Докер же. Пусть творит что сможет, но в контейнере.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Sаныч, Вы писали:
S>Получается средствами Windows или .NET никак не ограничить запускать сторонние процессы из динамического кода? Ведь DLL Import будет работать так и так и в .NET CORE уже нет средств на подобие CAS?
O>Minimum supported client Windows 10, version 1709
O>Minimum supported server Windows Server 2016
Интересно то, что сам процесс это может вернуть взад. Уже проверил, код под ограниченной учеткой и с JOB умеет общаться и менять различные атрибуты. Не совсем понятно, можно ли такие вещи дать только администратору, и в хост программе делать имперсонацию для изменения параметров, прежде чем начать работать с динамическим кодом.
там в ремарках пишут, что работает только в andboxed applications.
The process being created is not allowed to create child processes. This restriction becomes a property of the token as which the process runs.
It should be noted that this restriction is only effective in sandboxed applications (such as AppContainer) which ensure privileged process handles are not accessible to the process.
For example, if a process restricting child process creation is able to access another process handle with PROCESS_CREATE_PROCESS or PROCESS_VM_WRITE access rights, then it may be possible to bypass the child process restriction.
M>The process being created is not allowed to create child processes. This restriction becomes a property of the token as which the process runs.
M>It should be noted that this restriction is only effective in sandboxed applications (such as AppContainer) which ensure privileged process handles are not accessible to the process.
M>For example, if a process restricting child process creation is able to access another process handle with PROCESS_CREATE_PROCESS or PROCESS_VM_WRITE access rights, then it may be possible to bypass the child process restriction.
Я решил задачу пока что так, что для всего компа для учетки ввел запрет на запуск приложений. cmd запускает, но другие процессы нет.
S>Интересно то, что сам процесс это может вернуть взад. Уже проверил, код под ограниченной учеткой и с JOB умеет общаться и менять различные атрибуты. Не совсем понятно, можно ли такие вещи дать только администратору, и в хост программе делать имперсонацию для изменения параметров, прежде чем начать работать с динамическим кодом.
·>Докер же. Пусть творит что сможет, но в контейнере.
Насколько мне известно под MS Windows оно работает через hardware virtualization.
И до определенной версии Windows не совместимо с другими гипервизорами.
This API is available starting in the Windows April 2018 Update.
The Windows Hypervisor Platform adds an extended user-mode API for third-party virtualization stacks and applications to create and manage partitions at the hypervisor level, configure memory mappings for the partition, and create and control execution of virtual processors.
Ex: A client such as QEMU can run on the hypervisor while maintaining its management, configuration, guest/host protocols and guest supported drivers. All while running alongside a Hyper-V managed partition with no overlap.
For more information see: Windows Hypervisor Platform API
Здравствуйте, m2user, Вы писали:
m> ·>Докер же. Пусть творит что сможет, но в контейнере.
m> Насколько мне известно под MS Windows оно работает через hardware virtualization.
Действительно.
Выходит, что process-isolated режим на w2k16 изначально был, а в win10 pro/ent. его добавили в октябре 2018 г.
При этом для WCOW (Windows containers on Windows) лицензия разрешает использовать контейнеры только в целях тестирования и разработки, если host OS несерверная.
Для production нужен Windows Server.
А LCOW (Linux containers on Windows) можно запускать в process-isolated режиме?
However, since WSL 2 now runs on a Linux kernel with full system call capacity, Docker can fully run in WSL 2. This means that Linux containers can run natively without emulation, resulting in better performance and interoperability between your Windows and Linux tools.