소프트웨어 개발 보안 출제 경향
소프트웨어 개발 보안은 행정안전부의 시큐어 코딩 가이드라인과 연계된 문제가 자주 출제됩니다. SDLC 각 단계의 보안 활동, 입력 데이터 검증, 보안 취약점 유형을 정확히 이해해야 합니다.
【기출 토픽 1】 SDLC 보안 활동
기출 문제 예시: 소프트웨어 개발 생명주기(SDLC)에서 보안 요구사항을 정의하고 위협 모델링을 수행하는 단계는?
- ① 구현 단계
- ② 요구사항 분석 및 설계 단계 ✅
- ③ 테스트 단계
- ④ 유지보수 단계
해설: 보안은 SDLC 초기 단계부터 내재화해야 합니다(Security by Design). 요구사항/설계 단계에서 보안 요구사항 정의와 위협 모델링(STRIDE 등)을 수행하고, 구현 단계에서 시큐어 코딩, 테스트 단계에서 취약점 점검(SAST/DAST), 유지보수 단계에서 패치 관리를 수행합니다.
【기출 토픽 2】 입력 데이터 검증 및 표현
기출 문제 예시: 행정안전부 소프트웨어 개발 보안 가이드의 입력 데이터 검증 및 표현 항목에 해당하지 않는 것은?
- ① SQL 인젝션
- ② XSS(크로스사이트 스크립팅)
- ③ 운영체제 명령어 인젝션
- ④ 부적절한 인가 ✅
해설: 행정안전부 시큐어 코딩 가이드는 7개 보안 항목으로 구성됩니다. 입력 데이터 검증 및 표현에는 인젝션(SQL, OS, LDAP), XSS, 경로 조작 등이 포함됩니다. 부적절한 인가는 ‘보안 기능’ 항목에 해당합니다.
7개 보안 항목 암기: 입력 데이터 검증/보안 기능/시간 및 상태/에러처리/코드 오류/캡슐화/API 오용
【기출 토픽 3】 메모리 보안 취약점
기출 문제 예시: 이미 해제된 메모리 영역을 다시 참조하는 취약점으로, 임의 코드 실행이나 데이터 손상을 유발할 수 있는 것은?
- ① 버퍼 오버플로우
- ② Use After Free ✅
- ③ 정수 오버플로우
- ④ 형식 문자열 취약점
해설: Use After Free는 동적 메모리 해제(free/delete) 후 해당 포인터를 다시 사용하는 취약점입니다. 해제된 메모리에 공격자가 악성 데이터를 채워놓으면 임의 코드 실행이 가능합니다.
메모리 취약점 종류:
- 버퍼 오버플로우: 배열 경계 초과 쓰기
- Use After Free: 해제된 메모리 재참조
- Double Free: 같은 메모리 두 번 해제
- 정수 오버플로우: 정수 최댓값 초과로 예상치 못한 값
【기출 토픽 4】 정적/동적 분석 도구
기출 문제 예시: 소스코드를 실행하지 않고 코드 자체를 분석하여 취약점을 탐지하는 방법은?
- ① 동적 분석 (DAST)
- ② 정적 분석 (SAST) ✅
- ③ 퍼징 테스트
- ④ 침투 테스트
해설: SAST(Static Application Security Testing)는 코드 실행 없이 소스코드를 분석합니다. 개발 초기에 취약점 발견이 가능하지만 오탐이 많습니다. DAST(Dynamic)는 실행 중인 애플리케이션을 테스트하며 런타임 취약점을 탐지합니다.
소프트웨어 개발 보안 최종 정리
SDLC 각 단계의 보안 활동, 행정안전부 7개 보안 항목, 메모리 취약점 유형, SAST/DAST 차이를 중심으로 학습하세요. 실제 개발 경험과 연결 지어 이해하면 암기가 훨씬 쉬워집니다.