정보처리기사/[inflearn] 필기 (완)

정보처리기사 - 제5과목 정보시스템 구축 관리 / 소프트웨어 개발 보안 구축

web_seul 2022. 4. 20. 10:55
반응형

 제5과목 정보시스템 구축관리 

▷ 소프트웨어 개발 보안 구축 A

> Secure SDLC ( SDLC : SW 개발 생명주기 )

- Secure SDLC의 개요 : 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것

- 요구사항 분석 단계에서의 보안 활동 : 보안항목에 해당하는 요구사항을 식별하는 작업 수행, 요소별 등급구분

- 보안 요소 : 기밀성(비밀), 무결성(정확성, 허가된 사용자만 수정 가능), 가용성(언제든 사용가능), 인증(사용자 확인), 부인방지

- 설계단계에서의 보안 활동 : 식별된 요구사항들을 소프트웨어 설계서에 반영하고 보안설계서 작성

- 구현단계에서의 보안 활동 : 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며 설계서에 따라 보안 요구사항 구현

  시큐어코딩(secure coding) : 보안요소를 고려한 코딩

- 테스트단계에서의 보안 활동 : 설계단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검

- 유지보수단계에서의 보안 활동 : 보안 사고들을 식별하고 사고발생시 이를 해결하고 보안 패치 설치

 

> 세션 통제

- 세션 통제의 개요

  세션 : 서버와 클라이언트 연결

  세션 통제 : 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것

    세션 통제는 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용, 보안약점: 불충분한 세션관리, 잘못된 세션에 의한 정보 노출

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

- 잘못된 세션에 의한 정보 노출 : 다중 스레드(Multi-Thred)환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

- 세션 설계 고려사항 : 시스템의 모든 페이지에서 로그아웃 가능하도록 UI(User Interface)를 구성, 로그아웃 요청시 할당된 세션이 완전히 제거되도록 함

- 세션 ID관리 : 안전한 서버에서 최소 128비트의 길이로 생성, 세션 ID의 예측이 불가능하도록 안전한 난수 알고리즘 제공, 장기간 미접속 세션 ID 주기적 재할당

 

> 입력 데이터 검증 및 표현

- 입력 데이터 검증 및 표현의 개요 : 입력데이터로 인해 발생하는 문제들을 예방하기 위해 구현단계에서 검증해야하는 보안 점검 항목들, 검증되지않은 데이터가 입력되었을 때 처리, 구현

- 입력 데이터 검증 및 표현의 보안약점 : 점검을 수행하지 않은 경우 SQL삽입, 자원 삽입, 크로스사이트 스크립핑(XSS), 운영체제 명령어 삽입 등의 공격에 취약

   보안약점의 종류 : SQL삽입(SQL의 DB조회 -> 동적쿼리, 질의문으로 해결), 경로조작 및 자원 삽입(입출력 경로를 조작하여 서버 수정, 삭제 -> 경로순회 공격 필터로 해결), 크로스사이트 스크립핑(XSS/ 웹페이지 악의적 스크립트 삽입 -> html태그 제한(<,>,& 문자 치환)), 운영체제 명령어 삽입(시스템 명령어 실행유도, 장애유발 -> 시스템 명령어 전달 차단), 위험한 형식 파일 업로드(시스템 손상 -> 파일확장자 제한, 암호화), 신뢰되지않는 URL주소로 자동접속 연결(사이트url조작, 피싱사이트 유도 -> 외부사이트주소관리, 방지)

 

▷ 소프트웨어 개발 보안 구축 B

> 보안기능

- 보안기능의 개요 : 소프트웨어 개발의 구현단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안점검 항목들

- 보안기능의 보안약점 : 적절한 인증없이 중요기능 허용(->재인증), 부적절한 인가(-> 접근제어검사 실시), 중요한 자원에 대한 잘못된 권한 설정(-> 관리자만 자원접근 가능하도록), 취약한 암호화 알고리즘(-> 안전한 암호화 알고리즘), 중요정보 평문저장 전송(-> 암호화과정)), 하드코드된 비밀번호(-> 암호화 비밀번호, 별도 저장)

 

> 시간 및 상태

- 시간 및 상태의 개요 : 병렬처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시스템이 원활하게 동작되도록 하기위한 보안 검증 항목

- TOCTOU 경쟁조건 : 검사시점(Time Of Check)과 사용시점(Time Of Use)을 고려하지않고 코딩하는 경우 발생하는 보안 약점

 

> 에러처리

- 에러처리의 개요 : 소프트웨어 실행중 발생할 수 있는 오류(Error)들을 사전에 정의하여 오류로 인해 발생할 수있는 문제들을 예방하기 위한 보안 점검 항목들

1) 오류메시지를 통한 정보 노출 : 오류 발생으로 실행환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점, 오류메시지로 경로디버깅 정보 유출 -> 내부처리

2) 오류 상황 대응 부재 : 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점 -> 예외처리 구문 작성

3) 부적절한 예외처리 : 함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점 -> 세분화

 

> 코드오류

- 코드오류의 개요 : 개발자들이 코딩 중 실수하기 쉬운 형(Type)변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들

1) 널 포인트(Null Pointer)역참조 : 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점 -> null값 검사

2) 부적절한 자원 해제 : 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점 -> 반환코드 확인

3) 해제된 자원 사용 : 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점 -> 반환된 메모리 주소 초기화

4) 초기화되지않은 변수 사용 -> 할당 메모리 초기화

 

▷ 소프트웨어 개발 보안 구축 C

> 캡슐화

- 캡슐화의 개요 : 정보은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들

- 캡슐화로 인해 발생할 수 있는 보안 약점 

  1) 잘못된 세션에 의한 정보 노출 : 다중 스레드(Multi-Thread) 환경에서 멤버 변수에 정보를 저장할 때 발생

  2) 제거되지 않고 남은 디버그 코드 : 개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생

  3) 시스템 데이터 정보 노출

  4) Public 메소드로부터 반환된 Private 배열

  5) Public 배열에 Private 데이터 할당

 

> API 오용

- API 오용의 개요 : API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기위한 보안검증 항목

- DNS Lookup에 의존한 보안결정 : 보안결정을 내리는 경우 발생하는 보안 약점 -> 직접 ip주소 입력

- 취약한 API사용 : 보안 문제로 사용이 금지된 API를 사용하거나 잘못된 방식으로 API를 사용했을 때 발생

 

암호 알고리즘 양방향 개인키 stream방식 LFSRm RC4
block 방식 DES(1975, KISA), SEED(1999, KISA), AES, ARIA
공개키 RSA(1978, MIT) 암호화 =/= 해독(비대칭키), 키 수가 적음, 복잡, 느림
단방향 HASH SHA, MD5 암호화, 무결성
     

 

반응형