본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Secure Software Development Life Cycle
소프트웨어 개발 생명주기의 모든 단계에 보안 활동을 포함하여 안전한 소프트웨어를 만드는 개발 방법
  • 개발이 끝난 뒤 취약점을 찾아 고치는 방식은 비용이 크므로, 요구사항 단계부터 보안을 반영한다.
  • 결함을 늦게 발견할수록 수정 비용이 커지므로 초기 단계의 보안 활동이 중요하다.
  • 구현 단계의 보안 활동이 시큐어 코딩이며, 국내에서는 소프트웨어 개발 보안(SW 개발보안)이라고 부른다.

단계별 보안 활동

편집 원본 편집
단계 보안 활동
요구사항 분석 보안 요구사항 도출(기밀성·무결성·가용성, 인증, 접근통제, 법적 요구사항), 보안 등급 분류
설계 위협 모델링, 보안 설계 검토, 설계단계 보안약점 제거 기준 반영
구현 시큐어 코딩 표준 적용, 코드 검토, 정적 분석 도구로 보안약점 진단
테스트 동적 분석, 침투 테스트, 보안약점 진단 결과 조치 확인
유지보수 보안 패치, 취약점 모니터링, 사고 대응, 변경 코드 재진단
  • SDL(Security Development Lifecycle): 마이크로소프트가 2004년부터 자사 제품 개발에 적용한 보안 개발 방법론이다.
  • 전통적 구성: 교육(Training) → 요구사항(Requirements) → 설계(Design) → 구현(Implementation) → 검증(Verification) → 릴리스(Release) → 대응(Response)
  • 위협 모델링(STRIDE), 금지 함수 사용 제한, 정적·동적 분석, 최종 보안 검토(FSR) 등을 수행한다.
  • CLASP(Comprehensive, Lightweight Application Security Process): OWASP가 제시한 방법론으로, 개발 중인 시스템에 적용하기 쉽다.
  • 역할 기반의 보안 활동을 정의하며 개념 관점, 역할 기반 관점, 활동 평가 관점, 활동 구현 관점, 취약성 관점의 5가지 관점으로 구성된다.

Seven Touchpoints

편집 원본 편집
  • 세븐 터치포인트: 게리 맥그로(Gary McGraw)가 제안한 방법론으로, 실무에서 검증된 모범 사례를 SDLC 산출물에 통합한다.
  • 7가지 활동: 코드 검토, 아키텍처 위험 분석, 침투 테스트, 위험 기반 보안 테스트, 악용 사례(Abuse Case), 보안 요구사항, 보안 운영

소프트웨어 개발보안 가이드

편집 원본 편집
  • 행정안전부와 한국인터넷진흥원이 발간한 가이드로, 공공 정보화사업의 개발보안 기준을 제시한다.
  • 설계단계 보안약점 20개(입력데이터 검증 및 표현, 보안기능, 에러처리, 세션통제)와 구현단계 보안약점 49개(2021년 가이드 기준)를 다룬다.

구현단계 보안약점 7개 유형

편집 원본 편집
유형 설명 대표 보안약점
입력데이터 검증 및 표현 입력값 검증 부재·부적절로 발생 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 오용 대신 세션통제가 있다.