Secure SDLC (소프트웨어 개발 보안)
Secure SDLC 의미
- SW 개발 과정에서 발생 할 수 있는 보안 취약점 최소화해, 보안 요구사항인 기밀성, 무결성, 가용성 유지하는 일련 활동
- SW 생명 주기 각 단계별로 요구되는 보안활동 모두 포함
Secure SDLC 단계별 보안 활동
요구사항 분석 | - 요구사항 중 보안항목 식별 - 요구사항명세서 |
설계 | - 보안설계 검토, 보안설계서 작성 - 보안 통제 수립 |
구현 | - 표준코딩정의서, SW 개발 보안 가이드 준수해 개발 - 소스코드 보안 약점 진단, 개선 |
테스트 | 모의침투 테스트 또는 동적 분석 통한 보안 취약점 진단 및 개선 |
유지보수 | - 지속적 개선 - 보안 패치 |
보안 설계 항목
- 관리적 보안 : 보안정책, 표준, 지침, 절차, 인적 보안, 교육, 훈련 등
- 기술적 보안 : 접근제어, 방화벽, 암호화 등
- 물리적 보안 : 시설 보안, 운영 보안
보안 취약점
1) 입력 데이터 검증 및 표현
프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터 잘못된 형식 지정으로 인해 발생할 수 있는 보안 약점
SQL 삽입 | 웹 응용 프로그램에 SQL 삽입해 내부 데이터베이스 서버 데이터를 유출 및 변조하고 관리자 인증 우회하는 보안 약점 |
크로스 사이트 스크립팅 (XSS) | 웹페이지에 악의적 스크립트 삽입해 방문자들 정보 탈취하거나, 비정상적인 기능 수행 유발 |
메모리 버퍼 오버플로 | - 연속된 메모리 공간 사용하는 프로그램에서 할당된 메모리 범위 넘어선 위치에서 자료 읽고 쓰려고 할 때 발생하는 보안 약점 - 프로그램 오동작 유발시키거나 악의적 코드 실행시켜 공격자가 프로그램 통제할 수 있는 권한 획득하게 함 |
SQL injection
- 클라이언트 입력값 조작해 서버 데이터베이스를 공격할 수 있는 공격 기술
- 웹응용 프로그램에 SQL 삽입해 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증 우회하는 공격 기법
SELECT user FROM user_table
WHERE id = 'admin' AND password = '' OR '1' = '1';
XSS (cross site script)
- 웹에 악성 스크립스 삽입할 수 있는 공격 기술
- 게시판에 악성 스크립트 담긴 글 올리는 형태
2) 보안 기능
보안기능 (인증, 접근제어, 기밀성, 암호화, 권한 관리 등) 적절하지 않게 구현 시 발생할 수 있는 보안 약점
부적절한 인증 | 보안검사 우회해 인증과정 없이 중요 정보 또는 기능에 접근, 변경 가능 |
부적절한 인가 | 접근제어 기능 없는 실행경로 통해 정보, 권한 탈취 가능 |
잘못된 권한 설정 | 권한 설정이 잘못된 지원에 접근해 해당 자원 임의 사용 가능 |
취약한 암호화 알고리즘 설정 | 암호화된 환경설정 파일 해독해 비밀번호 등 중요 정보 탈취 |
하드코드된 비밀번호 | - 소스코드 유출 시 내부에 하드코드된 패스워드 이용해 관리자 권한 탈취 - 패스워드는 암호화해 별도 파일에 저장하고, 디폴트 패스워드나 키 사용 피함으로써 방지 |
3) 시간 및 상태
동시 또는 거의 동시 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리해 발생할 수 있는 보안 약점
경쟁 조건 | - 검사 시점 (Time of Check)과 사용 시점 (Time of Use) 고려하지 않고 코딩하는 경우 발생 - 프로세스 정보와 실제 자원 상태 일치하지 않는 경우로 동기화, 교착상태 등 문제 발생 가능 |
종료되지 않는 반복 문제 또는 재귀함수 | - 반복문이나 재귀함수에서 종료 조건 정의하지 않았거나 논리구조상 종료될 수 없는 경우 발생 - 반복문이나 재귀함수가 종료되지 않을 경우 시스템 자원이 끊임 없이 사용되어 자원 고갈로 인한 서비스 장애, 시스템 장애 발생 |
4) 에러 처리
에러 처리하지 않거나, 불충분하게 처리해 에러 정보에 중요정보 (시스템 등)가 포함될 때 발생할 수 있는 보안 약점
오류 메시지 통한 정보 노출 | 오류 발생으로 인한 실행 환경, 사용자 정보, 디버깅 정보 등 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점 |
오류 상황 대응 부재 | 소프트웨어 개발 중 예외 처리 하지 않았거나 미비로 발생하는 보안 약점 |
부적절한 예외 처리 | 함수 반환값 또는 오류들 세분화해 처리하지 않고 광범위하게 묶어 한 번에 처리하거나, 누락된 예외 존재할 때 발생 |
5) 코드 오류
타입 변환 오류, 자원 (메모리 등) 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점
널 포인터 (Null Pointer) 역참조 | 널 포인터가 가리키는 메모리에 어떠한 값 저장할 때 발생 |
부적절한 자원 해제 | 자원 반환하는 코드 누락하거나 프로그램 오류로 할당된 자원 반환하지 못했을 때 발생 |
해제된 자원 사용 | 이미 사용 종료되어 반환된 메모리 참조하는 경우 발생 |
초기화되지 않은 변수 사용 | 변수 선언 후 값이 부여되지 않은 변수 사용할 때 발생 |
6) 캡슐화
중요한 데이터 또는 기능성 불충분하게 캡슐화해 (정보은닉 실패) 비인가자에게 데이터 유출 가능해지는 보안 약점
잘못된 세션에 의한 정보 노출 | 다중 스레드 (Multi-Thread) 환경에서 멤버 변수에 정보 저장할 때 발생하는 약점 |
제거되지 않고 남은 디버그 코드 | 개발 중 버그 수정이나 결과값 확인 위해 남겨둔 코드들로 인해 발생하는 약점 |
시스템 데이터 정보 노출 | 시스템 내부 정보를 시스템 메시지 등 통해 외부로 출력하도록 코딩했을 때 발생하는 약점 |
Public 메소드로부터 반환된 Private 배열 | 선언된 클래스 내에서만 접근 가능한 Private 배열을 모든 클래스에서 접근 가능한 Public 메소드에서 반환할 때 발생 |
Private 배열에 Public 데이터 할당 | Private 배열에 Public으로 선언된 데이터 또는 메소드 파라미터를 저장할 때 발생 |
접근 제어자
프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터 접근 제한하기 위해 사용되는 예약어
(접근 가능 : O / 불가능 : X)
한정자 | 클래스 내부 | 패키지 내부 | 하위 클래스 | 패키지 외부 |
Public | O | O | O | O |
Protected | O | O | O | X |
Default | O | O | X | X |
Private | O | X | X | X |
7) API 오용
의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API 사용해 발생할 수 있는 보안 약점
DNS Lookup에 의존한 보안 결정 | 도메인명에 의존해 인증이나 접근 통제 등 보안 결정 내리는 경우 발생하는 보안 약점 |
취약한 API 사용 | 사용 금지된 API 사용하거나, 잘못된 방식으로 API 사용했을 때 발생하는 보안 약점 |
API (Application Programming Interface)
응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리 이용할 수 있도록 규칙 등을 정의해 놓은
인터페이스
Secure SDLC 방법론
CLASP | - SDLC 초기 단계에서 보안 강화 위해 개발된 방법론 - 활동 중심, 역할 기반 프로세스로 구성되어 있으며, 현재 운용 중인 시스템에 적용하기에 적합 |
SDL | - 마이크로소프트 사에서 안전한 소프트웨어 개발 위해 기존 SDLC 개선한 방법론 - 전통적인 나선형 모델 기반 |
Seven Touchpoints | - 소프트웨어 보안의 모범례를 SDLC에 통합한 방법론 - 설계 및 개발 과정의 모든 산출물에 대해 위험분석 및 테스트 수행 - SDLC 각 단계에 관련된 7개 보안 강화 활동 수행 |
'Study > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 프로그래밍 언어 활용 _ 데이터 타입, 연산자 (0) | 2025.03.19 |
---|---|
[정보처리기사 실기] 소프트웨어 개발 보안 구축 _ 소프트웨어 개발 보안 구현 (0) | 2025.03.17 |
[정보처리기사 실기] 소프트웨어 개발 보안 구축 _ 보안 요소 및 보안 공격 (1) | 2025.03.13 |
[정보처리기사 실기] SQL 응용 _ 응용 및 절차형 SQL (0) | 2025.03.12 |
[정보처리기사 실기] SQL 응용 _ 기본 SQL (0) | 2025.03.11 |