마이크로소프트사는 SDL(Secure Develop Lifecycle) 통한 소프트웨어 개발 프로세스를 개선함으로써 시스템 취약점을 획기적으로 줄일 수 있었음




Pre-SDL 단계


소프트웨어 개발팀의 구성원들이 보안의 기초와 최신 보안 동향에 대한 정보를 매년 1회 교육을 받을 수 있도록 한다.  보안 교육은  다음 내용을 포함한다.

   - 시큐어 설계

   - 위협모델링

   - 시큐어 코딩

   - 보안 테스팅

   - 프라이버시


요구사항 단계


신뢰성 있는 소프트웨어를 구축하기 위한 기본 보안 요구사항과 프라이버시 요구사항을 정의한다.  필수항목으로는

   - SDL 방법론 적용 여부 결정

   - 보안책임자(Security Advisor) 선정

   - 보안 팀(Security Champion) 선정

   - 버그 리포팅 도구 정의

   - 보안 버그 경계 (security bug bar) 정의

   - 보안 위험 평가

   - 보안 계획서 작성

   - 버그 추적 시스템 정의  


설계 단계


구현에서부터 배포에 이르는 동안 수행해야 하는 작업 계획을 수립하는 단계이다.

 

   - 보안 설계 검토

   - 방화벽 정책 준수

   - 위협 모델링

   - 위협 모델 품질 보증

   - 위협모델 검토 및 승인

   - “보안 설계서” 문서 작성

   - 보안 디폴트 인스톨 실행

   - 모든 샘플소스코드의 보안검토 수행,

   - 안전하지 않은 함수와 코딩 패턴 알림

   - 설계변화요구에 관한 보안관련 사항 문서화

   - 위협모델을 통해 찾아진 취약성을 위한 작업 목록 작성


공격표면(attack surface) 계획수립 :  공격표면이라는 개념적으로 정보 및 금융자산, 지적 재산, 또는 비즈니스 수행 역량에 존재하는 잠재적 공격 지점을 확인하는 과정을 의미한다. 위협 모델링에서 공격 표면 관리는 일종의 네트워크, 애플리케이션, 시스템등 공격자들이 데이터나 정보를 수집하는 지점을 확인하고 공격을 예방하는 것



구현 단계


보안 및 프라이버시 문제점을 발견하고 제거하기 위해 개발 best practice를 수립하고 따르도록 한다.

   - 최신버전의 빌드 도구 사용

   - 금지된 API 사용 회피

   - ‘Execute' 허가를 통한 SQL 안전하게 사용

   - 저장된 프로시저에서 SQL 사용

   - 안전하게 소프트웨어를 사용하기 위해 필요한 사용자 정보 식별

   - 사용자 중심의 보안 문서 계획

   - 보안 형상관리에 관한 정보 생성

   - 자동화된 금지 API 변환 실행

   - 프로젝트 팀 전체와 모든 모범사례와 정책에 대해 정의, 문서화, 토론등



검증 단계


코드가 이전 단계에서 설정한 보안과 프라이버시를 지키는지  보안 및 프라이버시 테스팅과 보안 푸쉬(security push), 문서 리뷰를 통해 확인한다. 보안 푸쉬는 팀 전체에 걸쳐 위협 모델 갱신, 코드 리뷰, 테스팅에 초점을 맞춘 작업이다.

   -  커널-모드 드라이버를 위한 테스팅 완료

   -  COM 객체 테스팅 수행

   - 인증된 사이트 크로스 도메인 스크립팅을 위한 테스팅

   - 애플리케이션 검증 테스트 수행

   - 파일 fuzzing 수행

   - 위협모델 검토 및 수정등

    - 보안 테스팅 계획 완료

    - 침투 테스팅 수행

    - 시큐어 코드 검토

    - 보안 푸쉬를 시작하기 전 모든 코드에 대한 우선순위 결정

    - 보안 문서 계획서 검토등


참고: https://www.microsoft.com/en-us/sdl/



[참고] 위협모델링


위협모델링은 자산에 피해를 줄 수 있는 위협위험도

계산하고, 위협을 완화하기 위한 대응 조치를 파악한다.

개발보안 방법론에 따라 분석단계,또는 설계단계에게 수행하도록 권장하고 있다.

요구사항정의서가 도출되고, 설계에 들어가기 중간단계에 수행하는 것이 적절하다.


1단계: 위협 모델링을 수행하기 위한 보안 팀 구성


2단계: 애플리케이션 분해 작업 수행


3단계: 위협도출

             Spooping Identity(신분위장)

             Tampering with data(데이터변조)

             Repudiation(부인)

             Information disclosure(정보유출)

             Denial of Service, Dos(서비스거부)

             Elevation of privilege(권한상승)


4단계: 도출된 위협에 대한 위험도 계산

           Damage potential(예상피해)

             Reproducibility(재현확률)

             Exploitability(공격용이도)

             Affected users(영향을 받는 사용자)

             Discoverability(발견용이성)


5단계: 대응기법선택

           문제점을 무시한다.

             문제점을 사용자에게 알린다.

             문제점을 제거한다.

             문제점을 고친다.


6단계: 대응기술 선택

           도출된 각 위협(STRIDE)을 제거하기 위해

             위협요소별 대응기술을 고려한다.

           S : 적절한인증,Keberos authenticationm, PKI시스템, 전자서명

           T : hash, ACLs, Message Authentication

           R : 전자서명, 감사로그

           I  : privacy-enhanced 프로토콜, 암호화, ACLs

           D : ACLs, 필터링, Throtting, QoS

           E : 최소권한으로 실행, group or role membership, input validation



소프트웨어 개발 보안 방법론을 적용하여 프로젝트를 수행  하는 경우 취약점이 대폭 감소하여 보안패치와 같은 유지보수 비용이 확연하게 감소하였다.



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바