I encountered a strange issue when the device is opened using interface name + a name within associated namespace. It is well known that in such a case OS doesn’t check the device ACL and leaves it on driver. To avoid security problems FILE_DEVICE_SECURE_OPEN flag in the device characteristics was introduced. If set, OS makes the same security check for both device and its namespace.
So far so good. But when GetSecurityInfo() or NtQueryObjectSecurity() is used with a device handle opened using a name from the namespace, it doesn’t return device security info as expected but empty DACL, instead. It seems as OS properly checks device access but ignores security queries which leads to inconsistent results. Tested at Win7 but I presume the same for previous versions.
BTW, I encountered it with a driver which uses interface reference string to distinguish which interface was used to open the device (recommended technique). It made crazy a new WLK tool which checks if a biometric device is properly secured.
To me it looks like an OS fault, although not fatal. IMO it should check for the FILE_DEVICE_SECURE_OPEN flag and return device security info for whole namespace. Or am I missing something?
Michal
NOTE: The information in this message is intended for the personal and confidential use of the designated recipient(s) named above. To the extent the recipient(s) is/are bound by a non-disclosure agreement, or other agreement that contains an obligation of confidentiality, with AuthenTec, then this message and/or any attachments shall be considered confidential information and subject to the confidentiality terms of that agreement. If the reader of this message is not the intended recipient named above, you are notified that you have received this document in error, and any review, dissemination, distribution or copying of this message is strictly prohibited. If you have received this document in error, please delete the original message and notify the sender immediately.
Thank You!
AuthenTec, Inc. http://www.authentec.com/