476. DREAD 모델 - 위협 리스크 산정 지표 (Damage, Reproducibility, Exploitability, Affected users, Discoverability)
핵심 인사이트 (3줄 요약)
- 본질: DREAD 모델은 STRIDE로 찾아낸 수십 개의 보안 위협(벌레들)을 앞에 두고, "어떤 놈이 가장 치명적이고 우리 회사를 망하게 할 것인가?"를 5가지 과학적인 평가 잣대(피해 규모, 재현성, 공략 난이도, 피해자 수, 발견 난이도)를 통해 1점~10점의 숫자(리스크 점수)로 냉혹하게 환산해 내는 위험 평가(Risk Assessment) 방정식이다.
- 가치: "다 위험하니까 싹 다 고쳐!"라는 비현실적인 완벽주의를 박살 낸다. 개발팀의 시간과 예산은 유한하다. DREAD 점수가 9점인 "DB 통째로 털리는 취약점"은 오늘 밤새워 패치(우선순위 1위)하고, 2점짜리 "관리자 화면 글씨 깨짐"은 그냥 무시(Risk Acceptance)해 버리게 만들어주는 **'가장 차가운 비즈니스 의사결정의 칼날'**이다.
- 융합: 앞 장의 **STRIDE 모델(위협 식별)**이 총알을 찾아내는 것이라면, DREAD 모델은 그 총알이 내 심장에 박힐지 발가락에 박힐지를 계산하여 **애자일(Agile) 스프린트의 백로그 우선순위(Jira Ticket Priority)**로 완벽하게 융합 변환시켜 주는 중간 파이프라인이다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 마이크로소프트가 고안한 리스크 점수화 기법. 5개의 영단어 앞 글자를 땄다. 위협 하나를 잡고, 각 5개 항목에 1점(낮음) ~ 10점(높음)을 매긴다. 그리고 그 점수들의 평균을 내어 "이 취약점은 DREAD 8점(High Risk)짜리 폭탄이다"라고 수치화한다.
- Damage (피해가 얼마나 큰가?)
- Reproducibility (다시 터뜨리기 쉬운가?)
- Exploitability (해킹하기 쉬운가?)
- Affected Users (몇 명이 피해를 보나?)
- Discoverability (해커가 이 구멍을 찾기 쉬운가?)
-
필요성: 보안팀이 위협 모델링을 신나게 해서 "잠재적 취약점 50개 발견!" 리포트를 개발팀장에게 던지고 갔다. 다음 주가 앱 출시인데 50개를 언제 다 고치나? 팀장은 분노한다. 이때 리포트를 유심히 보니, 49개는 "해커가 서버실을 도끼로 부수고 들어와서 램(RAM)을 뜯어가면 정보가 털림(현실성 0%)" 같은 헛소리들이고, 단 1개만이 "비밀번호가 평문으로 날아감(현실성 100%)"이었다. 이처럼 "막연한 공포"를 "정확한 확률과 파괴력(Risk = Impact x Probability)"으로 분리해 내어, 한정된 자원(인건비)을 급소 방어에만 쏟아붓기 위해 DREAD라는 수학적 저울이 필요하다.
-
💡 비유: DREAD는 응급실의 **'환자 중증도 분류(Triage) 시스템'**과 같습니다. 응급실에 환자 50명이 한꺼번에 몰려왔습니다. 의사가 아무나 먼저 온 순서대로 진료(패치)하면, 감기 환자 고치다가 심장마비 환자는 대기실에서 죽습니다. DREAD는 들어오는 환자 이마에 즉시 "생명 위독(9점, 즉각 수술)", "팔 부러짐(6점, 30분 대기)", "찰과상(1점, 집에 가라)" 딱지를 칼같이 붙여서 의사(개발자)가 누구의 목숨부터 살릴지 정해주는 가장 자비 없는 생존 룰입니다.
-
등장 배경 및 발전 과정:
- 주먹구구식 공포 마케팅: 90년대 보안 업체들은 취약점 1개만 찾아도 "회사 망합니다! 우리 솔루션 10억 주고 사세요!"라고 사기를 쳤다.
- 리스크 기반 사고(Risk-based Thinking) 도래: 마이크로소프트가 STRIDE를 만들며 위협을 왕창 찾아냈는데, 개발자들이 고치다 지쳐 쓰러졌다. 그래서 "점수 매겨서 상위 20%만 고쳐라"라며 DREAD를 짝꿍으로 발표했다.
- CVSS의 대중화와 DREAD의 쇠퇴/진화: DREAD는 '평가자의 주관적 느낌'이 개입한다는 비판을 받았다. 그래서 전 세계 보안 학계는 이를 더 객관화시킨 **CVSS(공통 취약점 등급 시스템, 1~10점)**라는 글로벌 절대 표준으로 진화시켰다. 하지만 아키텍처 설계 단계(오픈 전)의 직관적 브레인스토밍용으로는 여전히 DREAD가 사랑받고 있다.
-
📢 섹션 요약 비유: STRIDE가 쓰레기 더미에서 **'금조각 1개와 돌멩이 99개'**를 전부 다 건져 올리는 뜰채라면, DREAD는 그 100개를 감정사 안경을 끼고 쳐다보며 **"이건 10억 원짜리 순금(즉각 패치), 이건 0원짜리 돌멩이(무시)"**라고 가격표를 정확히 매겨 쓰레기를 갖다 버리게 해주는 냉혹한 보석 감정사입니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
1. DREAD의 5가지 평가 잣대 해부 (어떻게 10점을 받는가?)
어떤 취약점(예: 회원가입 창 주민번호 평문 전송)을 앞에 두고 5가지 질문을 던진다.
- Damage (피해 규모)
- 10점: DB 전체 삭제, 관리자 권한 100% 탈취 (회사 파산)
- 1점: 화면 구석 텍스트 색깔이 살짝 깨짐 (아무도 모름)
- Reproducibility (재현성)
- 10점: 해커가 스크립트 클릭 1번만 하면 100% 똑같이 서버가 터짐 (개나 소나 다 터뜨림)
- 1점: 서버 메모리가 딱 99.9% 찼을 때, 낙뢰가 치고 동시에 마우스를 눌러야 1번 터짐 (재현 불가능)
- Exploitability (공략 난이도)
- 10점: 초등학생도 구글에서 해킹 툴 다운받아 버튼 누르면 뚫림 (너무 쉬움)
- 1점: 리버스 엔지니어링 박사 학위자가 3달 동안 어셈블리어를 분석해야 간신히 뚫음 (가성비 안 나옴)
- Affected Users (피해자 수)
- 10점: 앱에 접속하는 100만 명 고객 전원의 신용카드가 다 털림
- 1점: 특정 관리자 1명의 사내 이메일 1통만 유출됨
- Discoverability (발견 난이도)
- 10점: 로그인 화면 주소창에 너무 대놓고
password=123이 노출되어 지나가던 개도 발견함 - 1점: 서버 내부의 1만 번째 폴더 구석 텍스트 파일에 숨겨진 구멍이라 천재도 못 찾음
- 10점: 로그인 화면 주소창에 너무 대놓고
2. 점수 계산과 아키텍트의 칼질 (Triage)
-
위 5개 점수(1~10)를 더한 뒤 5로 나누어 평균값을 낸다.
- High (8~10점): 발견 즉시 서비스 닫고 밤새워 패치해라! (예: SQL 인젝션 DB 탈취 - 9점)
- Medium (5~7점): 이번 주 금요일 정기 배포 때 고쳐서 내보내라. (예: XSS 게시판 팝업 버그 - 6점)
- Low (1~4점): 그냥 Jira 티켓 맨 밑에 쳐박아두고 평생 고치지 마라. (Accept Risk)
-
📢 섹션 요약 비유: 이 과정은 보험 회사의 **'교통사고 보상금 산정'**과 똑같습니다. 피해자(위협)가 찾아와서 "나 죽을 뻔했어! 10억 내놔!"(개발자의 공포)라고 우겨도, 보험사 직원(DREAD)은 "1. 차 긁힌 정도(Damage), 2. 과실 비율(Exploitability) 등을 엑셀로 정확히 계산해보니 50만 원짜리(Low Risk)네요"라고 공포를 차가운 숫자(Risk Score)로 분쇄해 버리는 객관화 작업입니다.
Ⅲ. 융합 비교 및 다각도 분석
1. DREAD (위협 평가) vs CVSS (취약점 점수 체계)
"그래서 얼마나 위험한데?"를 묻는 건 똑같지만, 쓰이는 시점과 무대가 다르다.
| 비교 척도 | DREAD 모델 | CVSS (Common Vulnerability Scoring System) |
|---|---|---|
| 사용 시점 | 코딩 전 설계 단계 (Shift-Left) | 코드 다 짜고 배포 후, 혹은 라이브러리 (Shift-Right) |
| 주요 사용자 | 내부 아키텍트와 기획자 (브레인스토밍 용) | 전 세계 사이버 보안 커뮤니티, 스캐닝 자동화 툴 |
| 평가 대상 | "이런 위협이 터지면 어떻게 될까?" (미래/가정) | CVE-2021-44228(Log4j) "실제로 터진 구멍의 파괴력" (현실/팩트) |
| 객관성 | 주관적(팀마다 Damage를 10점, 5점으로 다르게 매김) | 절대적 수학 공식 (전 세계 누가 매겨도 똑같은 점수 나옴) |
| 특징 | 우리 회사만의 비즈니스 맥락(Affected Users)이 들어감. | 우리 회사 사정은 안 봐주고, 기술적 치명도만 절대 평가. |
과목 융합 관점
-
소프트웨어 공학 (리스크 관리, Risk Management): 소프트웨어 공학의 대전제는 "Risk = Probability(발생 확률) x Impact(피해 크기)"다. DREAD는 이 추상적인 공식을 5개로 잘게 찢은 실무용 칼이다. R, E, D 세 개는 "발생 확률"을 뜻하고, D, A 두 개는 "피해 크기"를 뜻한다. 이것을 곱하고 평균 내어 "우리가 껴안고 갈 리스크(Risk Acceptance)"와 "돈 들여서 고칠 리스크(Risk Mitigation)"를 쪼개는 관리 경영학의 정수와 융합된다.
-
애자일 및 CI/CD (백로그 융합): DREAD 모델이 방구석 탁상공론으로 끝나지 않으려면 데브옵스와 결합해야 한다. 회의실에서 DREAD 8점 이상 나온 위협 시나리오는, 회의가 끝나는 즉시 Jira(이슈 트래커)의 최상위 에픽(Epic)이나 버그(Bug) 티켓으로 꽂혀서 다음 스프린트(Sprint)의 무조건 1순위 개발 목표로 강제 배정되어야 한다. 평가가 곧 '개발자 키보드의 움직임'으로 연결되는 아키텍처다.
-
📢 섹션 요약 비유: DREAD는 동네 요리 대회의 심사위원입니다. 주관적이지만 "우리 동네 사람들 입맛(우리 회사 비즈니스)"에 맞는 요리에 더 높은 점수를 줍니다. 반면 CVSS는 올림픽 체조 심판입니다. 로씨야든 한국이든 상관없이 회전수, 착지 자세 같은 절대적인 국제 기술 룰(수학적 기준)에 따라 정확한 소수점 점수를 매기는 피도 눈물도 없는 글로벌 기계 잣대입니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오
-
시나리오 — 주관적 공포에 매몰된 예산 낭비 (Discoverability의 함정): 보안팀 신입이 뛰어와 소리쳤다. "팀장님! 서버 소스 코드를 디컴파일(역추적)해서 30번째 꼬인 암호화 로직을 풀고, 그 키로 메모리 덤프를 뜨면 고객 정보가 털리는 엄청난 취약점(Damage 10점)을 발견했습니다! 당장 서버 내리고 3달 동안 갈아엎어야 합니다!" 팀장이 DREAD 잣대를 꺼내 들었다.
- 아키텍트의 해결책: 실현 가능성(Probability)을 망각한 완벽주의의 폐해다. 팀장이 팩트 폭격을 날린다. "피해(Damage) 10점은 맞다. 근데 그거 해킹하려면 천재 해커가 1년 내내 우리 서버만 파야 돼(Exploitability 1점). 게다가 그 구멍은 아무도 못 찾아(Discoverability 1점). 평균 내봐. DREAD 3점(Low)이네. 그거 고칠 3달 동안 경쟁사한테 우리 회사 망해. 덮어둬, 안 고쳐." 아키텍트는 완벽한 보안이 아니라 가성비(ROI) 높은 방어를 해야 한다. DREAD는 이 멍청한 오버엔지니어링(Over-engineering)을 합법적으로 찍어누르는 무기다.
-
시나리오 — DREAD가 멱살 잡고 올린 최우선 패치 (Affected Users의 힘): 마케팅팀이 "전단지 알바생용 홍보 게시판"을 하나 열어달라고 했다. 트래픽도 하루 10명뿐이고 관리자도 안 보는 버려진 게시판이라 개발자가 대충 짰다(SQL 인젝션 취약점 존재). 그런데 아키텍트가 DREAD 모델을 돌리더니 당장 이 게시판 배포를 취소하고 1순위로 수정하라고 난리를 쳤다.
- 아키텍트의 해결책: 연결된 신뢰 경계(Blast Radius)에 대한 통찰이다. 그 게시판 자체의 피해(Damage)는 1점(알바생 10명)일지 몰라도, 그 게시판 DB가 "우리 회사 1,000만 고객의 마스터 DB"와 물리적으로 똑같은 서버(망 분리 실패)에 묶여있다는 것을 꿰뚫어 본 것이다. 해커가 텅 빈 게시판의 SQL 구멍(Exploitability 10점)을 타고 들어와 마스터 DB로 횡적 이동(Lateral Movement)을 하면 피해자(Affected Users)는 1,000만 명(10점)이 된다. 구석의 1점짜리 위협이 순식간에 9점짜리 핵폭탄으로 변신하는 융합 위협을 평가해 낸 훌륭한 사례다.
도입 체크리스트
- 조직적: DREAD 평가 점수 매기기(Rating)가 정치 싸움으로 변질되지 않는가? 개발팀은 안 고치고 싶어서 Damage를 무조건 1점을 주고, 보안팀은 무조건 다 10점을 때리는 '회의실 핑퐁(Ping-pong) 지옥'이 흔히 열린다. 아키텍트는 사전에 "10점: 회사 망함, 5점: 기사 1줄 남, 1점: 아무도 모름" 같이 절대 굽힐 수 없는 '우리 회사만의 명확한 점수 가이드라인 템플릿'을 만들어놓고 기계적으로 채점(Triage)해야 감정싸움으로 번지지 않는다.
- 비즈니스적: Discoverability(발견 난이도) 항목을 과대평가(오해)하지 마라. 옛날엔 "해커가 내 코드 못 찾겠지(Security through Obscurity)"라며 D 항목을 1점으로 줬다. 지금은 소스 코드가 깃허브로 유출되거나 자동 스캐너가 너무 뛰어나서 숨길 수 있는 구멍은 0(Zero)에 수렴한다. 현대의 많은 보안 전문가는 Discoverability를 항상 10점(누구나 1초 만에 다 발견함)으로 박아두거나, 아예 헷갈리니까 빼버리고 4개만 평가하는 유연성을 보이고 있다.
안티패턴
-
리스크 제로(Zero Risk) 맹신주의: "우리 회사의 DREAD 목표 점수는 올 제로(0점)다! 취약점 1개라도 남아있으면 집 못 가!"라고 소리치는 멍청한 경영진. 제로 리스크를 달성하는 유일한 방법은 서버 랜선을 뽑고 바다에 던져버리는 것뿐이다. 아키텍처는 비즈니스를 돕는 것이지 방해하는 것이 아니다. **"DREAD 4점 이하는 우리가 감내한다(Acceptable Risk)"라는 위험 수용의 마지노선(Threshold)**을 쿨하게 정해두지 않으면 개발팀은 평생 버그만 좇다 아사(餓死)한다.
-
📢 섹션 요약 비유: 리스크를 0으로 만들겠다는 것은, 자동차 사고가 무서워서 **'자동차를 탱크처럼 50톤 두께의 장갑차로 개조하는 미친 짓'**입니다. 사고(위협)는 절대 안 나겠지만 차가 너무 무거워서 시속 5km로 달리다 경쟁 택시 회사한테 다 망합니다. 진짜 현명한 엔지니어는 "정면충돌(DREAD 9점)만 막게 에어백 달고, 문콕(DREAD 2점)은 그냥 기스나게 내버려 둬!"라며 가벼움(속도)과 안전을 저울질하는 타협(Trade-off)의 예술을 부려야 합니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과
| 구분 | 위협 발견 시 즉흥적인 뇌피셜 기반 대응 (AS-IS) | DREAD 기반의 체계적 리스크 스코어링 (TO-BE) | 개선 효과 |
|---|---|---|---|
| 정량 | 100개의 자잘한 위협을 고치느라 릴리즈 2달 밀림 | DREAD 8점 이상 핵심 타겟 5개만 1일 만에 수술 완료 | 위협 방어에 투입되는 개발 리소스 및 인건비 90% 극적 최적화 |
| 정량 | 1% 확률의 억까(Edge) 시나리오 방어하려 서버 구조 꼬임 | 피해 규모(Damage) 낮은 위협 과감히 폐기(Risk Acceptance) | 오버엔지니어링(Over-engineering) 비율 0% 압착 |
| 정성 | "이거 진짜 고쳐야 돼?" 보안팀과 개발팀의 영원한 갈등 | 1~10점이라는 차가운 수치적 잣대로 1초 만에 깔끔한 승복 | 직군 간의 이견을 하나로 모으는 객관적 언어(Common Language) 확립 |
미래 전망
- DREAD의 퇴역과 정량적 CVSS/EPSS의 천하통일: 안타깝게도 DREAD는 마이크로소프트조차 2010년대 이후 "너무 평가자 주관이 세게 들어간다"며 공식 폐기(Deprecated)한 낡은 모델이다. 현재는 전 세계 모든 기계와 클라우드가 이해하는 글로벌 숫자인 **CVSS(취약점 점수 체계)**와, "이 구멍이 진짜로 인터넷에서 해커들에게 공격당할 실제 확률(Probability)"을 AI가 실시간으로 매겨주는 최첨단 **EPSS(Exploit Prediction Scoring System)**가 융합되어 DREAD가 꿈꾸던 위협의 완벽한 수학적 우선순위를 1초 만에 기계가 대신 찍어주는 시대로 대체되었다.
- 비즈니스 자산 가치 자동 연동 (Asset-Aware Scoring): 취약점(총알)이 아무리 세도, 빈 깡통 서버에 맞으면 0점이고 고객 DB에 맞으면 10점이다. 앞으로의 보안 점수는 인프라 정보와 연동되어, "이 취약점이 꽂힌 서버가
Tag=Customer-DB네? 가중치 10만 배 적용!"이라며 비즈니스 자산(Asset)의 중요도를 런타임에 스스로 파악하여 지능적으로 점수를 펌핑하는 맥락 인지형 스코어링 체계로 진화하고 있다.
참고 표준
- DREAD Model: 마이크로소프트가 STRIDE를 보완하기 위해 만든 5대 척도. 비록 구식이 되었으나, "위협을 볼 때 그냥 무서워하지 말고 피해, 재현성, 공략 난이도로 쪼개서 이성적으로 분석하라"는 철학적 가르침만큼은 영원한 바이블로 살아 숨 쉰다.
- Risk = Impact × Probability (리스크 = 영향도 × 발생 확률): 소프트웨어 공학뿐만 아니라 인류의 모든 재무, 경영, 재난 관리 학문을 지배하는 단 하나의 절대 방정식. DREAD는 이 방정식을 엔지니어가 씹어 먹기 좋게 5조각으로 썰어준 포크와 나이프다.
DREAD 모델은 보안 아키텍트가 반드시 갖춰야 할 **'냉혹한 피도 눈물도 없는 자본주의적 통찰력'**을 상징한다. 우리는 모든 것을 고칠 수 없다. 완벽한 보안이라는 환상을 좇는 자는 결코 시스템을 세상 밖(배포)으로 내보내지 못하는 비겁한 이상주의자에 불과하다. 진정한 기술사는 매일 밤 쏟아지는 수천 개의 취약점 리포트(벌레 떼) 앞에서도 흔들리지 않고, 1점에서 10점까지의 서늘한 눈금자를 들이대며 "이 벌레는 우리의 심장을 갉아먹을 9점짜리 독거미니 당장 서버를 내려라. 이 2점짜리 개미는 그냥 밟히게 놔두고 다음 기능 개발로 전진해라"라고 가장 효율적이고 잔인한 취사선택(Triage)을 내리는 조직의 사령관이 되어야 한다. 버리는 자만이 진정으로 중요한 것을 지켜낼 수 있다.
- 📢 섹션 요약 비유: DREAD 모델로 위협을 쳐내는 것은, 전시 병원의 **'빨강, 노랑, 검정 딱지 붙이기'**와 같습니다. 몰려드는 부상자(보안 구멍)를 보고 감정에 휘둘려 찰과상 환자(DREAD 2점)의 손을 잡고 울어주는 의사는 가짜입니다. 피를 흘리며 들어오는 환자에게 1초 만에 "살릴 수 없다(검정 딱지-버림)", "이놈부터 묶고 지혈해라(빨강 딱지-DREAD 10점 즉각 패치)"라고 피도 눈물도 없이 수학적 태그를 붙여 100명 중 90명을 확실하게 살려내는 최적화의 기술, 그것이 DREAD가 쥐여주는 결단의 도끼입니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| STRIDE 모델 | 영혼의 단짝. STRIDE가 숲을 뒤져 호랑이 1마리와 토끼 99마리를 전부 다 잡아 오는(식별) 역할이라면, DREAD는 그 100마리를 보고 호랑이만 살처분하고 토끼는 풀어주는(평가) 콤비 플레이다. (이전 장 475번) |
| 위협 모델링 (Threat Modeling) | STRIDE와 DREAD라는 두 가지 쌍검을 양손에 쥐고, 아키텍처 다이어그램(DFD)이라는 칠판 위에서 춤을 추며 해커의 심장을 도려내는 설계 단계의 위대한 전투 행위(프로세스). (이전 장 474번) |
| CVSS (취약점 산정 체계) | DREAD 모델의 "현대화된 글로벌 끝판왕 버전". DREAD가 주관식 서술형 평가라면, CVSS는 0.1점 단위까지 전 세계 누구나 엑셀로 정확하게 점수가 딱 떨어지는 OMR 마킹 시험이다. |
| 백로그 (Backlog) / 우선순위 (Priority) | DREAD에서 8점 이상 나온 치명적 리스크가 묻히지 않고, 개발자들의 지라(Jira) 티켓 1순위(Highest)로 강제 꽂히게 만드는 애자일(Agile) 업무 프로세스의 도착지. |
| Risk Acceptance (위험 수용) | DREAD 1~3점이 나왔을 때 아키텍트가 취하는 가장 멋진 행위. "이거 고칠 시간에 돈 버는 기능 하나 더 만들어!"라며 리스크를 쿨하게 껴안고 무시해 버리는 고도의 비즈니스 결단. |
👶 어린이를 위한 3줄 비유 설명
- 집에 벌레 50마리가 나타났어요! 엄마한테 다 잡아달라고 하니까, 엄마는 시간이 없어서 "다 잡을 순 없어!"라고 하셨어요.
- 그래서 우리는 벌레 점수를 매기기로 했어요. "물면 아픈가? 우리 집에서 알을 잘 낳는가? 눈에 잘 띄는가?" 5가지 질문으로 점수를 냈죠.
- 점수를 매겨보니 무서운 '독거미(10점)' 딱 1마리만 당장 때려잡고, 나머지 무당벌레 49마리(1점)는 그냥 냅두기로(무시) 했어요! 이렇게 수많은 위험 중에서 가장 무서운 놈부터 순서대로 점수를 매겨 무찌르는 똑똑한 작전을 **'DREAD 모델'**이라고 부른답니다!