STRIDE - Secure Systems Begin With Knowing Your Threats, Part 2 의 개작

  • Post author:
  • Post category:
  • Post comments:1 Comment
  • Post last modified:November 3, 2005

오늘은 Secure Systems Begin with Knowing Your Threats, Part 2을 마음대로 개작해 봤다. 이전 글에서 분명히 밝히지 못한 것 같아서 한마디 덧붙이겠다. 이 작품은 전적으로 내 맘대로 개작한 것이다. 엄밀한 의미에서의 번역이 아니다. 단순히 의역한 정도라고 생각하지 말라. 원문을 읽으면서 덧붙이고 싶은 말과 빼고 싶은 내용을 마음대로 가감했다. 정확한 내용을 알고 싶다면 원문을 읽는 편이 나을 것이다. 하지만 이 개작판도 나쁘지는 않다고 생각한다.

시리즈의 첫번째 글(역자주: 번역글 링크)에서는 안전한 어플리케이션을 개발함에 있어 위협 분석이 왜 중요한지에 대해 이야기했다. 또한 그러한 분석을 수행하기 위한 간단한 방법(STRIDE)을 소개했다.

이제 위협분석 과정을 자세히 들여다 볼 차례다. 내가 여기서 사용할 예제는 간단한 웹서버 기반의 전자상거래 사이트다. 이 사이트의 특징 중 몇가지는 다음과 같다.

  • 사용자는 재고를 확인하고, 사진을 보거나 사용자의 평가를 읽을 수 있다.
  • 자용자는 물품을 검색하고, 물품을 선택하여 구매할 수 있다. 온라인 장바구니에 물품을 추가할 수도 있다.
  • 사용자는 구매를 위해 배송 정보와 신용카드 정보를 입력한다.
  • 신용카드 유효성 확인 서비스는 실시간으로 신용카드 정보를 인증한다.

도표 1은 이 사이트의 아키텍처를 묘사하고 있다.

위협 모델링 과정 (The Threat Modeling Process)
우선 위협모델링(threat modeling session)을 한다. 이 단계에서는 모든 가능한 위협들이 결정된다. 예제사이트에 대한 위협모델링 단계가 끝나고 나서, 설계 및 개발 팀은 다음과 같은 취약점을 발견했다.

  • 서버 그 자체
  • 사용자 데이터 (이름, 암호, 그리고 신용카드 정보와 같은 것들)
  • 서버 설정 데이터
  • 재고 데이터 (제품 가격, 사진, 제품설명, 사용자 평가 등등)
  • 신용카드 유효성 확인 서비스

위협을 평가할 때, 다음과 같은 분류를 사용하라.

  1. 위협의 이름
  2. 위협의 종류 (STRIDE 모델을 사용하라.)
  3. 위협의 대상
  4. The effort, criticality, and risk of the threat
  5. 공격 기법과 완화 기법

각각을 보다 자세히 알아보자.

위협의 이름
위협의 이름은 위협의 본질을 드러내는 간단한 문장이다.

위협의 종류
하나의 위협은 하나 이상의 STRIDE 카테고리에 속한다. 예를 들어 Spoofing identity 위협은 Information discloser 위협 때문에 발생한 것일 수 있다. 특히 elevation of privilege 위협에 주의를 기울여라. 왜냐하면 이 위협이 보통 다른 모든 카테고리와 연관이 있기 때문이다.

위협의 대상
위협의 대상은 어플리케이션의 어떤 컴포넌트가 공격에 취약한지 정의한다. 위협의 대상에는 모든 데이터 소스와 모든 실행가능한 프로세스가 포함된다.

The Effort, Criticality, and Risk of the Threat
첫번째 글에서 공식이 제공된다.

공격 기법과 완화 기법
공격과 완화 기법은 공격이 어떻게 일어나고, 그러한 공격을 완화하기 위해 어떤 기술을 사용할 것인지를 결정한다. 이 과정에는 보통 컴퓨터 보안에 대해 잘 아는 사람들이 필요하다. 다시 말해 외부의 도움이 필요할 것이라는 뜻이다. 가능한 공격이 제시되었을 때, “그런 것은 일어날리 없습니다.” 라던가 “그런 공격은 당해본 적 없습니다.” 라는 말을 해서는 안 된다. 모든 것이 가능하다. 다만 다행스럽게도 위험도가 낮을 뿐이다.

도표 2는 위험모델링으로부터 나올 수 있는 Anthology의 한 예이다. (역자주: 약간의 자화자찬이 엿보인다.) 이것은 위협을 완화하기 위한 몇가지 일반적인 기술을 명세해서 보여준다. (레퍼런스로 사용하기 위해 인쇄하고 싶을 수도 있을 것이다.)

위협 모델
이제 위협모델링의 결과물, 즉 위협 모델에 관심을 돌려보자. 다음은 complete security threat report의 예제 아이템들이다.

  • 공격자가 사용자의 장바구니에 접근한다.
  • 공격자가 SSL/TLS 의 개인키에 접근한다.

공격자가 사용자의 장바구니에 접근한다.
이것은 수행하기 쉬운 공격이다. 공격자는 단지 사용자의 장바구니에 접근하기 위해 사용자의 쿠키나 다른 인증수단을 다시 실행시키기만 하면 된다. 위협은 다음과 같다.

  • Spoofing identity – 공격자가 사용자처럼 행동한다.
  • Tampering with data – 공격자가 사용자의 장바구니를 조작할 수도 있다.
  • Information disclosure – 공격자가 장바구니의 내용을 볼 수 있다.

이러한 공격을 시도하는데 드는 effort은 적은 반면, 공격의 Criticality는 높다. 1장에서 제시된 공식에 따르면, 이것은 risk가 상당히 높다는 것을 의미한다. 분명히 이 취약점은 해결되야 하지만, 문제는 간단하지 한다.

이러한 위협에 대처하기 위해, 인증티켓의 생명주기를 줄이는 등의 완화 기법을 사용할 수 있다. SSL/TLS를 사용하여 모든 서버와 클라이언트 사이의 통신을 안전하게 할 수도 있다. 하지만 이 방법은 비쌀 것이다.

공격자가 SSL/TLS 의 개인키에 접근한다.
이것은 매우 어려운 기술이다. 하지만 그 결과는 매우 심대하다. 웹서버가 클라이언트와의 SSL/TLS 세션을 시작할 때 공격자가 개인키에 접근할 수 있다면, 공격자는 키를 사용하여 웹사이트인척 속일 수 있다. 웹서버에 대한 위협은 다음과 같다.

  • Spoofing identity – 공격자가 전자상거래 사이트인척 속일 수 있다.
  • Information disclosure – 공격자가 사용자로 하여금 자신의 신용카드 정보를 제공하도록 설득할 수 있다. 사용자의 웹브라우저에 SSL/TLS 표시가 되기 때문에, 그들은 사이트가 유효하다고 생각할 것이다.

이 공격을 수행하기 위해 드는 effort는 매우 크다. 하지만 가능한 피해정도 역시 매우 크다. 그러므로 전체적인 risk는 작은 편이다.

특별한 암호화기능을 제공하는 하드웨어에 키를 저장하는 완화기법 등이 있다.

결론
어떤 위협이 아무리 불가능해 보일지라도 반드시 기록되어야 한다는 점을 잊지 말라. 이론이 언제 현실이 될지는 알 수 없는 법이다.

마지막으로 조언 하나만 하겠다. 완화기법으로써의 교육의 힘을 간과하지 말라. 사용자에게 취약한 암호를 사용하지 말고, 종이에 적지 말라고 말하는 것은 기술과는 별 상관없다. 어떠한 기술도 사용자와 관리자의 실수에 비할 수 없다. 교육이 중요하다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] STRIDE – Secure Systems Begin With Knowing Your Threats, Part 2 […]