소프트웨어의 Threat의 분류
개발과정 중의 어떤 위협이 있을까?
내부 위협, 소프트웨어 엔지니어의위협, 개발 과정에서의 문제점
운영중의 위협으로는 내부 위협과 외부 위협, 공격자에게 노출된 취약성, 취약점 및 개발 오류를 공격하는 것 등이 있다.
소프트웨어 보안 위협의 근원
- 소프트웨어 처리 모델의 복잡성, 부적절성 및 변경
예시로 웹이나 서비스 지향 아키텍처 모델이 복잡하거나 변경되면 위협이 됨
- 엔지니어의 잘못된 가정
소프트웨어가 ~~가 실행될것이라는 가정하게 엔지니어가 설계하고 구현하지만 사용자는 그대로 사용하지 않음
- 결함이 있는 사양 또는 설계 or 구현
입력 값의 검증이 미흡하거나 오류처리나 예외처리에서 문제가 있을때, SW 실행 환경 구성 요소에 문제가 있을때
- 소프트웨어 구성 요소 간 의도하지 않은 상호 작용
내부 개발 모듈외 외부 모듈의 충돌 등등
출시 전에 어느정도의 결함을 제거할까?

한 95퍼센트까지는 결함을 줄이면 개발시간이 줄어들게됨. 근데 어떤 임계치를 넘으면 결함을 더 줄이려고 할 수록 개발의 시간이 많이 든다. 이 적절한 시점을 찾아야함!!
개발 단계에서 결함 제거 비용
개발 단계에서 초기 단계의 부분을 나중에 가서 수정할수록 비용은 높아진다(처음부터 꼼꼼히.. 문서화를 잘 해둬야함)
위험 관리 프레임 워크(RMF)
소프트웨어 보안을 위한 Risk Management Framework
- 1단계: 비즈니스 환경을 이해 (Understand the Business Context)
- 2단계: 비즈니스 및 기술적 위험을 식별하고 연결 (Identify and Link the Business and Technical Risks)
- 3단계: 위험을 종합하고 우선순위를 매김 (Synthesize and Rank the Risks)
- 4단계: 위험 완화 전략을 정의 (Define the Risk Mitigation Strategy)
- 5단계: 수정 사항을 수행하고 검증 (Carry Out Fixes and Validate) -> 2단계로 돌고돌아....
Secure SW를 만드는 절차
개발 프로세스는 요구사항, 설계, 구현, 시험/보증 으로 구성됨.
개발 단계는 전체 프로젝트, 개별 컴포넌트, 상세화 및 반복 동안 적용된다.(모든 단계에서 security engineering)
소프트웨어 프로세스 모델
- 폭포수 모델
- 전통적인 소프트웨어 개발 모델로, 단계별로 순차적으로 진행
- 요구사항 분석 → 설계 → 구현 → 테스트 → 배포 → 유지보수의 단계로 구성
- 이전 단계가 완료되어야 다음 단계로 진행 가능하며, 변경이 어려움
- 장점: 명확한 문서화, 체계적인 개발 가능
- 단점: 유연성이 부족하고, 요구사항 변경이 어려움
- 점진적 개발
- 전체 시스템을 한 번에 개발하는 것이 아니라, 작은 단위(증분)로 나누어 점진적으로 개발
- 각 증분은 독립적으로 개발, 테스트, 배포되며 최종적으로 통합됨
- 장점: 요구사항 변경에 유연하고, 빠르게 사용자의 피드백을 반영 가능
- 단점: 초기 설계가 중요하며, 여러 증분의 통합이 복잡할 수 있음
- 통합과 설정
- 기존의 상용 소프트웨어(COTS)나 오픈소스 소프트웨어를 조합하여 시스템을 구축하는 방법
- 새로운 기능을 직접 개발하기보다, 기존 소프트웨어를 통합하고 설정(Configuration)하여 원하는 시스템을 구축함
- 장점: 개발 기간과 비용 절감, 검증된 소프트웨어 활용 가능
- 단점: 맞춤형 개발이 어렵고, 타 시스템과의 호환성이 문제될 수 있음
CI/CD
: ontinuous Integration (지속적 통합)과 Continuous Deployment/Delivery (지속적 배포/전달)의 약자로, 소프트웨어 개발과 배포 과정을 자동화하는 방법론
- 지속적인 통합(CI; Continuous Integration): 개발 코드가 자주 병합되도록 유도, 호환성 문제 최소화하기 위해서
- 지속적 제공(CD; Continuous Delivery): 성공적으로 테스트된 애플리케이션 배포 준비 상태 유지
- 지속적 배포(CD; Continuous Deployment): 승인된 변경 사항을 자동으로 운영 환경에 배포
DevOps vs. DevSecOps
데브옵스: 어느정도 해서 배포하고 운영하면서 품질 향상하는거
개념 | 개발(Development)과 운영(Operations)의 통합 | DevOps에 보안을(Security) 추가한 개념 |
목표 | 개발과 운영 간 협업을 강화하여 소프트웨어 배포 속도와 품질 향상 | 개발·운영 속도를 유지하면서 보안 위협을 최소화 |
주요 원칙 | 자동화, 지속적 통합(CI), 지속적 배포(CD), 협업 | DevOps 원칙 + 보안 자동화, 코드 보안 점검, 취약점 분석 |
보안 접근 방식 | 주로 최종 단계에서 보안 점검 | 개발 초기부터 ‘Shift Left’ 방식으로 보안 통합 |
도구 예시 | Jenkins, Docker, Kubernetes, Ansible, Terraform 등 | SonarQube, Snyk, OWASP ZAP, Aqua Security 등 |
V-Model (Verification and Validation Model)
V-Model은 소프트웨어 개발 생명 주기(SDLC)에서 가장 널리 사용되는 테스트 모델 중 하나
개발 단계와 테스트 단계를 병렬적으로 진행
Waterfall(폭포수..) 모델의 확장형이라고도 불리며, 각 개발 단계마다 대응되는 테스트 단계가 존재하는 구조를 가진다.
V모양이라 V모델임.

- 개발과 테스트가 동시에 진행되는 구조
- 개발 단계가 진행됨에 따라, 각 단계에 맞는 테스트 계획이 수립됨
- 소프트웨어의 결함을 조기에 발견하고 수정할 수 있음
장점
조기 결함 발견: 각 개발 단계마다 테스트 계획을 세우므로, 결함을 조기에 발견할 수 있다
체계적인 개발: 각 개발 단계와 테스트 단계가 명확하게 정의됨
문서 기반 개발: 요구사항부터 테스트 계획까지 문서화가 잘 이루어짐
단계별 진행 가능: 개발 단계가 완료될 때마다 테스트를 진행하여 안정성을 확보
단점
유연성이 부족함: 개발 단계가 끝나면 변경이 어려워 애자일(Agile) 방식과는 맞지 않음
병렬 개발이 어려움: 단계별 진행 방식이라 여러 작업을 동시에 수행하기 어려움
프로토타이핑 어려움: 초기 단계에서 시스템을 시각화하거나 프로토타입을 만들기 어렵다
V-Model이 적합한 경우
- 요구사항이 명확하고 변경 가능성이 낮은 프로젝트
- 안정성이 중요한 시스템 (예: 의료, 항공, 금융 분야)
- 문서 기반 개발이 필요한 경우 (예: 정부 프로젝트, 대형 소프트웨어 개발)
보안 SW 개발 접근 방법
하면 안되는 짓: 일단 그냥 보안무시하고 개발한담에 나중에 보안 추가
해야되는 짓: 처음부터 고려해서 개발하기~
SDLC (Software Development Life Cycle)
소프트웨어 개발 생명주기(SDLC)는 소프트웨어를 기획, 개발, 배포 및 유지보수하는 전체 과정을 의미
- 요구사항 (Requirement): 고객 및 이해관계자의 요구사항을 수집하고 분석
- 설계 (Design): 시스템 및 소프트웨어 아키텍처 설계
- 개발 (Development): 실제 소프트웨어 개발
- 테스트 (Testing): 기능 및 성능 테스트 수행
- 배포 (Deployment): 운영 환경에 소프트웨어 배포
SSDLC (Secure Software Development Life Cycle)
보안이 강화된 소프트웨어 개발 생명주기(SSDLC)는 SDLC에 보안 요소를 추가한 개념
개발 초기부터 보안을 고려하여 보안 취약점을 줄이고, 안전한 소프트웨어를 개발하는 것이 목표
SDLC의 각 단계에 보안 활동을 추가하여 운영
- 보안 요구사항 정의: 기능적 요구사항 외에 보안 요구사항을 정의 (예: 암호화, 접근 제어)
- 보안 설계: 보안 아키텍처 및 위협 모델링 수행
- 보안 코딩: 안전한 코딩 기법 적용 (예: 입력 검증, SQL 인젝션 방지)
- 보안 테스트: 정적 분석, 동적 분석, 침투 테스트 등을 활용한 보안 취약점 점검
- 보안 배포 및 운영: 보안 패치 적용, 모니터링 시스템 운영
즉, SSDLC는 SDLC에 보안(Security)을 추가하여 개발 초기에 보안을 고려하는 방법론
'공부해요 > 소프트웨어보안' 카테고리의 다른 글
위협 모델링 (1) | 2025.03.23 |
---|---|
2주차 퀴즈 (0) | 2025.03.17 |
보안 SW 요구사항 (0) | 2025.03.17 |
SW 보안 개요 퀴즈 (0) | 2025.03.08 |
SW 보안 개요 (0) | 2025.03.08 |