다음을 통해 공유


디버거 보안

다른 프로세스를 디버깅하는 기능은 특히 원격으로 디버깅할 때 사용할 수 없는 매우 광범위한 기능을 제공합니다. 악의적인 디버거는 디버깅 중인 컴퓨터에 광범위한 피해를 줄 수 있습니다.

그러나 많은 개발자는 보안 위협이 반대 방향으로 흐를 수도 있다는 것을 인식하지 못합니다. 디버깅 프로세스의 악성 코드가 디버깅 머신의 보안을 위태롭게 할 수 있습니다. 보호해야 하는 보안 악용이 많이 있습니다.

보안 모범 사례

디버깅하는 코드와 디버거 사이에는 암시적 신뢰 관계가 있습니다. 디버그하려는 의지가 있다면 실행할 의지도 있어야 합니다. 결론은 디버깅하는 항목을 신뢰할 수 있어야 한다는 것입니다. 신뢰할 수 없는 경우 디버그해서는 안 되며, 위험할 수 있는 컴퓨터와 격리된 환경에서 디버그해야 합니다.

잠재적인 공격 노출 영역을 줄이려면 프로덕션 머신에서 디버깅을 사용하지 않도록 설정해야 합니다. 같은 이유로 디버깅을 무기한으로 사용하도록 설정해서는 안 됩니다.

관리되는 디버깅 보안

다음은 모든 관리되는 디버깅에 적용되는 몇 가지 일반적인 권장 사항입니다.

원격 디버깅 보안

로컬 디버깅은 일반적으로 원격 디버깅보다 안전합니다. 원격 디버깅은 프로브할 수 있는 총 노출 영역을 증가합니다.

Visual Studio 원격 디버깅 모니터(msvsmon.exe)는 원격 디버깅에 사용되며 구성을 위한 몇 가지 보안 권장 사항이 있습니다. Windows 인증이 선호되는 이유는 인증 모드가 없는 것이 안전하지 않기 때문입니다.

오류 대화 상자

Windows 인증 모드를 사용하는 경우 msvsmon을 호스트하는 컴퓨터에 대한 모든 권한이 사용자에게 부여되므로 신뢰할 수 없는 사용자에게 msvsmon에 연결할 수 있는 권한을 부여하는 것은 위험합니다.

원격 컴퓨터에서 알 수 없는 프로세스를 디버그하지 마세요. 디버거를 실행하는 컴퓨터에 영향을 줄 수 있는 잠재적인 악용이 있거나 msvsmon을 손상시킬 수 있습니다. 알 수 없는 프로세스를 디버그해야 하는 경우 로컬로 디버깅을 시도하고 방화벽을 사용하여 잠재적인 위협을 지역화 상태로 유지합니다.

msvsmon 구성에 대한 자세한 내용은 원격 디버거 설정을 참조하세요.

웹 서비스 디버깅 보안

로컬로 디버그하는 것이 더 안전하지만 웹 서버에 Visual Studio가 설치되어 있지 않을 수 있으므로 로컬 디버깅이 실용적이지 않을 수 있습니다. 일반적으로 웹 서비스 디버깅은 개발 중에를 제외하고 원격으로 수행되므로 원격 디버깅 보안에 대한 권장 사항은 웹 서비스 디버깅에도 적용됩니다. 다음은 몇 가지 추가 모범 사례입니다. 자세한 내용은 XML 웹 서비스 디버깅을 참조하세요.

  • 손상된 웹 서버에서 디버깅을 사용하도록 설정하지 마세요.

  • 웹 서버를 디버깅하기 전에 웹 서버가 안전하다는 것을 알고 있는지 확인합니다. 보안이 확실하지 않은 경우 디버그하지 마세요.

  • 인터넷에 노출되는 웹 서비스를 디버깅하는 경우 특히 주의해야 합니다.

외부 구성 요소

특히 코드를 작성하지 않은 경우 프로그램에서 상호 작용하는 외부 구성 요소의 신뢰 상태를 알고 있어야 합니다. Visual Studio 또는 디버거에서 사용할 수 있는 구성 요소도 알고 있어야 합니다.

기호 및 소스 코드

보안을 고려해야 하는 두 가지 Visual Studio 도구는 다음과 같습니다.