본문 바로가기

Security_Space

Threat Modeling

예전에 학교에서 공부하면서, 이해보다는 무조건 암기했던 기억이 있습니다. "Threat Modeling"은 아직 우리의 일반적인 웹서비스 환경에서는 일반화되지 않아서, 웹개발 하시는 분들에게는 좀더 필요한 방법론이라고 생각합니다. 국내에는 아직 "Threat Modeling"의 책이 나와 있지 않고, Microsoft에서 2004년에 나온 "Threat Modeling"이라는 책도 번역되어 있지 않아서, 처음 접하시는 분들에게는 다소 내용이 어려울 수도 있을 듯 합니다. 기회가 닿으면 해당 내용을 번역하고, 풀이하여 포스팅 해보도록 하겠습니다.

첨부 파일은, Microsoft에서 Threat Modeling을 위한 Tool을 제공하고 있는데, 좀더 용이하게 모델링을 완성할 수 있습니다
.

===========================================================================================================


Microsoft에서 나온 Threat Modeling 은 소프트웨어 개발시 개발되는 제품의 위협원을 분석하여 사전에 취약성을 제거하기 위한 방법론입니다. 아래와 같은 순서로 진행됩니다.
 

1. 시스템이 사용되는 방식과 내외부 조건들을 분석
 

2. 보호해야 하는 자산과 위협원을 식별

- 관리적, 기술적 Self-정보보호 구현 방법론인 OCTAVE에서는 관리자급 이상의 참여를 통해 자산을 식별토록 하며, 식별된 모든 자산을 보호할 수 없기 때문에, 자산에 대한 우선순위를 부여하도록 합니다.

- 위협원의 식별은 Attack Tree를 사용합니다. 위협원이 시스템과 interactive 가능한 조건들을 따져서 Tree 모양의 시나리오를 만들고, 이중에서 실제로 실현 가능한 경로를 찾아내는 방식입니다.

- 위협원을 분류하는 방식으로 STRIDE 카테로리로 나누는데요, STRIDE는 아래와 같습니다.
 

S : Spoofing Identity

- 자신을 다른 이로 속이는 위협입니다. 송신자 IP주소를 변조하는 IP 스푸핑 등이 있습니다.
 

T : Tampering with Data

- 데이터를 인가없이 다른 값으로 변경하는 위협입니다.
 

R : Repudiation

- 자신이 한 행동을 부정하는 것입니다. 예를 들어, 결재했는데 안했다고 발뺌하는 것입니다.
 

I : Information Disclosure

- 인가되지 않은 사람들에게 정보를 노출하는 위협입니다.
 

D : Denial of Service

- 정상적인 서비스를 하지 못하도록 방해하는 위협입니다.
 

E : Elevation of Privilege

- 비인가된 방법으로 자신에게 허락된 권한보다 상위 권한으로 올라가는 위협입니다.
 

3. 시스템의 entry point를 분석하여 취약성을 파악

- 위협원은 entry point를 통해 시스템과 interactive하며 이를 이용하여 버퍼오버플로우, SQL 인젝션 공격을 합니다.
 

4. 위험을 식별

- 보통 Risk = 취약성 x 자산 x 위협원 이 됩니다.

- 정량적 위험 분석으로 Risk = Probability x Impact 로 계량화하기도 합니다.

- Threat Modeling에서는 DREAD를 통해 위험을 계량화합니다. DREAD는 아래와 같습니다.
 

D : Damange Potential => 피해액

R : Reproducibility => 공격의 재생산성 (예를 들면, 특별히 조건없이 아무 때나 공격할 수 있는지..)

E : Exploitability => 공격자 수준

A : Affected users => 공격으로 인해 피해를 보는 사람들

D : Discoverability => 발견가능성

 

DREAD 각각은 1~3사이의 값이 부여되고, 전체 합이 Risk의 값이 됩니다.
 

5. 결과물을 개발팀 등으로 피드백

 

애자일(Agile) 방법론에 Threat Modeling을 접목하려고 하는 시도도 있네요..

코드를 작성하면서 위협원을 식별하고 해결책을 attribute 값을 이용하여 코드에 바로 식별한 순간 삽입하는 방식인 듯 합니다.

http://www.ics.ie/downloads/01_Threat_Modelling.pdf 


참고자료

http://www.win.tue.nl/~ecss/oldsite/seminar/gopa-ajeesh-threats.pdf

http://msdn2.microsoft.com/en-us/library/aa302419.aspx


출처 : http://cafe.naver.com/81th