Защита объектов ядра

октября 12 2009 by admin in Службы

В этом разделе вы узнаете о проблеме, с которой сталкиваются разработчики, когда их клиентское приложение и служба работают на одной машине и пытаются совместно использовать тот или иной объект ядра.
Сценарий следующий. Ваша служба начинает работать и вызывает Create-FileMapping для создания отображаемого в память файлового объекта. Функция CreateFileMapping создает объект ядра и одним из ее параметров является адрес структуры данных SECURITY_ ATTRIBUTES. Действуя, как большинство программистов, вы передадите в качестве этого параметра NULL, что приведет к созданию объекта ядра с защитой по умолчанию. Заметьте: я говорю «с защитой по умолчанию*, а не «без защиты». Защита по умолчанию означает, что контроль доступа к объекту определяется контекстом защиты, имевшим место при создании объекта.
Например, к объекту ядра, создаваемому службой с учетной записью Local-System, по умолчанию будет разрешен полный доступ любым программам, работающим с учетной записью LocalSy.stem, но для членов группы локальных администраторов будет разрешен только доступ для чтения и выполнения. Так что, если служба с учетной записью LocalSystem создает отображаемый в память файловый объект с защитой по умолчанию, любое приложение, работающее с учетной записью локального администратора, сможет читать данные из этого отображаемого в память файла, но не сможет записывать. Что касается приложений, работающих с другими учетными записями, то они вообще не будут иметь доступа к этому объект)*!
Сейчас я хочу дать вам лишь общее представление об этом вопросе. Можно много говорить о защите объектов ядра для клиентов и служб и о способах управления этой защитой, но для этого требуется более глубокое понимание механизмов защиты Windows. Так что я вам рекомендую прочитать главы о безопасности в четвертой части книги, чтобы представить картину целиком.