Replicated

소프트웨어 개발 보안 방법론, MS-SDL 본문

스마트카 소프트웨어 보안

소프트웨어 개발 보안 방법론, MS-SDL

라구넹 2025. 4. 12. 21:33

일부 조직: 보안 테스트를 개발 프로세스가 끝나는 시점에 추가

- 예산과 일정을 계획하기 쉬움

- 결과가 명확

- 개발 프로세스를 변경하거나 업무와 책임을 보고할 때 체계에 따라 분리하지 않아도 됨

 

근데 이게 더 ROI가 낮음

 

보안 사고는 비용이 많이 들고 예측 불가, 어떠한 응용 프로그램도 공격 대상이 될 수 있음

직접 비용

- 손상된 시스템 분석

- 악용된 취약점 처리

- 손상된 시스템 재구축

- 고객과의 소통

간접 비용

- 브랜드 가치 하락

- 고객 신뢰 상실

- 고객 이탈

 

대충 30배 이상의 비용이 듦

 

SW 개발 보안이란?

안전한 SW 개발을 위해 소스코드 등에 존재할 수 있는 잠재적인 보안 약점을 제거, 보안을 고려하여 기능을 설계 및 구현하는 등 SW 개발 과정에서 실행되는 일련의 보안 활동

 

요구사항 분석

- 요구사항 중 보안항목 요구사항 식별

 

설계

- 보안 요구사항과 위협에 대한 보안 통제를 고려하여 위협원 도출

- 외부 인터페이스 식별

- 보안 통제 수립

 

구현

- 표준 코딩 정의서 및 SW 개발 보안 가이드를 준수하여 개발

- 소스코드 보안 약점 진단(도구)

 

테스트

- 실행코드 보안 취약점 진단(동적분석: 스캐닝, 모의 침투 테스트 등)

 


 

Microsoft SDL(Security Development Lifecycle)

- 마소에서 자체적으로 개발한 개발 생명주기를 제품 개발 전 과정에 적용, 보안 취약점의 원인을 제거

1. 교육

2. 계획/분석

3. 설계 

4. 구현

5. 시험/검증

6. 배포/운영

7. 대응

 

교육 단계(Pre-SDL)

- 개발팀 구성원들이 보안의 기초와 최신 보안 동향에 대한 정보를 매년 1회 교육을 받을 수 있도록 함

- 시큐어 설계, 위협 모델링, 시큐어 코딩, 보안 테스팅, 프라이버시

 

계획/분석 단계(요구사항 단계)

- 보안 전문가가 프로젝트 계획을 검토, 보안팀이 프로젝트를 수행하는 제품팀의 일정을 지원하기 위한 적절한 계획을 수립

- 주요 보안 목표를 결정

- 보안책임자 선정, 보안팀 선정, 버그 리포팅 도구 정의, 보그 추적 시스템 정의

 

설계 단계

- 구현~배포에 이르는 동안 수행해야 할 작업 계획을 수립

- 보안 구조 및 설계 지침 정의

- 소프트웨어 공격 외형 요소 기록

- 위협 모델링 (DFD, STRIDE, DREAD)

 

구현 단계

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

- 개발팀은 소프트웨어를 코드화하고 테스트, 통합. 정적 분석 도구를 사용해서 보안 결함 및 약점을 검출해 제거하거나 예방 조치. 결함과 약점이 최종 버전의 소프트웨어에 잔류하지 않도록 조치.

- 시큐어 코딩, 최신 버전의 빌드 도구 사용, 금지된 API 사용 회피, 실행 허가를 통한 SQL 안전 사용

 

시험/검증 단계

- 기능적으로 완성된 소프트웨어에 대한 베타 테스트 수행

- 보안 요구사항 확인 및 취약점 검출을 통한 동적/퍼징 테스트, 침입 테스트 등

- 외부 전문 업체를 통한 보안 점검 및 침입 테스트

 

배포/운영 단계

- 중앙 보안팀의 최종 점검

- 유사 소프트웨어 새로운 취약점 대응 가능한지 확인

- 사고 대응 계획 수립

 

대응 단계

- 배포 이후 새로운 취약점에 대처하는 대응 프로세스 수립