[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.1) Secure SDLC, 세션 통제, 입력 데이터 검증 / 표현

728x90

[정처기 필기] 5」 | 소프트웨어 개발 보안 구축 - (3.1) Secure SDLC, 세션 통제, 입력 데이터 검증 / 표현

「1」 소프트웨어 설계

「2」 소프트웨어 개발

「3」 데이터베이스 구축

「4」  프로그래밍 언어 활용

> 「5」  정보시스템 구축 관리

- 소프트웨어 개발 방법론 활용, IT프로젝트 정보 시스템 구축 관리, > 소프트웨어 개발 보안 구축, 시스템 보안 구축

 

> 1 Secure SDLC

> 2 세션 통제

> 3 입력 데이터 검증 / 표현

4 보안 기능

5 에러처리

6 코드 오류

7 캡슐화

8 암호 알고리즘

1. Secure SDLC

Secure SDLC의 개요

 

보안상 안전한 소프트웨어 개발을 위해 SDLC에 보안 강화를 위한 프로세스 포함

 

- 소프트웨어 유지 보수 단계에서 보안이슈 해결을 위해 소모되는 많은 비용을 최소화하기 위해 등장

- 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 전 단계에 걸쳐 수행되어야 할 보안활동 제시

 

CLASP

: Secure Software 사에서 개발, SDLC 초기 단계에서 보안강화를 위해 개발된 방법론

: 활동 중심, 역할 기반 프로세스로 구성, 현재 운용 중인 시스템에 적용하기 적합

 

SDL

: 마이크로소프트 사에서 기존의 SDLC를 개선한 방법론

: 전통적인 나선형 모델 기반

 

Seven Touchpoints

: 소프트웨어 보안의 모법 사례를 SDLC에 통합한 방법론

: 모든 산출물에 대해 위험 분석 / 테스트 수행

: 7개의 보안 강화 활동 수행

 

요구사항 분석 단계에서의 보안 활동

 

보안 항목에 해당하는 요구사항 식별

 

- 전산화되는 정보가 가지는 보안 수준을 보안 요소별로 등급 구분하여 분류

- 정보보호 관련 보안 정책을 참고하여 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준, 세부내용 등 문서화

 

>보안 요소<

 

소프트웨어 개발에서 충족시켜야 할 요소 / 요건을 의미

 

- 기밀성 : 인가된 사용자접근 허용, 노출되더라도 데이터 읽기 불가

- 무결성 : 인가된 사용자만 수정

- 가용성 : 인가받은 사용자는 언제든지 사용 가능

- 인증 : 합법적인 사용자인지 확인, 패스워드, 인증용 카드, 지문 검사

- 부인 방지 : 송 / 수신 사실을 부인하지 못하도록 송 / 수신 증거 제공

 

설계 단계에서의 보안 활동

 

식별된 보안 요구사항을 소프트웨어 설계서에 반영, 보안 설계서 작성

 

- 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 영향 범위, 대응책 수립

- 네트워크, 서버, 물리적 보안, 개발 프로그램환경에 대한 보안통제 기준 수립하여 설계에 반영

  : 네트워크 : 외부 사이버 공격으로 개발 환경 보호를 위해 네트워크 분리, 방화벽 설치

  : 서버 : 보안이 뛰어난 운영체제 사용, 보안 업데이트 등 외부접속에 대한 접근 통제 실시

  : 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로감시설비 설치

  : 개발 프로그램 : 허가되지 않은 프로그램 통제지속적인 데이터 무결성 검사 실시

 

구현단계에서의 보안 활동

 

표준 코딩 정의서, 소프트웨어 개발 보안 가이드 준수, 설계서에 따라 보안 요구사항 구현

 

- 지속적인 단위 테스트를 통해 보안 취약점 최소화

- 코드 점검, 소스 코드 진단 작업을 통해 소스 코드 안정성 확보

 

>시큐어 코딩(Secure Coding)<

 

보안 취약점을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것

 

- 보안 취약점을 사전에 대응하여 안정성, 신뢰성 확보

- 보안 정책을 바탕으로 시큐어 코딩 가이드 작성, 개발 참여자에게 시큐어 코딩 교육 실시

 

테스트 단계에서의 보안 활동

 

보안 설계서를 바탕으로 보안 사항들이 정확히 반영, 동작하는지 점검

 

- 동적 분석 도구, 모의 침투 테스트를 통해 식별된 위협들의 해결 여부 검증

- 식별된 위협 외에도 추가로 제시된 위협, 취약점 점검하도록 테스트 계획 수립, 시행

- 테스트 단계에서 수행한 모든 결과는 문서화하여 보존, 개발자에게 피드백

 

유지보수 단계에서의 보안 활동

 

그럼에도 발생할 수 있는 보안 사고들을 식별하고 발생 시 해결, 보안 패치 실시

2. 세션 통제

세션 통제의 개요

 

세션서버 / 클라이언트의 연결, 세션 통제세션의 연결 / 연결로 인해 발생하는 정보를 관리

 

- 요구사항 분석 / 설계 단계에서 진단하는 보안 점검 내용

- 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출

 

불충분한 세션 관리

 

일정한 규칙이 존재하는 세션 ID가 발급, 타임아웃이 너무 길게 설정된 경우 발생

 

- 침입자는 세션 하이재킹과 같은 공격으로 얻은 세션 ID로 인가되지 않은 시스템의 기능을 이용, 중요한 정보에 접근

 

>세션 하이재킹(Session Hijacking)<

 

서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채가는 공격 기법, == 세션 가로채기

 

- 정상적인 연결을 RST(Reset) 패킷을 통해 종료시킨 후 재연결 시 공격자에게 연결

- 시퀀스 번호를 이용하여 시스템 기능 이용, 중요한 정보에 접근

- 탐지 방법에는 비동기화 상태 탐지, ACK Strom(패킷양 비정상적인지) 탐지, 패킷의 유실 탐지, 예상치 못한 접속의 리셋 탐지

 

잘못된 세션에 의한 정보 노출

 

다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생

 

- 싱글톤 패턴에서 발생하는 레이스컨디션(두 개 이상 프로세스가 경쟁)으로 인해 동기화 오류 발생, 멤버 변수 정보 노출

- 멤버 변수보다 지역 변수 활용하여 변수의 범위 제한하여 방지

 

세션 설계 시 고려사항

 

- 시스템의 모든 페이지에서 로그아웃 가능하도록 UI 구성

- 로그아웃 요청 시 할당된 세션이 완전히 제거

- 세션 타임아웃은 중요도 높으면 2 ~ 5분, 낮으면 15 ~ 30분으로 설정

- 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계

- 중복 로그인 허용하지 않는 경우, 클라이언트의 중복 접근에 대한 세션 관리 정책을 수립

- 패스워드 변경 시 활성화된 세션 삭제 후 재할당

 

세션 ID 관리 방법

 

- 안전한 서버에서 최소 128비트의 길이로 생성

- 예측 불가능하도록 난수 알고리즘 적용

- 노출되지 않도록 URL Rewrite(URL에 세션 ID 포함)기능을 사용하지 않도록 설계

- 로그인 시 로그인 전 세션ID 삭제 후 재할당

- 장기간 접속하는 세션 ID는 주기적으로 재할당

3. 입력 데이터 검증 / 표현

입력 데이터 검증 / 표현의 개요

 

입력 데이터로 인해 발생하는 문제를 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목

 

- 유효성 검증 체계, 검증되지 않은 데이터 입력 시 처리하도록 구현

- 입력 데이터를 처리하는 객체의 자료형이 올바른지 확인, 일관된 언어 셋 사용하도록 코딩

 

입력 데이터 검증 / 표현의 보안 약점

 

SQL 삽입(SQL Injection)

: SQL 삽입하여 내부 데이터베이스 서버의 데이터를 유출 / 변조, 관리자 인증을 우회

: 사용자 입력값을 받아 SQL문으로 테스트를 요청하는 경우 발생 가능

: 동적 쿼리에 사용되는 입력 데이터에 예약어 / 특수문자가 입력되지 않게 필터링되도록 설정하여 방지

 

경로 조작 / 자원 삽입

: 데이터 입출력 경로를 조작하여 서버 자원을 수정 / 삭제

: 사용자 입력값식별자로 사용하는 경우 발생 가능

: 경로 순회 공격을 막는 필터 사용하여 방지

 

크로스사이트 스크립팅(XSS; Cross Site Scripting)

: 웹페이지에 악의적인 스크립트 삽입하여 방문자의 정보 탈취, 비정상적 기능 수행 유발

: 검증되지 않은 외부 입력값 사용으로 브라우저가 악의적 코드를 실행

: HTML 태그 사용을 제한, 스크립트에 삽입되지 않도록 < > & 등 문자다른 문자로 치환하여 방지

 

운영체제 명령어 삽입

: 외부 입력값을 통해 시스템 명령어의 실행 유도하여 권한 탈취, 시스템 장애 유발

: 웹 인터페이스를 통한 시스템 명령어의 전달을 막고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않게 하여 방지

 

위험한 형식 파일 업로드

: 악의적인 명령어가 포함된 스크립트 파일을 업로드하여 시스템에 손상, 시스템 제어

: 업로드되는 파일의 확장자 제한, 파일명 암호화, 웹 사이트와 파일 서버의 경로 분리, 실행 속성 제거하는 방법으로 방지

 

신뢰되지 않는 URL 주소로 자동접속 연결

: 입력값으로 사이트 주소를 받는 경우 조작하여 방문자를 피싱 사이트로 유도

: 연결되는 외부 사이트의 주소화이트 리스트로 관리하여 방지

 

메모리 버퍼 오버플로

: 프로그램의 오작동 유발, 악의적인 코드 실행시켜 공격자가 프로그램 통제하는 권한 획득

: 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료 읽거나 쓰려고 하는 경우

: 메모리 버퍼를 사용할 경우 적절한 버퍼 크기 설정, 설정된 범위의 메모리 내에서 올바르게 읽거나 쓰도록 하여 방지

 

 

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90