[소프트웨어 개발보안 방법론] MS-SDL
마이크로소프트사는 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
소프트웨어 개발 보안 방법론을 적용하여 프로젝트를 수행 하는 경우 취약점이 대폭 감소하여 보안패치와 같은 유지보수 비용이 확연하게 감소하였다.