본문 바로가기

2021 정보처리기사/5과목: 정보시스템 구축 관리

[정보처리기사 5과목] 소프트웨어 개발 보안 구축(1)

728x90
반응형
[정보처리기사 5과목 필기 예상 키워드] 목록으로 돌아가기
과목: 5. 정보시스템 구축 관리
챕터: 3장 소프트웨어 개발 보안 구축
키워드: 소프트웨어 개발 방법론
 보안요소 / 시큐어코딩 / 세션 / 레이스컨디션
SQL 사입 / 널포인터 / API / 개인키 암호화 기법
공개키 암호화 기법 / 해시

 

 

Secure SDLC

개요

✔ SDLC(Software Development Life Cycle)에 보안 강화를 위한 프로세스를 포함한 것을 의미

✔ 유지보수 단계의 보안 이슈를 해결하기 위한 비용을 최소화 하기 위하여 등장

✔ SDLC의 대표적 방법론

CLASP - Secure Software 사에서 개발, SDLC 초기 단계에서 보안 강화를 위해 개발된 방법론
- 활동 중심, 역할 기반의 프로세스, 현재 운용중인 시스템에 적용하기 적합
SDL - 마이크로소프트 사에서 개발, 전통적인 나선형 모델을 기반으로 함
Seven Touchpoints - 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
- 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트 수행

 

 

보안요소

보안 3대 요소

✔ 기밀성(Confidentiality): 오직 인가된 사용자에게만 접근 가능

✔ 무결성(Integrity): 오직 인가된 사용자만 수정 가능

✔ 가용성(Availability): 인가받은 사용자는 언제라도 사용 가능

 

+ 인증(Authentication): 패스워드, 인증용 카드, 지문 검사 등

+ 부인방지(NonRepudiation): 데이터를 송/수신 한 자가 송/수신 사실을 부인할 수 없도록 증거 제공

 

 

 

 

보안활동- 설계단계

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

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

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

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

 

 

 

 

 

 

보안활동- 구현단계

✔ 표준 코딩 정의서 준수 : 코딩 시 다른 개발자나 운영자가 쉽게 접근할 수 있도록 클래스, 메소드 등의 네이밍 규칙 등을 정의한 문서

✔ 소프트웨어 개발 보안 가이드 준수: 안전한 소프트웨어 개발을 위해 정부에서 제작하여 배포하고 있는 지침

✔ 지속적인 단위 테스트: 프로그램 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행했는지 검사

✔ 코드 점검 및 소스코드 진단 작업: 소스코드의 안정성 확보

✔ 시큐어 코딩(Secure Coding): 보안 취약점을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것

 

 

 

 

 

 

보안활동- 테스트단계

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

✔ 동적 분석도구 활용: 프로그램을 실제 또는 가상으로 실행시킨 상황에서 메모리 분석, 보안 취약점 검색, 오류 탐지 프로그램

✔ 모의 침투테스트: 설계 단계에서 식별된 위협들의 해결 여부 검증

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

 

 

 

 

 

 

보안활동- 유지보수단계

✔ 이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고를 식별, 보안 패치 실시

 

 

 

 

 

세션 통제

개요

✔ 세션은 서버와 클라이언트의 연결을 의미하고, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보 관리를 의미

✔ 연결만 관리할 뿐 접근 권한을 통제하진 않는다

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

✔ 세션 통제의 보안 약점: 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출

 

 

 

불충분한 세션 관리

✔ 일정한 규칙이 존재하는 세션 ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안 약점

✔ 세션 하이재킹 공격 가능: 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격 기법(세션 가로채기)

✔ 위 공격을 통해 획득한 세션ID로 인가되지 않은 시스템 기능을 이용하거나 중요한 정보에 접근할 수 있음

 

 

 

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

✔ 다중 스레드(Multi-Thread) 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

✔ 싱글톤 패턴에서 발생하는 레이스 컨디션으로 인해 동기화 오류가 발생하거나 멤버 변수의 정보가 노출될 수 있음

✔ 멤버 변수(클래스, 인스턴스)보다 지역 변수를 활용하여 변수 범위를 제한함으로써 방지할 수 있음

 

✔ 싱글톤 패턴: 하나의 객체를 생성하면 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할수 없음

✔ 레이스 컨디션(Race Condition): 두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태

 

 

 

 

세션 설계시 고려사항

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

✔ 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함

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

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

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

✔ 패스워드 변경 시 활성화된 세션을 삭제하고 재할당

 

 

 

 

 

보안 기능

개요

✔ 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들

✔ 각 보안 기능들은 서비스 환경이나 취급 데이터에 맞게 처리될 수 있도록 구현해야 됨

✔ 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고 차별화된 인증 방안 적용

✔ 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의 접근을 차단함

✔ 개인정보나 인증정보와 같은 중요한 정보의 변조/삭제/오남용 등을 방지하기 위해 안전한 암호화 기술 적용

 

 

 

보안 기능의 약점

✔ 적절한 인증 없이 중요기능 허용: 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하여 방지

✔ 부적절한 인가: 모든 실행 경로에 대해 접근 제어 검사 수행, 반드시 필요한 접근 권한만을 부여하여 방지

✔ 중요한 자원에 대한 잘못된 권한 설정: 소프트웨어 관리자만 자원 읽고 쓰기 설정

✔ 취약한 암호화 알고리즘 사용: IT 보안인증사무국이 안정성을 확인한 암호모듈을 이용함으로써 방지

✔ 중요정보 평문 저장 및 전송: 중요한 정보 저장/전송시 반드시 암호화 과정을 거치고 HTTPS, SSL 보안 채널 이용으로 방지

✔ 하드코드된 비밀번호: 패스워드는 암호화하여 별도 파일의 저장하고 디폴트 패스워드나 디폴트 키의 사용을 피함으로 방지

 

*** 하드코드: 데이터를 코드 내부에 직접 입력하여 프로그래밍 하는 방식

*** HTTPS: 웹브라우저와 서버 간의 안전한 통신을 위해 HTTP와 암호통신규약을 결합한 것

*** SSL: 데이터를 송/수신하는 두 컴퓨터 사이에 위치하여 인증, 암호화, 무결성을 보장하는 업계 표준 프로토콜

 

 

 


 

정보처리기사 5과목 필기(상시업뎃)

2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이 

y-oni.tistory.com

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90