일반적인 WIA 보안 문제
LocalService 계정에서 기존 WIA 드라이버(LocalSystem에서 정상적으로 실행됨)가 성공적으로 실행되지 않도록 방지할 수 있는 몇 가지 일반적인 문제가 있습니다.
가장 일반적인 문제는 다음과 같습니다.
파일 시스템 액세스
LocalService 계정에는 파일 액세스가 심각하게 제한됩니다. 예를 들어 드라이버는 더 이상 %windir% 디렉터리에 쓸 수 없습니다.
레지스트리 액세스
LocalSystem 계정에 열려 있던 많은 레지스트리 키는 LocalService에 읽기 전용입니다. 예를 들어 드라이버는 더 이상 HKLM 하위 트리의 레지스트리 키에 쓸 수 없습니다.
명명된 커널 개체
WIA 드라이버와 번들 애플리케이션과 같은 외부 구성 요소에서 액세스하는 명명된 개체(예: 이벤트 및 뮤텍스)에 적절한 ACL이 있는지 확인합니다. 애플리케이션에서 명명된 이벤트 개체를 만들지만 LocalService 계정에 대한 액세스 권한을 구체적으로 부여하지 않으면 드라이버는 이를 사용할 수 없습니다. 마찬가지로 미니드라이버가 명명된 이벤트 개체를 만드는 경우 동일한 액세스 권한을 부여해야 합니다. 그렇지 않으면 애플리케이션에서 이벤트 개체를 사용할 수 없습니다.
Out-of-process COM 개체
Out-of-process COM 인터페이스를 만들거나 사용하려는 시도는 해당 구성 요소가 LocalService 계정에 적절한 권한을 명시적으로 부여하지 않는 한 실패합니다. 예를 들어 구성 요소가 LocalService 계정에 권한을 부여하지 않으면 CLSCTX_LOCAL_SERVER 플래그 집합이 있는 CoCreateInstance 또는 CoCreateInstanceEx(둘 다 Microsoft Windows SDK 설명서에 설명되어 있음)에 대한 호출이 실패할 수 있습니다. 마찬가지로, 드라이버에 대한 처리 중이 아닌 COM 인터페이스에 대한 포인터를 사용하려고 시도하는 드라이버가 실패할 수 있습니다. 이 문제는 구성 요소가 드라이버를 호출하고 드라이버가 인터페이스에 다시 호출할 수 있는 인터페이스에 대한 포인터를 전달하는 경우에 발생할 수 있습니다.
프로세스 만들기 및 열기
WIA 드라이버는 다른 프로세스를 수동으로 시작해서는 안 됩니다(예: CreateProcess 또는 CreateProcessAsUser 호출). LocalSystem 계정의 드라이버에 대해 이 동작이 성공했지만 드라이버가 새 LocalService 계정에서 더 이상 수행할 수 없습니다. CreateProcess 및 CreateProcessAsUser에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.