Блокировка DefineDosDevice
От: vsop  
Дата: 14.06.10 13:32
Оценка:
День добрый!

Имеется драйвер шифрованного диска, который вешает диск на определённый "девайс" по вызову DeviceIoControl. Затем диск ставится на определённый drive-letter, через DefineDosDevice(..., "\\DosDevices\\symLinkName") в контексте пользователя и всё OK. Но проблема в том, что DefineDosDevice с данными параметрами можно вызывать неоднократно и из под разных пользователей, и теоретически диск (пока он драйвером поддерживается) виден кому угодно на данной машине. Получается непроятная история с безопасностью. Что я делаю неправильно и откуда копать?
Заранее благодарен

vsop
Re: Блокировка DefineDosDevice
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.06.10 14:19
Оценка:
Здравствуйте, vsop, Вы писали:

V>Что я делаю неправильно и откуда копать?


Если нужна безопасность на уровне файлов — создавать на томе файловую структуру NTFS. Если нужен контроль доступа на уровне устройства целиком — присвоить ему дескриптор защиты.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Блокировка DefineDosDevice
От: vsop  
Дата: 14.06.10 15:19
Оценка:
ЕМ>Если нужна безопасность на уровне файлов — создавать на томе файловую структуру NTFS. Если нужен контроль доступа на уровне устройства целиком — присвоить ему дескриптор защиты.

NTFS — это понятно. Хотелось бы что-то поумнее (в том числе защиту от администратора, насколько возможно), типа дескриптора защиты. Только вот пытался я права доступа менять в WinObj на instance драйвера, не помогает — драйвером то заведует система. То есть удаление или блокировка (deny access) пользователя не помогает — на обоих, symbolic link и driver object, DDD это не мешает. По крайней мере на моём компе.
Re: Блокировка DefineDosDevice
От: ononim  
Дата: 14.06.10 15:46
Оценка:
V>Имеется драйвер шифрованного диска, который вешает диск на определённый "девайс" по вызову DeviceIoControl. Затем диск ставится на определённый drive-letter, через DefineDosDevice(..., "\\DosDevices\\symLinkName") в контексте пользователя и всё OK. Но проблема в том, что DefineDosDevice с данными параметрами можно вызывать неоднократно и из под разных пользователей, и теоретически диск (пока он драйвером поддерживается) виден кому угодно на данной машине. Получается непроятная история с безопасностью. Что я делаю неправильно и откуда копать?

DefineDosDevice определяет букву диска per user session. То есть другим юзерам диск виден не будет.
И вообще это не есть проблема безопасности — DefineDosDevice определяет лишь симлинку ктому жесткого диска. Пользователь ведь может открыть том напрямую — ntdll!NtOpenFile("\harddrivevolume или чета в етом роде" и безо всяких досовских букв диска.
Как много веселых ребят, и все делают велосипед...
Re[3]: Блокировка DefineDosDevice
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.06.10 16:08
Оценка:
Здравствуйте, vsop, Вы писали:

V>Только вот пытался я права доступа менять в WinObj на instance драйвера, не помогает — драйвером то заведует система. То есть удаление или блокировка (deny access) пользователя не помогает — на обоих, symbolic link и driver object, DDD это не мешает.


Объект драйвера-то здесь при чем? Дескриптор нужно цеплять к Device Object, и желательно — до завершения инициализации.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Блокировка DefineDosDevice
От: bazis1 Канада  
Дата: 14.06.10 16:43
Оценка:
Здравствуйте, vsop, Вы писали:


ЕМ>>Если нужна безопасность на уровне файлов — создавать на томе файловую структуру NTFS. Если нужен контроль доступа на уровне устройства целиком — присвоить ему дескриптор защиты.


V>NTFS — это понятно. Хотелось бы что-то поумнее (в том числе защиту от администратора, насколько возможно), типа дескриптора защиты. Только вот пытался я права доступа менять в WinObj на instance драйвера, не помогает — драйвером то заведует система. То есть удаление или блокировка (deny access) пользователя не помогает — на обоих, symbolic link и driver object, DDD это не мешает. По крайней мере на моём компе.

Посмотрите в исходниках последнего WinCDEmu (поиск по ApplyDACL).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.