안녕하세요, 여러분! 🌐 보안 취약점의 세계를 탐험하는 여러분의 가이드입니다. 오늘은 지난번에 이어 2021년 OWASP Top 10의 핵심인 A04:2021-Insecure Design (안전하지 않은 설계)에 대해 더 깊이 파고들고, 식별된 위협의 위험도를 평가하는 데 유용한 DREAD 위협 평가 모델을 상세히 설명해 드리겠습니다. 💡

🤔 왜 위협을 평가해야 할까요?
지난번 STRIDE 위협 모델링을 통해 우리 시스템의 설계에 어떤 잠재적 위협이 있는지 식별하는 방법을 배웠습니다. 하지만 단순히 위협을 나열하는 것만으로는 부족합니다. 모든 위협이 동일한 수준의 위험을 가지는 것은 아니기 때문입니다. 📉 어떤 위협은 당장 해결해야 할 치명적인 문제일 수 있고, 어떤 위협은 나중에 처리해도 될 만큼 우선순위가 낮을 수 있습니다.
여기서 바로 위협 평가의 중요성이 부각됩니다. 식별된 각 위협에 대해 그 심각성을 객관적으로 평가하고 우선순위를 부여함으로써, 한정된 자원과 시간을 가장 효과적으로 사용하여 보안을 강화할 수 있습니다. 🛡️ 그리고 이 위협 평가를 위한 강력한 도구가 바로 DREAD입니다!
🎲 DREAD 위협 평가 모델: 위험도를 측정하는 5가지 척도
DREAD는 Microsoft에서 개발한 위협 평가 방법론으로, 식별된 각 위협에 대해 5가지 기준을 사용하여 위험도를 점수화합니다. 각 기준에 따라 1(낮음)부터 10(높음)까지 점수를 부여하여 총점을 계산하거나, 주관적인 판단에 따라 '낮음', '중간', '높음' 등으로 분류할 수 있습니다. 이 점수들을 통해 어떤 위협이 더 시급하게 처리되어야 하는지 우선순위를 정할 수 있습니다. 🎯
자, DREAD의 5가지 기준을 하나씩 자세히 살펴볼까요?
1. Damage (손상 가능성) 💥
- 정의: 위협이 성공했을 때 시스템이나 비즈니스에 발생할 수 있는 잠재적 피해의 심각성입니다.
- 고려사항:
- 데이터 손실, 변조, 유출 규모는? 📉
- 서비스 중단 시간은? ⏱️
- 금전적 손실은? 💰
- 기업 이미지 손상은? 💔
- 법적, 규제적 위반 가능성은? ⚖️
- 예시: 고객의 개인 정보 유출(높음), 서비스 일시 중단(중간), 비필수 로그 파일 변조(낮음).
- 안전하지 않은 설계와의 연관성: 민감 정보 처리 방식, 중요 서비스의 복구 설계, 데이터 백업 및 보존 정책 등이 손상 가능성에 큰 영향을 미칩니다.
2. Reproducibility (재현 가능성) 🔁
- 정의: 공격자가 동일한 위협을 얼마나 쉽게, 그리고 얼마나 일관되게 재현할 수 있는지의 정도입니다.
- 고려사항:
- 공격에 필요한 특정 조건이 자주 발생하는가? 🔄
- 공격 절차가 복잡한가, 아니면 간단한가? 🛠️
- 매번 동일한 결과가 발생하는가? ✅
- 예시: 클릭 몇 번으로 가능한 SQL 인젝션(높음), 특정 환경에서만 발생하는 매우 드문 버그(낮음).
- 안전하지 않은 설계와의 연관성: 사용자 입력값 검증 로직의 부재, 비정상적인 데이터 흐름에 대한 처리 미흡 등은 재현 가능성을 높일 수 있습니다.
3. Exploitability (악용 가능성) 🧑💻
- 정의: 공격자가 위협을 성공적으로 악용하기 위해 필요한 노력, 기술, 지식, 자원의 양입니다.
- 고려사항:
- 특정 전문 지식이 필요한가? 🎓
- 공격 도구가 널리 사용 가능한가? 🔧
- 공격에 필요한 시간이 짧은가, 긴가? ⏳
- 우회하기 쉬운가, 어려운가? 🚧
- 예시: 널리 알려진 취약점(예: 오래된 라이브러리)을 이용하는 공격(높음), 제로데이 취약점을 이용하는 매우 복잡한 공격(낮음).
- 안전하지 않은 설계와의 연관성: 시스템의 복잡성, 사용되는 기술 스택의 보안 수준, 외부 의존성의 관리 방식 등이 악용 가능성에 영향을 미칩니다.
4. Affectability (영향받는 사용자 수) 👥
- 정의: 위협이 성공했을 때 영향을 받는 사용자 또는 시스템 구성 요소의 수입니다.
- 고려사항:
- 전체 사용자가 영향을 받는가, 특정 그룹만 영향을 받는가? 🎯
- 전체 서비스가 중단되는가, 일부 기능만 중단되는가? ⚙️
- 내부 시스템만 영향을 받는가, 외부 시스템도 영향을 받는가? 🌍
- 예시: 모든 사용자의 계정을 탈취할 수 있는 취약점(높음), 특정 관리자 한 명에게만 영향을 미치는 취약점(낮음).
- 안전하지 않은 설계와의 연관성: 권한 분리 설계, 서비스 모듈화, 사용자 역할 관리 방식 등이 영향을 받는 사용자 수에 직접적인 관계를 가집니다.
5. Discoverability (발견 가능성) 🕵️♀️
- 정의: 공격자가 위협이나 취약점을 얼마나 쉽게 발견할 수 있는지의 정도입니다.
- 고려사항:
- 취약점이 공개적으로 알려져 있는가? 📢
- 시스템의 설계가 공개되어 있는가? 📄
- 자동화된 스캔 도구로 쉽게 찾을 수 있는가? 🤖
- 육안 검토나 기본적인 테스트로 발견될 수 있는가? 👀
- 예시: HTTP 헤더에 민감 정보가 포함되어 쉽게 발견되는 경우(높음), 매우 깊이 숨겨진 코드 로직에 있는 취약점(낮음).
- 안전하지 않은 설계와의 연관성: 시스템의 복잡성, 문서화 수준, 오류 메시지 설계, URL 구조 등이 발견 가능성에 영향을 미칩니다.
DREAD 점수화 및 활용 📈
각 기준에 대해 1~10점(혹은 1~3점)을 부여한 후, 이 점수들을 합산하거나 평균을 내어 최종 위험 점수를 산출합니다.
예시:
| 위협 명칭 | Damage | Reproducibility | Exploitability | Affectability | Discoverability | 총점 (합산) | 위험도 |
| DB 인젝션 | 10 | 9 | 8 | 10 | 9 | 46 | 높음 |
| 서비스 거부 | 8 | 7 | 6 | 8 | 7 | 36 | 중간 |
| 로그 변조 | 5 | 4 | 3 | 2 | 4 | 18 | 낮음 |
이러한 점수를 바탕으로, 가장 높은 점수를 받은 위협부터 순서대로 보안 개선 작업을 진행할 수 있습니다. DREAD는 특정 위협에 대한 주관적인 느낌이 아닌, 객관적인 척도를 제공하여 팀 내에서 위협 우선순위에 대한 합의를 도출하는 데 큰 도움을 줍니다. 🤝
결론: 식별(STRIDE)부터 평가(DREAD)까지, 안전한 설계의 완성! 🏆
A04:2021-Insecure Design에 효과적으로 대응하기 위해서는 단순히 코드를 안전하게 짜는 것을 넘어, 설계 단계부터 보안을 내재화해야 합니다. STRIDE를 통해 잠재적 위협을 폭넓게 식별하고, DREAD를 통해 식별된 위협의 위험도를 객관적으로 평가하여 가장 중요한 부분부터 개선하는 것이 중요합니다.
이 두 가지 강력한 도구를 여러분의 개발 프로세스에 통합함으로써, 처음부터 '안전하게 설계된(Secure by Design)' 견고한 시스템을 구축할 수 있을 것입니다. 🏗️ 보안은 개발의 마지막 단계가 아니라, 처음부터 끝까지 함께하는 여정입니다!
'일반IT > IT보안' 카테고리의 다른 글
| 🦠 내 서비스에 숨어있는 시한폭탄! OWASP 6위, 취약하고 오래된 컴포넌트 (0) | 2025.09.30 |
|---|---|
| 🚪 열려있는 뒷문, OWASP 5위 보안 설정 오류 (Security Misconfiguration) 파헤치기 (0) | 2025.09.30 |
| OWASP Top 10: A04:2021 안전하지 않은 설계(Insecure Design)와 STRIDE 위협 모델링 샅샅이 파헤치기 🧐 (0) | 2025.09.29 |
| 🛡️ 공격자의 눈으로 우리 서비스를 보자! OWASP 위협 모델링 프로세스 완벽 가이드 (0) | 2025.09.29 |
| 🏗️ 잘못된 첫 단추, 모든 것을 무너뜨린다! OWASP 4위, 안전하지 않은 설계 (0) | 2025.09.29 |