Windows Vista x64 에디션의 드라이버 싸이닝 문제

Windows Vista x64 에디션에서 드라이버 개발을 하다 보면 불편한 것이 한둘이 아닙니다.

중의 하나가 바로 테스트용 드라이버를 로드하려면 반드시 드라이버 시그너쳐 확인 옵션을 부팅시에 죽여 줘야 한다는 것입니다.

사실 이전 버전의 윈도우즈에서 개발된 제품들 중에서 드라이버 싸인닝 이슈로 인해서 실행 되지 않는 경우가 많습니다.

Windows Vista x64 에디션에서는 드라이버를 로딩하기 위해서 디지탈 싸인이 꼭 필요합니다.

한때 3rd 파티 드라이버 중의 하나인 Atsiv를 사용하여 드라이버를 로딩할 수 있었던 적이 있습니다. 싸인이 안 된 어떤 드라이버들이라도 로드할 수 있었습니다. Kernel Mode Code Signing (KMCS) 정책에 위배하는 행위를 허용해 주는 일종의 백도어인 셈입니다. 이렇게 로딩된 드라이버는 enumDeviceDrivers() API로부터도 검출이 안됩니다.

Kernel Mode Code Signing (KMCS) 는 코드를 누가 짰는지, 드라이버를 누가 제공하는지를 알려 주는 방법입니다.

이크로소프트에서는 이 드라이버에 대해서 다음과 같은 조치를 취했습니다.

2007년 8월 2일 Windows Defender의 시그너쳐에 추가됨

2007년 8월 2일 VeriSign에 의해서 증서 취소

마이크로소프트 안팀에서 조사 실시

이크로소프트에서는 이러한 대응이 가능한 것이 KMCS의 효과라고 주장합니다. 즉, KMCS로 Atsiv의 제작자를 바로 파악할 수 있었고, 자사 제품에서 해당 드라이버를 블랙리스팅할 수 있었으니까요.

지만 아무리 OS 제작사에서 이렇게 보안 장치를 구현해 놓아도 안일한 3rd 파티 개발자들이 백도어를 생산하는 이상 비슷한 취약점들은 앞으로 계속 나오지 않을까 생각합니다.

2 thoughts on “Windows Vista x64 에디션의 드라이버 싸이닝 문제

  1. 안녕하세요. x64용 드라이버에 signing 하는 것을 검색하다가 왔습니다. kmcs 문서를 살펴보는 중인데 인증서를 가지고 signing 한다고 되어 있던데 정식인증서라는 것은 어디서 구할 수 있는가요?

Leave a Reply