064. DREAD 모델 (위험도 정량 평가)

⚠️ 이 문서는 위협 모델링(Threat Modeling) 과정에서 수없이 발견된 다양한 보안 위협들 중에서 "어느 것이 회사의 목숨을 끊어놓을 만큼 위험한가?"를 수치화하여 우선순위를 매기는 마이크로소프트의 정량적 평가 기법인 DREAD 모델을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: DREAD 모델은 5가지 평가 기준(Damage, Reproducibility, Exploitability, Affected Users, Discoverability)의 머리글자를 딴 것으로, 각 항목을 점수(보통 1~10점)로 매겨 합산함으로써 특정 보안 위협의 '심각도(Risk Level)'를 수학적인 숫자로 정량화하는 공식이다.
  2. 가치: 개발팀이 "이 취약점은 고치기 귀찮은데 꼭 막아야 하나요?"라고 물을 때, "이건 DREAD 점수가 45점(최상위)이므로 오픈 일정을 미뤄서라도 지금 당장 고쳐야 한다"라는 의사결정(Triage)의 객관적이고 숫자로 된 타당한 근거를 제공한다.
  3. 융합: 보통 STRIDE 모델을 통해 "어떤 취약점이 존재하는가(식별)"를 찾아낸 직후, 그 목록들을 DREAD 모델 체에 걸러 "무엇부터 고칠 것인가(우선순위)"를 결정하는 찰떡궁합의 콤보로 사용된다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

보안 아키텍트가 시스템의 설계도를 보며 위협 모델링(STRIDE)을 돌리면 취약점이 수십 개 쏟아져 나온다. "게시판 XSS 취약점, DB 비밀번호 평문 저장, 세션 타임아웃 없음" 등이다.

개발팀의 시간과 예산은 한정되어 있으므로 모든 것을 완벽히 고치고 출시할 수는 없다(Trade-off). 누군가는 총대를 메고 **"이건 진짜 치명적이니까 1순위로 고치고, 저건 너무 사소하니까 나중에 고치자(수용)"**라고 교통정리를 해줘야 한다.

과거에는 수석 엔지니어의 '감(Feeling)'에 의존하여 "이게 왠지 위험해 보이는데?"라고 결정했다면, 마이크로소프트가 고안한 DREAD 모델은 이를 5가지 체계적인 항목으로 쪼개어 점수를 부여함으로써, 개발자, 기획자, 경영진 모두가 납득할 수 있는 수치적 합의(Consensus)를 이끌어낸다.

📢 섹션 요약 비유: 병원 응급실에 환자가 10명 몰려왔을 때, 의사가 기분 내키는 대로 진료하는 게 아니라 "출혈량(피해), 전염성(재현성), 환자 나이 등 5가지 체크리스트 점수"를 더해서, 점수가 가장 높은 위급 환자부터 수술실에 밀어 넣는 응급실의 '트리아지(중증도 분류)' 시스템과 완벽히 똑같습니다.


Ⅱ. DREAD의 5가지 핵심 평가 기준 (Deep Dive)

발견된 보안 위협(버그/취약점) 하나를 도마 위에 올려놓고 다음 5가지 질문에 대해 각각 1점(낮음)에서 10점(높음)까지 점수를 매긴다.

  1. D (Damage, 피해의 심각성)
    • 이 취약점이 터지면 회사는 얼마나 큰 피해를 보는가?
    • 10점: DB 전체가 유출되어 회사가 뉴스에 나오고 파산할 수준 (루트 권한 탈취).
    • 1점: 사용자 본인 화면의 사소한 이미지 하나가 깨지는 수준.
  2. R (Reproducibility, 재현 용이성)
    • 공격이 한 번 성공한 후, 똑같은 방법으로 치면 또 뚫리는가(재현)?
    • 10점: 주소창에 특정 단어만 치면 언제 어디서든 무조건 100% 뚫림.
    • 1점: 특정 시간에 네트워크가 끊기는 타이밍을 0.001초 단위로 맞추는 등 타이밍(Race Condition) 맞추기가 기적에 가까워 거의 재현 불가능함.
  3. E (Exploitability, 공격의 난이도)
    • 이 취약점을 찌르기(공격하기) 위해 해커는 얼마나 뛰어난 실력이 필요한가?
    • 10점: 해킹 툴을 다운받아 엔터(Enter)만 누르면 초등학생(스크립트 키디)도 뚫을 수 있음.
    • 1점: 어셈블리어 코드를 완벽히 이해하고 맞춤형 폭파 코드를 직접 짜야 하는 세계 최고 수준의 해커만 가능.
  4. A (Affected Users, 영향을 받는 사용자 수)
    • 공격이 터졌을 때 몇 명의 사용자가 피해를 보는가?
    • 10점: 관리자 계정이 털려 우리 시스템의 1,000만 명 가입자 전원의 정보가 털림.
    • 1점: 해킹을 당한 본인 딱 1명의 정보만 오염됨.
  5. D (Discoverability, 취약점 발견의 용이성)
    • 이 취약점을 해커가 찾아내는 것이 얼마나 쉬운가?
    • 10점: 브라우저 F12 키만 눌러서 소스보기만 해도 비밀번호가 바로 보임.
    • 1점: 회사 내부자만 아는 복잡한 백엔드 소스코드를 수백 시간 리버스 엔지니어링 해야 겨우 찾을 수 있음.

총점 계산: $D + R + E + A + D = Total Risk Score$ (예: 50점 만점). 점수가 높을수록 무조건 먼저 고쳐야 하는 치명적 결함(Critical)이다.


Ⅲ. 실무 시나리오: DREAD 점수 산정 및 의사결정

상황: 쇼핑몰 설계 리뷰 중 2가지 취약점이 발견되었다. 오픈까지 남은 시간은 1주일. 개발팀장은 "하나만 고칠 시간이 있습니다"라고 한다.

[취약점 A]: 게시판 댓글 XSS (사용자가 글을 읽을 때 팝업창이 뜸)

  • D (피해): 5점 (세션 탈취 가능성 존재)
  • R (재현): 10점 (댓글 누를 때마다 무조건 실행됨)
  • E (공격난이도): 9점 (XSS 코드는 인터넷에 널려있어 쏘기 쉬움)
  • A (피해자수): 8점 (그 글을 읽는 모든 고객)
  • D (발견): 9점 (게시판에 <script>를 입력해 보는 건 가장 흔한 해킹 시도임)
  • 총점: 41점 (High Risk)

[취약점 B]: 0.001초 사이에 결제 버튼을 두 번 따닥! 누르면 결제 안 되고 물건이 배송되는 버그 (Race Condition)

  • D (피해): 8점 (회사의 금전적 피해 발생)
  • R (재현): 2점 (네트워크 지연 타이밍을 정확히 맞추기 극히 어려움)
  • E (공격난이도): 3점 (매크로 프로그램을 정교하게 짜서 돌려야 함)
  • A (피해자수): 2점 (시도한 그 해커 본인에게만 물건이 공짜로 감, 타인 피해 없음)
  • D (발견): 2점 (일반 사용자는 절대 우연히 발견할 수 없는 구조)
  • 총점: 17점 (Low Risk)

의사결정 (Triage): DREAD 점수 결과를 놓고 보면, 취약점 A(41점)의 위험도가 압도적으로 높다. 아키텍트는 "취약점 B(17점)는 오픈 후 천천히 고치거나 로그 모니터링(보완 통제)으로 대체하고, 당장 모든 리소스를 투입해 취약점 A(게시판 XSS)를 막아라!"라고 과학적이고 합리적인 결론을 내릴 수 있다.

📢 섹션 요약 비유: "저기 날아오는 미사일과 굴러오는 돌멩이 중 무엇부터 피해야 할까?"를 그냥 느낌으로 정하는 게 아니라, 미사일의 파괴력, 명중률, 사거리 등을 점수로 다 매겨보니 미사일이 40점, 돌멩이가 10점이라 "미사일부터 피하라!"고 기계가 확정해 주는 완벽한 계산기입니다.


Ⅳ. DREAD 모델의 한계점 (주관성의 개입)

완벽해 보이는 DREAD 모델도 치명적인 한계가 있어 최근엔 CVSS(Common Vulnerability Scoring System) 등 다른 평가 체계에 밀리는 추세다.

  • 발견 용이성(Discoverability)의 딜레마: "우리가 코드를 꽁꽁 숨겨놨으니 해커가 절대 발견 못 할 거야(1점)"라고 착각하는 보안 담당자들이 많다. 보안 업계에서는 "은닉을 통한 보안(Security by Obscurity)은 보안이 아니다"라고 맹비난한다. 발견하기 어렵다고 점수를 깎으면 나중에 크게 당한다.
  • 채점자의 주관적 편향: 1점부터 10점 사이를 주는 기준이 모호하다. 개발팀장은 빨리 퇴근하고 싶어서(의도적 축소) 전부 3점만 주고, 보안팀은 겁이 많아 전부 10점을 주며 싸우는 주관적 감정싸움으로 변질될 수 있다.

Ⅴ. 결론

DREAD 모델은 '보안'이라는 눈에 보이지 않는 공포(Fear)를 '숫자'라는 경영학과 공학의 언어로 번역해 준 위대한 계산기였다. 비록 점수 매기는 사람의 주관이 개입된다는 한계가 있지만, 한정된 자원 속에서 **"버릴 것은 수용하고(Risk Acceptance), 가장 치명적인 것부터 고친다(Risk Mitigation)"**는 실무적 보안의 철학을 가르쳐 주는 가장 직관적이고 훌륭한 잣대임에 틀림없다.


📌 관련 개념 맵

  • 사용 단계: Threat Modeling (위협 모델링)
  • 영혼의 콤비 (짝꿍 모델): STRIDE 모델 (식별 담당) + DREAD 모델 (평가 담당)
  • 목적: 취약점 우선순위 선정 (Triage), 리스크 정량 평가 (Quantitative Risk Analysis)
  • 현대의 대체/발전 표준 모델: CVSS (Common Vulnerability Scoring System, 취약점 공통 평가 시스템)

👶 어린이를 위한 3줄 비유 설명

  1. 게임을 출시하기 전, 버그가 여러 개 발견되었는데 고칠 시간이 딱 하나밖에 없어요!
  2. "무기 복사 버그"는 게임 망하는 정도(피해) 10점, 누구나 하기 쉬움(난이도) 10점이라서 총점 50점(최악)이고, "캐릭터 옷색깔 깨짐 버그"는 게임엔 문제없음(피해) 1점이라 총점 10점이에요.
  3. DREAD는 이렇게 버그마다 5가지 항목으로 점수를 매겨서, 50점짜리 치명적인 '무기 복사 버그'부터 무조건 먼저 고치게 알려주는 똑똑한 채점표랍니다!