Secure SDLC
IT 위키
더 많은 작업
- 상위 문서: 정보처리기사/정보 시스템 구축관리
- Secure Software Development Life Cycle
- 소프트웨어 개발 생명주기의 모든 단계에 보안 활동을 포함하여 안전한 소프트웨어를 만드는 개발 방법
- 개발이 끝난 뒤 취약점을 찾아 고치는 방식은 비용이 크므로, 요구사항 단계부터 보안을 반영한다.
- 결함을 늦게 발견할수록 수정 비용이 커지므로 초기 단계의 보안 활동이 중요하다.
- 구현 단계의 보안 활동이 시큐어 코딩이며, 국내에서는 소프트웨어 개발 보안(SW 개발보안)이라고 부른다.
| 단계 | 보안 활동 |
|---|---|
| 요구사항 분석 | 보안 요구사항 도출(기밀성·무결성·가용성, 인증, 접근통제, 법적 요구사항), 보안 등급 분류 |
| 설계 | 위협 모델링, 보안 설계 검토, 설계단계 보안약점 제거 기준 반영 |
| 구현 | 시큐어 코딩 표준 적용, 코드 검토, 정적 분석 도구로 보안약점 진단 |
| 테스트 | 동적 분석, 침투 테스트, 보안약점 진단 결과 조치 확인 |
| 유지보수 | 보안 패치, 취약점 모니터링, 사고 대응, 변경 코드 재진단 |
- SDL(Security Development Lifecycle): 마이크로소프트가 2004년부터 자사 제품 개발에 적용한 보안 개발 방법론이다.
- 전통적 구성: 교육(Training) → 요구사항(Requirements) → 설계(Design) → 구현(Implementation) → 검증(Verification) → 릴리스(Release) → 대응(Response)
- 위협 모델링(STRIDE), 금지 함수 사용 제한, 정적·동적 분석, 최종 보안 검토(FSR) 등을 수행한다.
- 세븐 터치포인트: 게리 맥그로(Gary McGraw)가 제안한 방법론으로, 실무에서 검증된 모범 사례를 SDLC 산출물에 통합한다.
- 7가지 활동: 코드 검토, 아키텍처 위험 분석, 침투 테스트, 위험 기반 보안 테스트, 악용 사례(Abuse Case), 보안 요구사항, 보안 운영
- 행정안전부와 한국인터넷진흥원이 발간한 가이드로, 공공 정보화사업의 개발보안 기준을 제시한다.
- 설계단계 보안약점 20개(입력데이터 검증 및 표현, 보안기능, 에러처리, 세션통제)와 구현단계 보안약점 49개(2021년 가이드 기준)를 다룬다.
| 유형 | 설명 | 대표 보안약점 |
|---|---|---|
| 입력데이터 검증 및 표현 | 입력값 검증 부재·부적절로 발생 | SQL 삽입, 크로스사이트 스크립트, 경로 조작 및 자원 삽입 |
| 보안기능 | 인증, 접근제어, 암호화, 권한 관리의 부적절한 구현 | 부적절한 인가, 하드코드된 중요정보, 취약한 암호화 알고리즘 사용 |
| 시간 및 상태 | 동시·병렬 처리에서 시간·상태 관리 부적절 | 경쟁조건: 검사 시점과 사용 시점(TOCTOU), 종료되지 않는 반복문 또는 재귀 함수 |
| 에러처리 | 오류를 처리하지 않거나 불충분하게 처리 | 오류 메시지 정보노출, 오류상황 대응 부재, 부적절한 예외 처리 |
| 코드오류 | 개발자의 코딩 실수 | Null Pointer 역참조, 부적절한 자원 해제, 초기화되지 않은 변수 사용 |
| 캡슐화 | 중요 데이터·기능의 불충분한 캡슐화 | 제거되지 않고 남은 디버그 코드, Public 메서드로부터 반환된 Private 배열 |
| API 오용 | 의도와 다르게 API를 사용하거나 취약한 API 사용 | DNS lookup에 의존한 보안결정, 취약한 API 사용 |
- 유형별 보안약점 수(2021년 가이드): 17, 16, 2, 3, 5, 4, 2
- Secure SDLC 방법론 3가지(MS SDL, OWASP CLASP, Seven Touchpoints)와 제안 주체를 연결한다.
- 구현단계 보안약점 7개 유형의 이름을 쓰고, 개별 보안약점이 어느 유형에 속하는지 분류한다.
- 설계단계 보안약점 유형에는 시간 및 상태, 코드오류, 캡슐화, API 오용 대신 세션통제가 있다.