반응형

     정보

    • 업무명     : 정보처리기사 필기 : 제5과목 정보시스템 구축 (소프트웨어 개발 보안 구축)

    • 작성자     : 박진만

    • 작성일     : 2021-03-03

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [Secure SDLC]

    • Secure SDLC의 개요

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

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

      • 보안항목에 해당하는 요구사항을 식별하는 작업을 수행

    • 보안 요소

      • 기밀성, 무결성, 가용성, 인증, 부인 방지

    • 설계 단계에서의 보안 활동

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

    • 구현 단계에서의 보안 활동

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

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

      • 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는  지 점검

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

      • 보안 사고들을 식별하고, 사고 발생 시 이를 해결하고 보안 패치를 설치

     

    [세션 통제]

    • 세션 통제의 개요

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

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

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

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

    • 불충분한 세션 관리

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

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

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

    • 세션 설계 고려사항

      • 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI(User Interface)를 구성

      • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 한다.

    • 세션ID의 관리

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

      • 세션ID의 예측이 불가능하도록 안전한 난수 알고리즘을 제공

     

    [입력 데이터 검증 및 표현]

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

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

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

      • 점검을 수행하지 않은 경우 SQL 삽입, 자원 삽입, 크로스사이트 스크립팅(XSS), 운영체  제 명령어 삽입 등의 공격에 취약해진다.

      • 보안 약점의 종류 : SQL  삽입, 경로 조작 및 자원 삽입, 크로스사이트 스크립팅(XSS), 운영체  제 명령어 삽입, 위험한 형식 파일 업로드, 신뢰되지 않는 URL 주소로 자동접속 연결

     

    [보안 기능]

    • 보안 기능의 개요

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

    • 보안 기능의 보안 약점

      • 적절한 인증 없이 중요기능 허용

      • 부적절한 인가

     

    [시간 및 상태]

    • 시간 및 상태의 개요

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

    • TOCTOU 경쟁 조건

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

     

    [에러처리]

    • 에러처리의 개요

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

    • 오류 메시지를 통한 정보 노출

      • 오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메  시지로 외부에 노출하는 보안 약점

    • 오류 상황 대응 부재

      • 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점

    • 부적절한 예외처리

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

     

    [코드 오류]

    • 코드 오류의 개요

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

    • 널 포인터(Null Pointer) 역참조

      • 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점

    • 부적절한 자원 해제

      • 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때  발생하는 보안 약점

    • 해제된 자원 사용

      • 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점

     

    [캡슐화]

    • 캡슐화의 개요

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

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

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

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

        • ③ 시스템 데이터 정보 노출

        • ④ Public 메소드로부터 반환된 Private 배열

        • ⑤ Public 배열에 Private 데이터 할당

     

    [API 오용]

    • API 오용의 개요

      • API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 검증 항목

    • DNS Lookup

      • 보안 결정을 내리는 경우 발생하는 보안 약점

    • 취약한 API 사용

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

     

    [암호 알고리즘]

    • 암호 알고리즘의 개요

      • 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법

        • 단방향 암호화 방식 : 해시(Hash)

        • 양방향 암호화 방식 : 개인키(Stream 방식, Block 방식), 공개키

    • 개인키 암호화(Private Key Encryption) 기법

      • 동일한 키로 데이터를 암호화하고 복호화한다.

        • 블록(Block) 암호화 방식 : 한 번에 하나의 데이터 블록을 암호화(DES, SEED, AES, ARIA)

        • 스트림(Stream) 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화  (LFSR, RC4)

      • 장점 : 암호화/복호화 속도가 빠름, 알고리즘이 단순, 파일의 크기가 작다.

    • 공개키 암호화(Public Key Encryption) 기법

      • 암호화 할 때 사용하는 공개키(Public Key)는 데이터베이스 사용자에게 공개하고, 복호  화할 때의 비밀키(Secrey Key)는 관리자가 비밀리에 관리

        • 비대칭 암호 기법이라고도 하며, 대표적으로 RSA(Rivest Shamir Adleman)기법이 있다.

      • 장점 : 키의 분배가 용이, 관리해야 할 키의 개수가 적다.

    • 양방향 알고리즘의 종류

      • SEED, ARIA, DES, AES, RSA

    • 해시(Hash)

      • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환

      • 데이터의 암호화, 무결성 검증을 위해 사용

     

    [문제]

    • 1. 소프트웨어에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 위협  요소들을 고려하여 프로그래밍하는 것을 의미하는 용어는?

      • ①  Secure Coding

      • ②  Secure SDLC

      • ③  Secure Architecture

      • ④  Secure Framework

     

    • 2. 소프트웨어 개발의 구현 단계에서 보안 기능의 점검 미비로 인해 발생할 수  있는 보안 약점에 해당하지 않는 것은?

      • ①  종료되지 않는 반복문 또는 재귀함수

      • ②  부적절한 인가

      • ③  중요한 자원에 대한 잘못된 권한 설정

      • ④  적절한 인증없이 중요기능 허용

     

    • 3. 다음 중 코드 오류와 관련된 보안 약점에 대한 설명으로 가장 옳지 않은 것은?

      • ①  널 포인터가 가리키는 메모리에 값을 저장하면 오류가 발생한다.

      • ②  널 포인터 역참조를 방지하려면 널 포인터를 초기화해야 한다.

      • ③  자원을 획득해서 사용한 다음에는 반드시 해제하여 반환해야 하는데 그렇지 않을 경우  문제가 발생한다.

      • ④  이미 사용이 종료된 반환 메모리를 참조하지 않기 위해서는 주소를 저장하고 있는 포인  터를 초기화한다.

     

    • 4. 데이터를 암호화하는데 사용되는 RSA 기법에 대한 설명으로 가장 옳지 않은  것은?

      • ①  암호화키와 해독키를 별도로 사용한다.

      • ②  암호화키를 일반적으로 공중키라고도 한다.

      • ③  해독키는 반드시 비밀로 보호되어야 한다.

      • ④  암호화키를 사용하여 해독키를 유도할 수 있다.

     

    •  

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com
     
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기