현재 선택한 정보처리 과정

정보처리기사 필기 이론 학습

이론 목록으로 돌아가기

Secure SDLC·SSDF·위협 모델링

Secure SDLC가 요구·설계·구현·시험·운영에 보안을 통합하는 접근임을 이해한다. 대표 보안 개발 방법, 입력·오류·코드·캡슐화·API 약점 범주를 구분하고 SSDF와 STRIDE는 위협 분석의 보조 개념으로 연결한다.

예상 읽기 7

핵심 요약

Secure SDLC는 요구사항·설계·구현·시험·운영 등 소프트웨어 생명주기 전반에 보안을 반영하는 접근이다. 제품이 완성된 뒤 보안 도구를 한 번 실행하는 활동과는 다르다. 보안 요구를 정하고 설계·코드에 반영한 뒤 실제 통제가 동작하는지 검증해야 한다.

SSDF는 안전한 개발을 위한 고수준 실천 체계이고, 위협 모델링은 설계와 데이터 흐름에서 어떤 위협이 가능한지 찾아 대응하는 활동이다. 모두 기존 개발 방법과 함께 적용할 수 있다.

1. 생명주기별 보안 활동

단계핵심 활동확인할 질문
요구사항보호 자산·보안 목표·인증·권한·기밀성 요구 정의누구의 어떤 데이터를 보호해야 하는가?
설계위협 분석, 신뢰 경계, 접근통제·암호·오류 처리 구조 설계설계 자체에 우회·노출 경로가 없는가?
구현입력 검증, 안전한 API, 메모리·자원·예외 처리 적용설계한 통제가 코드에 반영되었는가?
시험정적·동적 분석, 보안 기능 시험, 취약점 확인비정상 입력과 허용되지 않은 접근을 막는가?
배포·운영안전한 설정, 로그·점검, 패치와 취약점 대응운영 중 드러난 문제를 수정·재검증하는가?

보안을 개발 초기에 반영하면 잘못된 구조가 굳어지기 전에 수정할 기회가 생긴다. 그러나 초기에 검토했다는 이유로 운영 중 탐지·대응을 생략해서는 안 된다. 새로운 취약점과 환경 변화는 계속 발생할 수 있다.

2. 보안 요구사항의 표현

보안 요구는 ‘안전하게 개발한다’처럼 추상적인 구호가 아니라 검증할 수 있는 조건으로 작성한다.

예를 들어 “지원자는 자신의 지원서만 조회할 수 있어야 하며, 다른 사람의 지원서에 대한 요청은 서버에서 거부해야 한다”는 주체·객체·허용 조건이 드러난다. 이 요구는 객체별 접근통제 설계와 허용·거부 시험에 연결할 수 있다.

보호 속성요구의 예
인증계정 소유자임을 확인한 뒤 보호 기능 제공
인가역할·소유권에 맞는 객체와 기능만 허용
기밀성민감정보의 저장·전송 시 적절한 보호
무결성승인되지 않은 데이터 변경 방지·검출
가용성잘못된 요청과 장애로 자원이 무제한 소진되지 않도록 제한
책임추적중요한 행위의 주체·시각·대상·결과 기록

인증 성공과 인가 성공은 별개의 판단이다. 로그인된 사용자도 다른 사람의 데이터나 관리자 기능에 접근해서는 안 될 수 있다.

3. 개발보안의 주요 점검 범주

입력 데이터 처리뿐 아니라 시간·상태, 오류, 메모리·자원, 내부 데이터 노출과 API 사용까지 함께 확인한다.

범주대표 약점·점검 대상
입력데이터 검증 및 표현SQL 삽입, XSS, 경로 조작, 부적절한 입력 처리
보안기능부적절한 인증·인가·암호 처리, 하드코딩된 비밀정보
시간 및 상태경쟁 상태, 검사와 사용 사이 상태 변경
에러처리내부 정보가 포함된 오류 메시지, 처리 누락
코드오류널 참조, 경계 오류, 해제 후 사용, 자원 누수
캡슐화내부 가변 데이터·민감정보의 노출
API 오용보안상 위험하거나 계약에 맞지 않는 API 사용

이 분류는 약점을 빠짐없이 검토하기 위한 관점이다. 특정 약점이 여러 범주와 연결될 수 있으며, 표만 갖춰 놓았다고 실제 점검이 완료되는 것은 아니다.

4. 보안 개발 접근의 구분

접근핵심 특징
Microsoft SDL개발 생명주기에 교육·보안 요구·위협 모델링·검증 등을 통합
Seven Touchpoints코드 검토·아키텍처 위험 분석·침투시험 등 핵심 보안 활동을 개발 산출물과 연결
CLASP역할과 활동을 중심으로 보안을 개발 과정에 반영하는 경량 프로세스
SQUARE보안 요구사항의 도출·분석·우선순위·명세에 초점

공통점은 보안을 최종 단계의 부가 작업으로만 취급하지 않는다는 것이다. 요구 분석에 초점을 둔 접근과 코드·설계·운영 전반의 활동을 묶는 접근의 차이를 읽는다.

SSDF의 위치

NIST SSDF 1.1은 안전한 개발을 위한 고수준 실천을 다음 네 묶음으로 설명한다.

묶음의미
PO안전한 개발을 수행할 조직·사람·기술 준비
PS소프트웨어와 관련 구성요소의 변조·무단 접근 방지
PW보안 요구를 반영한 소프트웨어 생산
RV발견된 취약점 대응과 재발 방지

이는 한 번씩 끝내는 네 개의 고정 개발 단계가 아니다. 각 개발 과정에 맞춰 반복·통합하는 실천 묶음이다. Secure SDLC의 전체 취지를 이해하는 비교 개념으로 연결한다.

좌우로 이동해 그림을 확인하세요.그림 크게 보기
PO 조직 준비, PS 소프트웨어 보호, PW 안전한 생산, RV 취약점 대응을 기존 생명주기에 반복적으로 통합한다. 네 고정 순차 단계가 아니다.
PO 조직 준비, PS 소프트웨어 보호, PW 안전한 생산, RV 취약점 대응을 기존 생명주기에 반복적으로 통합한다. 네 고정 순차 단계가 아니다.

5. 위협 모델링

위협 모델링은 무엇을 보호하는지 → 어디로 데이터가 흐르는지 → 무엇이 잘못될 수 있는지 → 어떻게 막고 확인할지를 설계 단계에서 살펴보는 활동이다.

자산은 보호할 데이터·기능·자원, 위협은 손해를 일으킬 수 있는 사건이나 행위, 취약점은 그 위협에 악용될 수 있는 약점, 위험은 발생 가능성과 영향을 함께 고려한 판단이다. 보완 통제 후에도 남는 위험을 잔여 위험이라고 한다.

데이터 흐름도에는 외부 개체·프로세스·저장소·데이터 흐름 등을 나타낸다. 신뢰 경계는 신뢰 수준이나 권한의 전제가 바뀌는 지점이다. 인터넷과 내부망의 경계뿐 아니라 사용자 입력이 서버의 권한 있는 처리로 들어오는 지점도 중요하다.

STRIDE는 위협을 떠올리는 데 사용하는 분류다.

범주의미연결되는 보호 관심사
Spoofing다른 주체로 위장인증
Tampering데이터·설정 변조무결성
Repudiation행위 사실 부인책임추적·부인방지
Information Disclosure정보 노출기밀성
Denial of Service서비스 거부가용성
Elevation of Privilege권한 상승인가

STRIDE는 위협의 분류이지 위험 점수를 계산하는 공식이 아니다. 모든 프로젝트에 동일한 위협 수와 동일한 대응을 강제하지도 않는다.

6. 분석 도구와 보안 검증

SAST(정적 분석)는 프로그램을 실행하지 않고 소스·코드 구조에서 약점을 찾고, DAST(동적 분석)는 실행되는 시스템의 반응을 살펴본다. SCA는 사용하는 외부 구성요소와 알려진 취약점 등의 정보를 확인한다.

도구마다 볼 수 있는 대상이 다르다. 정적 분석 결과가 없다고 업무 권한의 누락까지 없다고 결론 내릴 수는 없다. 위협 모델링, 코드 검토, 기능·보안 시험, 운영 점검은 상호 보완적이다.

통합 예

온라인 접수 시스템에서 ‘다른 사람의 지원서 조회’를 위협으로 식별했다고 하자. 보안 요구는 ‘본인 소유 자료만 허용’, 설계·구현은 ‘서버에서 요청자와 자료 소유자를 검사’, 시험은 ‘본인 자료는 허용하고 타인 자료는 거부’로 연결된다. 화면에서 버튼만 숨기는 방식으로는 이 요구가 충족되지 않는다.

보안 요구·위협 모델·검사 결과의 연결

범주는 위협을 빠뜨리지 않도록 돕는 분류이며 그 순서가 위험 순위나 숫자 점수를 뜻하지 않는다. 실제 우선순위는 자산·공격 가능성·영향·통제 등을 따로 검토한다. 동일 시나리오가 여러 범주와 연결될 수 있으므로 문제에서 주된 행위를 확인한다.

신뢰 경계는 인증·권한·관리 주체 등 신뢰 조건이 달라지는 곳이다. 동일 서버 내부라도 높은 권한의 프로세스로 요청이 넘어간다면 경계가 될 수 있다. 다이어그램에 네트워크 선이 있다는 이유만으로 모든 선을 같은 위험으로 취급하지 않는다.

도구 경고는 실제 입력 도달성·보호 코드·운영 조건을 대조하여 확인한다. 경고 한 건이 곧 확정된 침해 사건이라는 뜻도, 오탐 가능성이 있으니 전부 무시해도 된다는 뜻도 아니다.