다음을 통해 공유


Windows Presentation Foundation 보안 전략 - 보안 엔지니어링

업데이트: 2007년 11월

신뢰할 수 있는 컴퓨팅은 안전한 코드 생산을 보장하기 위한 Microsoft의 기술입니다. 신뢰할 수 있는 컴퓨팅 기술의 핵심 요소는 Microsoft SDL(Security Development Lifecycle)입니다. SDL은 안전한 코드 전달을 용이하게 하기 위해 표준 엔지니어링 프로세스와 함께 사용되는 엔지니어링 방법입니다. SDL은 최상의 구현 방법을 형식화, 측정 가능성 및 다음의 추가 구조와 결합하는 열 가지 단계로 구성됩니다.

  • 보안 설계 분석

  • 도구 기반 품질 검사

  • 침투 테스트

  • 최종 보안 검토

  • 릴리스 후 제품 보안 관리

WPF 관련

WPF 엔지니어링 팀에서는 다음과 같은 핵심 항목을 조합하여 SDL를 적용하고 확장합니다.

위협 모델링

보안 분석 및 편집 도구

테스트 기술

중요한 코드 관리

위협 모델링

위협 모델링은 SDL의 핵심 구성 요소이며 잠재적인 보안 취약성을 확인할 수 있도록 시스템을 프로파일링하는 데 사용됩니다. 또한 위협 모델링에서는 취약성이 식별되면 적절한 완화 방안이 마련되어 있는지 확인합니다.

위협 모델링의 상위 수준에는 다음과 같은 핵심 단계가 포함됩니다. 여기서는 식품점을 예로 들어 설명합니다.

  1. 자산 식별. 식품점의 자산에는 직원, 금고, 금전 등록기, 재고 등이 포함될 수 있습니다.

  2. 진입점 열거. 식품점의 진입점에는 정문과 후문, 창, 하역장 및 냉난방기가 포함될 수 있습니다.

  3. 진입점을 통한 자산에 대한 공격 조사. 한 가지 가능한 공격에서는 냉난방기 진입점을 통해 식품점의 금고 자산을 대상으로 삼을 수 있습니다. 냉난방기를 나사를 풀어 떼어내고 이를 통해 금고를 가게 밖으로 빼낼 수 있습니다.

위협 모델링은 WPF 전체에 적용되며 다음을 포함합니다.

  • XAML 파서가 파일을 읽고 텍스트를 해당하는 개체 모델 클래스에 매핑하고 실제 코드를 만드는 방법

  • 창 핸들(hWnd)이 생성되고 메시지를 보내고 창의 내용을 렌더링하기 위해 사용되는 방법

  • 데이터 바인딩을 통해 리소스을 가져오고 시스템과 상호 작용하는 방법

이러한 위협 모델은 개발 과정에서 보안 설계 요구 사항과 위협 완화 방안을 식별하는 데 중요합니다.

소스 분석 및 편집 도구

WPF 팀에서는 SDL의 수동 보안 코드 검토 요소 외에도 소스 분석 및 관련 편집 작업을 위한 여러 도구를 사용하여 보안 취약성을 줄입니다. 다음을 비롯한 다양한 소스 도구가 사용됩니다.

  • FXCop. 상속 규칙, 코드 액세스 보안 사용, 비관리 코드와의 안전한 상호 운용 방법 등에 이르는 관리 코드와 관련된 일반적인 보안 문제를 찾습니다. FxCop Team Page를 참조하십시오.

  • Prefix/Prefast. 버퍼 오버런, 형식 문자열 문제, 오류 검사 등 비관리 코드와 관련된 보안 취약성 및 일반적인 보안 문제를 찾습니다.

  • Banned APIs. 소스 코드를 검색하여 보안 문제를 일으키는 것으로 알려진 strcpy와 같은 함수를 실수로 사용했는지 여부를 식별합니다. 식별할 경우 이러한 함수를 더 안전한 대체 함수로 바꿉니다.

테스트 기술

WPF에서는 다음을 비롯한 다양한 보안 테스트 기술을 사용합니다.

  • Whitebox 테스트. 테스터에서 소스 코드를 보고 악용 테스트를 작성합니다.

  • Blackbox 테스트. 테스터에서 API 및 기능을 검사한 다음 제품 공격을 시도하여 보안 문제를 찾습니다.

  • 다른 제품의 보안 문제 회귀. 해당하는 경우 관련 제품의 보안 문제를 테스트합니다. 예를 들어 Internet Explorer에 대한 약 60가지 보안 문제의 적합한 변형을 식별하고 WPF에 적용할 수 있는지 시험했습니다.

  • 파일 퍼지를 통한 도구 기반 침투 테스트. 파일 퍼지는 다양한 입력을 통해 파일 판독기의 입력 범위를 악용하는 것입니다. WPF에서 이 기술을 사용하는 한 가지 예는 이미지 디코딩 코드에서 오류를 확인하는 것입니다.

중요한 코드 관리

XBAP(XAML 브라우저 응용 프로그램)의 경우 WPF에서는 권한을 상승시키는 보안에 중요한 코드를 표시 및 추적할 수 있는 .NET Framework 기능을 사용하여 보안 샌드박스를 작성합니다(WPF(Windows Presentation Foundation) 보안 전략 - 플랫폼 보안에서 보안에 중요한 방법 참조). 보안에 중요한 코드의 보안 품질 요구 사항이 높은 경우 이러한 코드는 추가 수준의 소스 관리 제어 및 보안 감사를 받습니다. WPF의 약 5~10%는 보안에 중요한 코드로 구성되며, 이러한 코드는 전담 검토 팀에서 검토합니다. 소스 코드 및 체크 인 프로세스는 보안에 중요한 코드를 추적하고 중요한 각 엔터티(즉, 중요한 코드를 포함하는 메서드)를 해당 승인 상태에 매핑하는 방법을 통해 관리합니다. 승인 상태에는 한 명 이상의 검토자 이름이 포함됩니다. 매일 WPF 빌드 시마다 중요한 코드를 이전 빌드의 중요한 코드와 비교하여 승인되지 않은 변경 사항이 있는지 확인합니다. 엔지니어가 검토 팀의 승인 없이 중요한 코드를 수정하는 경우 즉시 식별되고 수정됩니다. 이 프로세스를 통해 WPF 샌드박스 코드에 대해 특히 높은 수준의 보안을 적용하고 유지 관리할 수 있습니다.

참고 항목

개념

Windows Presentation Foundation 보안

Windows Presentation Foundation 부분 신뢰 보안

WPF(Windows Presentation Foundation) 보안 전략 - 플랫폼 보안

기타 리소스

신뢰할 수 있는 컴퓨팅

Application Threat Modeling

Security Guidelines: .NET Framework 2.0