본문 바로가기

보안/시큐어코딩

[위협모델링] 솔루션

출처: http://msdn.microsoft.com/ko-kr/library/aa561499.aspx

[MSDN]위협모델링 샘플 TMA.pdf






























MS-SDL 에서는 위험도를 계산하기 위해 DREAD를 이용한다.


DREAD 각 항목은 1~10점으로 평가하며, 1은 낮은 심각성 또는 발생확률이고 10은 높은 심각성 또는 발생확
이다. 위험도는 전체의 산술평균값(전체를 더한 결과/5)을  사용한다.    


      - 예상피해(Damage potential), 피해가 얼마나 클것인가?
         0 = 없음
         5 = 개별 사용자 데이터가 손상되거나 영향을 받는다.
        10 = 전체 시스템 또는 데이터가 삭제된다.


      - 재현확률(Reproducibility), 공격이 성공할 확률이 얼마인가?       
         0 = 심지어 응용 프로그램 관리자조차도 매우 어렵거나 불가능하다.
         5 = 하나 또는 두단계가 필요하거나, 허가된 사용자만 가능하다.
        10 =그냥 웹 브라우저 주소 표시 줄에서도  인증없이 가능하다.


      - 공격용이도(Exploitability),  공격을 위해 얼마나 많은 노력과 기술이 필요한가?
         0 = 고급 프로그래밍 기술과 네트워크 기술이 포함되는 사용자 정의나 고급 공격 도구 

               사용한다.
         5 = 악성 프로그램이 인터넷 상에 존재하거나, 가능한 공격 도구 사용한다.
        10 = 웹 브라우저만 사용한다.


      - 영향을 받는 사용자(Affected users), 위협이 악용되어 공격이 되었다고 할 때 얼마나 

                                                             많은 사람이 영향을 받는가?

        0 = 없음
        5 = 전체가 아닌 몇몇 사용자 
       10 = 모든 사용자


      - 발견용이성(Discoverability), 취약점을 발견하기 쉬운가?

        0 = 불가능하거나 매우 어렵다.  소스 코드 또는 관리자 권한 액세스 요구된다.
        5 = 추측하거나  네트워크 모니터링을 통해 알아낸다.
        9 = 이 같은 오류의 세부 사항이 이미 공개되어  쉽게 검색 엔진을 사용하여 검색 할 수 

              있다.
       10 = 정보가 웹 브라우저 주소 표시 줄에서 볼 수있다.















































위협 모델 분석

TMA(위협 모델 분석)는 제품, 응용 프로그램, 네트워크 또는 환경에 대한 보안 위험 및 공격이 수행되는 방식을 확인하는 데 도움이 되는 분석입니다. 이 분석은 완화해야 하는 위협 및 해당 위협을 완화하는 방법을 확인하는 데 목적을 두고 있습니다.

이 섹션에서는 TMA 프로세스에 대한 상위 수준의 정보를 제공합니다. 자세한 내용은 Writing Secure Code, Second edition(Michael Howard, David LeBlanc 저)의 4장을 참조하십시오.

TMA의 장점은 다음과 같습니다.

  • 응용 프로그램을 보다 명확하게 이해할 수 있습니다.
  • 버그를 찾을 수 있습니다.
  • 신규 팀 멤버가 응용 프로그램을 상세하게 파악하는 데 도움이 됩니다.
  • 사용자의 응용 프로그램을 기반으로 하는 다른 팀에 대한 중요한 정보가 제공됩니다.
  • 테스터에게 유용합니다.

다음은 상위 수준의 TMA 수행 단계입니다.

  • 1단계. 배경 정보 수집
  • 2단계. 위협 모델 만들기 및 분석
  • 3단계. 위협 검토
  • 4단계. 완화 방법 및 기술 식별
  • 5단계. 보안 모델 및 배포 고려 사항 문서화
  • 6단계. 완화 구현 및 테스트
  • 7단계. 위협 모델과 디자인의 동기화 상태 유지

1단계. 배경 정보 수집


성공적인 TMA를 준비하려면 몇 가지 배경 정보를 수집해야 합니다. 이러한 정보를 수집하면 다음과 같이 대상 환경(응용 프로그램, 프로그램 또는 전체 인프라)을 분석하는 데 유용합니다.

  • 사용 사례 시나리오를 식별합니다. 대상 환경의 각 사용 사례 시나리오에 대해 회사에서 대상 환경을 사용하도록 할 방법과 대상 환경에 대한 제한 사항을 식별합니다. 수집된 정보를 통해 위협 모델 관련 토론의 범위를 정의할 수 있으며, 자산(데이터 및 컴퓨터와 같이 회사에서 중요하게 취급되는 모든 항목)에 대한 포인터 및 진입점을 정확하게 확인할 수 있습니다.

  • 각 시나리오에 대해 DFD(데이터 흐름 다이어그램)를 만듭니다. DFD는 위협을 파악할 수 있도록 상세히 만들어야 합니다.

  • 대상 환경의 경계와 범위를 결정합니다.

  • 신뢰할 수 있는 구성 요소와 신뢰하지 않는 구성 요소 간의 경계를 파악합니다.

  • 각 구성 요소의 구성 및 관리 모델을 파악합니다.

  • 외부 종속성 목록을 만듭니다.

  • 각 구성 요소가 종속되는 다른 구성 요소에 대한 가정 목록을 만듭니다. 이 목록을 통해 구성 요소 간 가정, 작업 항목 및 다른 팀과의 추가 작업 항목에 대해 유효성을 검사합니다.

2단계. 위협 모델 만들기 및 분석


배경 정보를 수집한 후에는 위협 모델 관련 모임을 한 번 이상 가져야 합니다. 각 개발 분야의 멤버(예: 프로그램 관리자, 개발자 및 테스터)가 한 명 이상 모임에 참석해야 하며, 이러한 참석자에게 모임의 목표가 위협을 해결하는 것이 아닌, 위협을 발견하는 것임을 주지시켜야 합니다. 위협 모델 관련 모임에서는 다음을 수행합니다.

  • 각 사용 사례에 대해 DFD를 검토하고 사례 식별을 사용합니다.

    • 진입점
    • 신뢰 경계
    • 진입점에서 최종 도착 위치로의 데이터 흐름 및 그 반대 방향의 흐름

  • 관련 자산을 참고합니다.

  • 각 DFD에 대해 토론하고 DFD의 모든 항목에 대한 다음 범주의 위협을 확인합니다. ID 스푸핑(Spoofing identify), 데이터 손상(Tampering with data), 거부(Repudiation), 정보 공개(Information disclosure), 서비스 거부(Denial of service) 및 권한 상승(Elevation of privileges).

  • 아키텍처 및 디자인 검토 검사 목록을 사용하여 모든 위협 범주를 포함하도록 합니다. 아키텍처 및 디자인 검토에 대한 자세한 내용은 http://go.microsoft.com/fwlink/?LinkId=62590(영문)에서 "patterns & practices Security Architecture and Design Review Index"를 참조하십시오.

  • 식별된 위협의 목록을 만듭니다. 이 목록에는 제목, 간단한 설명(위협 트리 포함), 자산, 영향, 위험, 완화 방법, 완화 상태 및 버그 번호를 포함하는 것이 좋습니다.

    note참고
    위험, 완화 방법 및 완화 상태는 위협을 검토하면서 추가할 수 있습니다. 위협 모델 모임 중에는 이러한 영역에서 시간을 너무 많이 소비하지 마십시오.

3단계. 위협 검토

환경에 대한 위협을 파악한 후에는 각 위협의 위험 순위를 지정하고 각 위협에 대응할 방법을 결정해야 합니다. 이 작업은 추가 팀 모임 또는 전자 메일을 통해 수행할 수 있습니다. 위험 노출을 계산하려면 다음 효과 범주를 사용할 수 있습니다. 잠재적 손상(Damage potential), 재현 가능성(Reproducibility), 악용 가능성(Exploitability), 영향을 받는 사용자(Affected users) 및 검색 가능성(Discoverability).

대상 환경에 대한 위협 목록에서 위험의 우선 순위를 지정한 후에는 각 위협에 대한 대응 방법을 결정해야 합니다. 대응 방법으로는 아무 작업도 하지 않기(대부분의 경우 적절하지 않음), 사용자에게 잠재적 문제 경고, 문제 제거 또는 문제 해결이 있습니다.

4단계. 완화 방법 및 기술 식별

해결할 위협을 식별한 후에는 각 위협에 대해 사용 가능한 완화 방법 및 각 위협의 영향을 줄이는 데 가장 적합한 기술을 결정해야 합니다.

예를 들어 대상 환경의 세부 정보에 따라 인증 방법을 사용하여 데이터 손상 위협의 영향을 줄일 수 있습니다. 그런 다음 사용할 적절한 인증 기술(예: DACL(임의 액세스 제어 목록), 사용 권한 또는 IT 제한)을 결정해야 합니다.

Important중요
사용할 완화 방법 및 기술을 평가할 때는 회사에서 수행하는 업무에 적절한 항목과 선택하려는 완화 방법에 영향을 줄 수 있는 회사의 정책을 고려해야 합니다.

TMA를 완료한 후에는 다음을 수행합니다.

  • 보안 모델 및 배포 고려 사항 문서화
  • 완화 구현 및 테스트
  • 디자인과 동기화된 위협 모델 유지

5단계. 보안 모델 및 배포 고려 사항 문서화

TMA 중에 확인된 내용과 대상 환경에 대한 위협의 영향을 줄일 방법을 문서로 작성해야 합니다. 이러한 문서는 QA(품질 보증), 테스트, 지원 및 운영 담당자에게 유용할 수 있습니다. 대상 환경과 상호 작용하거나 호환되는 다른 응용 프로그램 그리고 방화벽 및 토폴로지 권장 사항과 요구 사항에 대한 정보를 포함하십시오.

6단계. 완화 구현 및 테스트

팀에서 TMA 중에 식별된 위협을 해결할 준비가 되면 개발 및 배포 검사 목록을 사용하여 새로운 위협 발생 가능성을 최소화하는 데 도움이 되는 보안 수칙 및 배포 표준을 따라야 합니다.

완화를 구현한 후에는 테스트를 거쳐 해당 완화가 위협에 대해 적절한 수준의 보호를 제공하는지 확인해야 합니다.

7단계. 위협 모델과 디자인의 동기화 상태 유지

작업 환경에 새 응용 프로그램, 서버 및 기타요소를 추가할 때는 위협 모델 분석에서 발견된 내용을 다시 확인하고 새 기능에 대해 TMA를 수행해야 합니다.


[[ 위협 모델링 샘플 ]]


1. 데이터흐름도의 일반 개념 - 배경도에서 하위레벨로 상세 분할하기



2. 예제 급여 프로그램의 배경도





3. 예제 급여 애플리케이션의 레벨-1 데이터 흐름





4. 예제 급여 애플리케이션의 상위 물리적 구성





5. 위협 분석 테이블














6. 위협 분석 트리











중소 기업용 보안 사례 연구:  http://msdn.microsoft.com/ko-kr/library/aa578182.aspx