출처: 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 프로세스에 대한 상위 수준의 정보를 제공합니다. 자세한 내용은 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"를 참조하십시오.
- 식별된 위협의 목록을 만듭니다. 이 목록에는 제목, 간단한 설명(위협 트리 포함), 자산, 영향, 위험, 완화 방법, 완화 상태 및 버그 번호를 포함하는 것이 좋습니다.
참고
위험, 완화 방법 및 완화 상태는 위협을 검토하면서 추가할 수 있습니다. 위협 모델 모임 중에는 이러한 영역에서 시간을 너무 많이 소비하지 마십시오.
3단계. 위협 검토
환경에 대한 위협을 파악한 후에는 각 위협의 위험 순위를 지정하고 각 위협에 대응할 방법을 결정해야 합니다. 이 작업은 추가 팀 모임 또는 전자 메일을 통해 수행할 수 있습니다. 위험 노출을 계산하려면 다음 효과 범주를 사용할 수 있습니다. 잠재적 손상(Damage potential), 재현 가능성(Reproducibility), 악용 가능성(Exploitability), 영향을 받는 사용자(Affected users) 및 검색 가능성(Discoverability).
대상 환경에 대한 위협 목록에서 위험의 우선 순위를 지정한 후에는 각 위협에 대한 대응 방법을 결정해야 합니다. 대응 방법으로는 아무 작업도 하지 않기(대부분의 경우 적절하지 않음), 사용자에게 잠재적 문제 경고, 문제 제거 또는 문제 해결이 있습니다.
4단계. 완화 방법 및 기술 식별
해결할 위협을 식별한 후에는 각 위협에 대해 사용 가능한 완화 방법 및 각 위협의 영향을 줄이는 데 가장 적합한 기술을 결정해야 합니다.
예를 들어 대상 환경의 세부 정보에 따라 인증 방법을 사용하여 데이터 손상 위협의 영향을 줄일 수 있습니다. 그런 다음 사용할 적절한 인증 기술(예: DACL(임의 액세스 제어 목록), 사용 권한 또는 IT 제한)을 결정해야 합니다.
![]() |
---|
사용할 완화 방법 및 기술을 평가할 때는 회사에서 수행하는 업무에 적절한 항목과 선택하려는 완화 방법에 영향을 줄 수 있는 회사의 정책을 고려해야 합니다. |
TMA를 완료한 후에는 다음을 수행합니다.
- 보안 모델 및 배포 고려 사항 문서화
- 완화 구현 및 테스트
- 디자인과 동기화된 위협 모델 유지
5단계. 보안 모델 및 배포 고려 사항 문서화
TMA 중에 확인된 내용과 대상 환경에 대한 위협의 영향을 줄일 방법을 문서로 작성해야 합니다. 이러한 문서는 QA(품질 보증), 테스트, 지원 및 운영 담당자에게 유용할 수 있습니다. 대상 환경과 상호 작용하거나 호환되는 다른 응용 프로그램 그리고 방화벽 및 토폴로지 권장 사항과 요구 사항에 대한 정보를 포함하십시오.
6단계. 완화 구현 및 테스트
팀에서 TMA 중에 식별된 위협을 해결할 준비가 되면 개발 및 배포 검사 목록을 사용하여 새로운 위협 발생 가능성을 최소화하는 데 도움이 되는 보안 수칙 및 배포 표준을 따라야 합니다.
완화를 구현한 후에는 테스트를 거쳐 해당 완화가 위협에 대해 적절한 수준의 보호를 제공하는지 확인해야 합니다.
7단계. 위협 모델과 디자인의 동기화 상태 유지
작업 환경에 새 응용 프로그램, 서버 및 기타요소를 추가할 때는 위협 모델 분석에서 발견된 내용을 다시 확인하고 새 기능에 대해 TMA를 수행해야 합니다.
[[ 위협 모델링 샘플 ]]
1. 데이터흐름도의 일반 개념 - 배경도에서 하위레벨로 상세 분할하기
2. 예제 급여 프로그램의 배경도
3. 예제 급여 애플리케이션의 레벨-1 데이터 흐름
4. 예제 급여 애플리케이션의 상위 물리적 구성
5. 위협 분석 테이블
6. 위협 분석 트리
중소 기업용 보안 사례 연구: http://msdn.microsoft.com/ko-kr/library/aa578182.aspx
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩실습] CSRF 방어코드 작성기법 (0) | 2013.10.25 |
---|---|
[시큐어코딩실습] XSS 방어를 위한 시큐어코딩 기법 (0) | 2013.10.24 |
[시큐어코딩실습] 파일 업로드 취약점제거 (0) | 2013.10.17 |
ASP게시판에서 CSRF 취약점 테스트 (0) | 2013.10.02 |
CERT Java Secure Coding (0) | 2013.09.26 |