2010.09.01 17:08

DLL 검색 경로 알고리즘 제어 (CWDIllegalInDllSearch)

CWDIllegalInDllSearch 레지스트리 키 작동 방식

응용 프로그램이 정규화된 경로를 지정하지 않은 상태로 DLL을 동적으로 로드하면 Windows는 잘 정의된 디렉터리 집합을 검색하여 이 DLL을 찾으려고 합니다. 이러한 디렉터리 집합을 DLL 검색 경로라고 합니다. Windows는 디렉터리에서 DLL을 찾는 즉시 해당 DLL을 로드합니다. Windows는 DLL 검색 순서의 어떤 디렉터리에서도 해당 DLL을 찾지 못하면 DLL 로드 작업 실패 결과를 반환합니다.


LoadLibrary 함수 및 LoadLibraryEx 함수는 DLL을 동적으로 로드하는 데 사용됩니다. 다음은 이러한 두 함수의 DLL 검색 순서입니다.
  1. 응용 프로그램이 로드되는 디렉터리
  2. 시스템 디렉터리
  3. 16비트 시스템 디렉터리
  4. Windows 디렉터리
  5. CWD(현재 작업 디렉터리)
  6. PATH 환경 변수에 나열되는 디렉터리
새로 도입된 CWDIllegalInDllSearch 레지스트리 키를 사용하여 컴퓨터 관리자는 LoadLibraryLoadLibraryEx에 사용되는 DLL 검색 경로 알고리즘의 동작을 수정할 수 있습니다. 이 레지스트리 키를 사용하면 특정 종류의 디렉터리를 건너뛸 수 있습니다.

CWDIllegalInDllSearch 레지스트리 키는 다음 경로에 추가될 수 있습니다.
  • 컴퓨터의 모든 디렉터리에 대해 이 레지스트리 키를 사용하려면:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
  • 컴퓨터의 지정된 응용 프로그램에 대해 이 레지스트리 키를 사용하려면:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<application binary name>
    CWDIllegalInDllSearch 레지스트리 키 값은 LoadLibraryLoadLibraryEx의 동작을 다음과 같이 변경합니다.

시나리오 1: 응용 프로그램이 C:\Program Files 와 같은 로컬 폴더에서 시작되는 경우

CWDIllegalInDllSearch LoadLibrary 및 LoadLibraryEx에서 DLL 검색 경로의 동작
0xFFFFFFFF 기본 DLL 검색 순서에서 현재 작업 디렉터리 제거
0 앞서 언급한 기본 DLL 검색 경로 사용
1 현재 작업 디렉터리가 WebDAV 폴더로 설정된 경우 현재 작업 디렉터리에서의 DLL 로드 차단
2 현재 작업 디렉터리가 원격 폴더로 설정된 경우 현재 작업 디렉터리에서의 DLL 로드 차단
키 또는 다른 값 없음 앞서 언급한 기본 DLL 검색 경로 사용

시나리오 2: 응용 프로그램이 \\remote\shareremote\share 와 같은 원격 폴더에서 시작되는 경우

CWDIllegalInDllSearch LoadLibrary 및 LoadLibraryEx에서 DLL 검색 경로의 동작
0xFFFFFFFF 기본 DLL 검색 순서에서 현재 작업 디렉터리 제거
0 앞서 언급한 기본 DLL 검색 경로 사용
1 현재 작업 디렉터리가 WebDAV 폴더로 설정된 경우 현재 작업 디렉터리에서의 DLL 로드 차단
2 현재 작업 디렉터리가 원격 폴더로 설정된 경우 현재 작업 디렉터리에서의 DLL 로드 허용 WebDAV 공유에서 로드된 DLL은 CWD가 WebDAV 공유로 설정된 경우 차단되는 점을 참고하십시오.
키 또는 다른 값 없음 앞서 언급한 기본 DLL 검색 경로 사용

시나리오 3: 응용 프로그램이 http://remote/share 와 같은 WebDav 폴더에서 시작되는 경우

CWDIllegalInDllSearch LoadLibrary 및 LoadLibraryEx에서 DLL 검색 경로의 동작
0xFFFFFFFF 기본 DLL 검색 순서에서 현재 작업 디렉터리 제거
키 또는 다른 값 없음 앞서 언급한 기본 DLL 검색 경로 사용

예제

예제 1: 로컬 컴퓨터에 설치되어 있는 모든 응용 프로그램에 대한 WebDAV 공유에서 DLL을 로드할 수 없게 설정하는 방법

  1. 컴퓨터에 관리자로 로그온합니다.
  2. 레지스트리 편집기를 엽니다.
  3. 다음 레지스트리 하위 키를 찾아서 클릭합니다.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
  4. 세션 관리자를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.
  5. CWDIllegalInDllSearch를 입력한 후수정을 클릭합니다.
  6. 값 데이터 상자에서 1을 입력한 다음 확인을 클릭합니다.

예제 2: 로컬 컴퓨터에 설치되어 있는 특정 응용 프로그램에 대해서만 WebDAV 공유에서 DLL을 로드할 수 없게 설정하는 방법

  1. 컴퓨터에 관리자로 로그온합니다.
  2. 레지스트리 편집기를 엽니다.
  3. 다음 레지스트리 하위 키를 찾아서 클릭합니다.
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<application binary name>
  4. 응용 프로그램 바이너리 이름을 갖는 키가 없는 경우 만들어야 합니다.
  5. <응용 프로그램 바이너리 이름>을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.
  6. CWDIllegalInDllSearch를 입력한 후수정을 클릭합니다.
  7. 값 데이터 상자에서 1을 입력한 다음 확인을 클릭합니다.

예제 3: 로컬 컴퓨터에 설치되어 있는 특정 응용 프로그램에 대해서만 원격(SMB) 공유에서 DLL을 로드할 수 없게 설정하는 방법

  1. 컴퓨터에 관리자로 로그온합니다.
  2. 레지스트리 편집기를 엽니다.
  3. 다음 레지스트리 하위 키를 찾아서 클릭합니다.
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<application binary name>
  4. 응용 프로그램 바이너리 이름을 갖는 키가 없는 경우 만들어야 합니다.
  5. <응용 프로그램 바이너리 이름>을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.
  6. CWDIllegalInDllSearch를 입력한 후수정을 클릭합니다.
  7. 값 데이터 상자에서 2을 입력한 다음 확인을 클릭합니다.

Microsoft 다운로드 센터에서 다음 파일을 다운로드할 수 있습니다.

Windows XP용 업데이트


다운로드
지금 패키지 다운로드

Windows XP x64 Edition용 업데이트


다운로드
지금 패키지 다운로드

Windows Server 2003용 업데이트


다운로드
지금 패키지 다운로드

Windows Server 2003 x64 Edition용 업데이트


다운로드
지금 패키지 다운로드

Itanium 기반 시스템용 Windows Server 2003 업데이트


다운로드
지금 패키지 다운로드

Windows Vista용 업데이트


다운로드
지금 패키지 다운로드

x64 기반 시스템용 Windows Vista 업데이트


다운로드
지금 패키지 다운로드

Windows Server 2008용 업데이트


다운로드
지금 패키지 다운로드

Windows Server 2008 x64 Edition용 업데이트


다운로드
지금 패키지 다운로드

Itanium 기반 시스템용 Windows Server 2008 업데이트


다운로드
지금 패키지 다운로드

Windows 7용 업데이트


다운로드
지금 패키지 다운로드

x64 기반 시스템용 Windows 7 업데이트


다운로드
지금 패키지 다운로드

Itanium 기반 시스템용 Windows Server 2008 R2 업데이트


다운로드
지금 패키지 다운로드

Windows Server 2008 R2 x64 Edition용 업데이트


다운로드
지금 패키지 다운로드


출처 : support.microsoft.com

Trackback 1 Comment 1
  1. Favicon of https://blog.pages.kr 날으는물고기 2010.09.01 17:20 신고 address edit & del reply

    주의하실 점은, 이 툴은 보안 취약점을 완전히 없애주는 것이 아니고, 공격 경로 중 하나를 차단하기 위한 임시 방편입니다. 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager의 DWORD 형식 CWDIllegalInDLLSearch 값을 설정해 주는 것이니 다시 원래대로 되돌리려면 이 값을 0으로 해 주시면 됩니다.