HID 컬렉션에 대한 보안 읽기 적용
이 문서에서는 사용자 모드 애플리케이션 또는 커널 모드 드라이버가 최상위 HID 컬렉션에 보안 읽기를 적용하는 방법을 설명합니다.
컬렉션에 대해 보안 읽기를 사용하는 경우 "신뢰할 수 있는" 클라이언트(SeTcbPrivilege 권한이 있는 클라이언트)만 컬렉션의 열린 파일에서 입력을 가져올 수 있습니다. 커널 모드 드라이버에는 기본적으로 SeTcbPrivilege 권한이 있지만 사용자 모드 애플리케이션은 그렇지 않습니다. 사용자 모드에서 시스템 권한을 얻는 방법에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 권한 부여에 대한 정보를 참조하세요.
이 메커니즘은 주로 "신뢰할 수 있는" 사용자 모드 시스템 구성 요소가 중요한 시스템 작업 중에 SeTcbPrivilege 권한이 없는 사용자 모드 애플리케이션이 컬렉션에서 입력을 가져오는 것을 방지할 수 있도록 제공됩니다. 예를 들어 "신뢰할 수 있는" 사용자 모드 시스템 구성 요소는 SeTcbPrivilege 권한이 없는 사용자 모드 애플리케이션이 로그온 작업 중에 사용자가 제공하는 기밀 정보를 가져오지 못하도록 방지할 수 있습니다.
"신뢰할 수 있는" 클라이언트는 IOCTL_HID_ENABLE_SECURE_READ 및 IOCTL_HID_DISABLE_SECURE_READ 요청을 사용하여 컬렉션에 대한 보안 읽기를 사용하도록 설정하고 사용하지 않도록 설정합니다. SeTcbPrivilege 권한이 없는 클라이언트가 이러한 요청을 사용하는 경우 요청은 컬렉션의 보안 읽기 상태를 변경하지 않으며 HID 클래스 드라이버는 STATUS_PRIVILEGE_NOT_HELD 상태 값을 반환합니다.
컬렉션에 대한 보안 읽기를 사용하도록 설정하고 사용하지 않도록 설정하는 방법은 다음과 같습니다.
HID 클래스 드라이버는 컬렉션의 열려 있는 각 파일에 대해 파일별 보안 읽기 수를 유지 관리합니다. HID 클래스 드라이버는 파일별 보안 읽기 수의 합계인 컬렉션에 대한 보안 읽기 수를 유지 관리합니다. 컬렉션이 만들어지면 컬렉션의 보안 읽기 수가 0으로 초기화되고 파일이 열릴 때 파일에 대한 보안 읽기 수가 0으로 초기화됩니다.
HID 클래스 드라이버가 파일에 대한 사용 요청을 받으면 파일에 대한 보안 읽기 횟수가 1씩 증가합니다(컬렉션의 보안 읽기 횟수는 1씩 증가).
HID 클래스 드라이버가 파일에 대한 사용 안 함 요청을 수신하는 경우:
- 파일의 보안 읽기 수가 0보다 크면 드라이버는 파일에 대한 보안 읽기 수를 1씩 감소시키고 컬렉션의 보안 읽기 수를 1씩 줄입니다.
- 파일의 보안 읽기 수가 0과 같으면 드라이버는 보안 읽기 수를 변경하지 않습니다.
컬렉션의 보안 읽기 수가 0보다 크면 HID 클래스 드라이버가 컬렉션에 대한 보안 읽기를 적용합니다. 그렇지 않으면 드라이버는 컬렉션에 대한 보안 읽기를 적용하지 않습니다.
클라이언트는 사용 안 함 요청을 사용하여 해당 사용 요청을 취소해야 합니다. 그러나 클라이언트가 이 작업을 수행하지 않으면 HID 클래스 드라이버는 파일에 대한 IRP_MJ_CLOSE 요청을 처리할 때 컬렉션에 대한 보안 읽기 수를 적절하게 감소합니다. 드라이버가 닫기 요청을 처리하면 닫히는 파일에 대한 보안 읽기 수로 컬렉션의 보안 읽기 수가 감소합니다.