Hi, all,
In a FS filter (currently legacy), we define I/O codes for all
file I/O we are interested in (CREATE, OPEN, REPLACE, READ, WRITE,
DELETE, RENAME, HIDE) - these have no direct mapping to the standard I/O
mapping as used by security descriptors.
A user successfully builds a security descriptor with 0x7FFFFE
access for Everyone and 0x200 Deny access for TestUser. When the driver
does an SeAccessCheck with this security descriptor however, it always
returns TRUE - am I missing something here, or is it only that
SeAccessCheck only supports default access masks?
When I query back the security descriptor from the driver and
decode it, it is the correct SD (with the same access as described
above).
The check is done as follows:
SeAccessCheck(lpEntry->lpSD,
&lpSubjectContext,
TRUE,
FileOperation, // 0x200
0,
NULL,
&GenMap,
kpMode,
&amGrantedAccess,
&amResult)
returns TRUE and amGrantedAccess always returns TRUE.
kpMode is UserMode, so the check is not “skipped” due to kernel mode
code.
The denied part of the SD should take precedence over allowed, but it
doesn’t seem to be the case above.
–
Kind regards, Dejan M.
http://www.alfasp.com E-mail: xxxxx@alfasp.com
Alfa Transparent File Encryptor - Transparent file encryption services.
Alfa File Protector - File protection and hiding library for Win32
developers.
Alfa File Monitor - File monitoring library for Win32 developers.