HID 컬렉션에 대한 보안 읽기 적용

이 섹션에서는 사용자 모드 애플리케이션 또는 커널 모드 드라이버가 최상위 HID 컬렉션대해 보안 읽기를 적용하는 방법을 설명합니다.

컬렉션에 대해 보안 읽기를 사용하는 경우 "신뢰할 수 있는" 클라이언트(SeTcbPrivilege 권한이 있는 클라이언트)만 컬렉션의 열린 파일에서 입력을 가져올 수 있습니다. 커널 모드 드라이버에는 기본적으로 SeTcbPrivilege 권한이 있지만 사용자 모드 애플리케이션은 그렇지 않습니다. 사용자 모드에서 시스템 권한을 얻는 방법에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 권한 부여에 대한 정보를 참조하세요.

이 메커니즘은 주로 "신뢰할 수 있는" 사용자 모드 시스템 구성 요소가 중요한 시스템 작업 중에 SeTcbPrivilege 권한이 없는 사용자 모드 애플리케이션이 컬렉션에서 입력을 가져오는 것을 방지할 수 있도록 제공됩니다. 예를 들어 "신뢰할 수 있는" 사용자 모드 시스템 구성 요소는 SeTcbPrivilege 권한이 없는 사용자 모드 애플리케이션이 로그온 작업 중에 사용자가 제공하는 기밀 정보를 얻지 못하도록 방지할 수 있습니다.

"신뢰할 수 있는" 클라이언트는 IOCTL_HID_ENABLE_SECURE_READIOCTL_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 요청을 처리할 때 컬렉션에 대한 보안 읽기 수를 적절하게 감소합니다. 드라이버는 닫기 요청을 처리할 때 닫히는 파일에 대한 보안 읽기 수로 컬렉션의 보안 읽기 수를 감소합니다.