[정처기 필기] 「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 기본서 (길벗알앤디)
'💠기타 > 정보처리기사' 카테고리의 다른 글
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.3) 캡슐화, 암호 알고리즘 (1) | 2024.02.25 |
---|---|
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.2) 보안 기능, 에러처리, 코드 오류 (1) | 2024.02.24 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.5) 회복 / 병행제어, 교착상태 (0) | 2024.02.24 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.4) Secure OS, DB 관련 신기술 (0) | 2024.02.23 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.3) SW, 보안, HW 관련 신기술 (1) | 2024.02.23 |