7 분 소요

2020 시나공 정보처리기사 필기책 참고

주의! 중요도가 낮은 항목(C)은 일부 제외

1. Secure SDLC – A

  • SDLC에 보안 강화를 위한 프로세스를 포함
  • 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용 최소화
  • CLASP, SDL 등
  • SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동 제시

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

  • 요구사항을 식별하는 작업 수행
  • 보안 수준을 보안 요소별로 등급을 구분
  • 보안 정책 항목들의 출처, 요구 수준, 세부 내용 등을 문서화

- 보안 요소

  • 기밀성 : 인가된 사용자에게만 접근 허용. 노출되더라도 읽을 수 없음
  • 무결성 : 인가된 사용자만 수정 가능
  • 가용성 : 인가된 사용자는 언제라도 사용 가능
  • 인증 : 사용자가 합법적인 사용자인지를 확인하는 모든 행위
  • 부인 방지 : 송수신 사실을 부인할 수 없도록 송수신 증거 제공

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

  • 보안 요구사항들을 S/W 설계서에 반영하고, 보안 설계서 작성
  • 위협 식별
  • 보안통제 기준 수립하여 설계에 반영
  • 네트워크 : 네트워크를 분리하거나 방화벽 설치
  • 서버 : 보안이 뛰어난 운영체제 사용, 접근통제 등 실시
  • 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로 등의 감시설비 설치
  • 개발 프로그램 : 허가되지 않은 프로그램 통제. 지속적인 데이터 무결성 검사 실시

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

  • 표준 코딩 정의서 및 S/W 개발 보안 가이드 준수
  • 설계서에 따라 보안 요구사항 구현
  • 지속적인 단위 테스트를 통해 보안 취약점 최소화
  • 코드 점검, 소스 코드 진단 작업
  • 시큐어 코딩

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

  • 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
  • 동적 분석 도구 또는 모의 침투테스트를 통해 위협의 해결여부 검증
  • 위협과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행
  • 모든 결과는 문서화. 개발자에게 피드백

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

  • 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들 식별
  • 사고 발생 시 이를 해결하고 보안 패치 실시


2. 세션 통제 – B

- 세션 통제의 개요

  • 세션은 서버와 클라이언트의 연결
  • 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
  • 요구사항 분석 및 설계 단계에서 진단
  • 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출

- 불충분한 세션 관리

  • 규칙이 존재하는 세션 ID가 발급되거나 타임아웃이 너무 긴 경우 발생
  • 세션 하이재킹 같은 공격을 통해 중요한 정보에 접근할 수 있음

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

  • 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
  • 싱글톤 패턴에서 발생하는 레이스컨디션으로 동기화 오류가 발생. 멤버 변수 정보 노출
  • 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지

- 세션 설계시 고려 사항

  • 모든 페이지에서 로그아웃이 가능하도록 UI 구성
  • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
  • 세션 타임아웃은 중요도가 높으면 2~5분, 낮으면 15~30분으로 설정
  • 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계
  • 중복 로그인을 허용하지 않은 경우 클라이언트의 중복 접근에 대한 세션 관리 정책 수립
  • 패스워드 변경 시 활성화된 세션을 삭제하고 재할당

- 세션ID의 관리 방법

  • 안전한 서버에서 최소 128비트의 길이로 생성
  • 예측이 불가능하도록 안전한 난수 알고리즘 적용
  • 세션 ID가 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계
  • 로그인 시 로그인 전의 세션ID를 삭제하고 재할당
  • 장기간 접속하고 있는 세션ID는 주기적으로 재할당


3. 입력 데이터 검증 및 표현 – B

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

  • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목
  • 개발의 구현 단계에서 유효성 검증 체계를 갖춤
  • 검증되지 않은 데이터가 입력되는 경우 이를 처리할 수 있도록 구현
  • 자료형 올바른지 확인, 일관된 언어셋 사용하도록 코딩

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

  • SQL 삽입
    • 입력란에 SQL을 삽입하여 무단으로 DB를 조회하거나 조작
    • 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링
  • 경로 조작 및 자원 삽입
    • 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제할 수 있는 보안 약점
    • 경로 순회 공격을 막는 필터를 사용하여 방지
  • 크로스사이트 스크립팅(XSS)
    • 악의적인 스크립트를 삽입하여 방문자들의 정보 탈취, 비정상적 기능 수행 유발
    • HTML 태그 사용 제한하거나 삽입되지 않도록 <, >, &등의 문자를 다른문자로 치환
  • 운영체제 명령어 삽입
    • 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취, 장애 유발
    • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 함
    • 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음
  • 위험한 형식 파일 업로드
    • 악의적인 명령어가 포함된 스크립트 파일을 업로드하여 시스템에 손상, 제어
    • 파일의 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 경로 분리, 실행 속성 제거
  • 신뢰되지 않는 URL 주소로 연결
    • 방문자를 피싱 사이트로 유도하는 보안 약점
    • 외부사이트의 주소를 화이트 리스트로 관리하여 방지


4. 보안 기능 – B

- 보안 기능의 개요

  • S/W 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목
  • 서비스 환경이나 취급 데이터 맞게 처리될 수 있도록 구현
  • 데이터에 접근하려는 사용자별로 중요도를 구분. 차별화된 인증 방안을 적용
  • 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의 접근 차단
  • 안전한 암호화 기술을 적용

- 보안 기능의 보안 약점

  • 적절한 인증 없이 중요기능 허용
    • 보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능
    • 중요 기능을 수행하는 페이지에는 재인증 기능을 수행하도록 하여 방지
  • 부적절한 인가
    • 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있음
    • 모든 실행경로에 대해 접근제어 검사를 수행. 반드시 필요한 접근 권한만을 부여
  • 중요한 자원에 대한 잘못된 권한 설정
    • 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용할 수 있음
    • S/W 관리자만 자원을 읽고 쓸 수 있도록 설정
    • 인가되지 않은 사용자의 중요 자원에 대한 접근 여부를 검사
  • 취약한 암호화 알고리즘 사용
    • 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보 탈취
    • 안전한 암호화 알고리즘 이용
    • IT 보안인증사무국이 안정성을 확인한 암호모듈을 이용
  • 중요정보 평문 저장 및 전송
    • 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득
    • 반드시 암호화 과정을 거치도록 하고 HTTPS, SSL 같은 보안 채널 이용
  • 하드코드 된 비밀번호
    • 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한 탈취
    • 패스워드는 암호화하여 별도의 파일에 저장
    • 디폴트 패스워드나 디폴트 키의 사용을 피함


5. 에러 처리 – B

- 에러처리의 개요

  • 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방
  • 프로그래밍 언어의 예외처리 구문을 통해 오류에 대한 사항 정의
  • 예외처리 구문으로 처리하지 못한 오류들은 문제 발생시킬 수 있음
  • 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재, 부적절한 예외처리

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

  • 오류 발생으로 중요 정보를 S/W가 메시지로 외부에 노출하는 보안 약점
  • 예외처리 구문에 예외의 이름이나 스택 트레이스를 출력하도록 코딩한 경우 해커는 소프트웨어의 내부구조를 쉽게 파악할 수 있음
  • 오류를 내부에서 처리되도록 하거나 메시지를 출력할 경우 최소한의 정보 또는 사전에 준비된 메시지만 출력되도록 함으로써 방지

- 오류 상황 대응 부재

  • S/W 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점
  • 실행이 중단되거나 의도를 벗어난 동작이 유도될 수 있음
  • 예외처리 구문을 작성하고, 제어문을 활용하여 오류가 악용되지 않도록 코딩하여 방지

- 부적절한 예외처리

  • 오류를 세분화하지 않고 한번에 처리하거나, 누락된 예외가 존재할 때 발생하는 보안 약점
  • 모든 오류들을 광범위한 예외처리 구문으로 정의하면 예기치 않은 문제 발생
  • 예상했던 결과와 다른 값 반환, 예외로 처리되지 않은 경우 잘못된 값으로 문제 발생
  • 모든 함수의 반환값이 의도대로 출력되는지 확인하고, 세분화된 예외처리를 수행하여 방지


6. 코드 오류 – B

- 코드 오류의 개요

  • 개발자들이 코딩 중 실수하기 쉬운 형변환, 자원 반환 등의 오류를 예방

- 널 포인터 역참조

  • 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점
  • 함수들이 오류 발생 시 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생
  • 널 포인터는 메모리의 첫 주소를 가리키며, 이를 참조할 경우 비정상적으로 종료될 수 있음
  • 공격자가 널 포인터 역참조로 발생하는 예외 상황을 악용할 수 있음
  • 널이 될 수 있는 포인터를 이용하기 전에 널 값을 갖고 있는지 검사하여 방지

- 부적절한 자원 해제

  • 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점
  • 힙 메모리, 소켓 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못 할 수 있음
  • 자원 반환 코드가 누락되었는지 확인
  • 오류로 인해 함수가 중간에 종료되었을 때 예외처리에 관계없이 자원이 반환되도록 코딩

- 해제된 자원 사용

  • 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생
  • 반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생할 수 있음
  • 반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화함으로써 방지

- 초기화되지 않은 변수 사용

  • 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점
  • 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있음
  • 변수 선언 시 할당된 메모리를 초기화함으로써 방지


7. 암호 알고리즘 – A

- 암호 알고리즘의 개요

  • 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
  • 해시를 사용하는 단방향 암호화 방식, 개인키 및 공개키로 분류되는 양방향 암호화 방식

암호화 방식

양방향

개인키

Stream 방식 : LFSR, RC4
Block 방식 : DES, SEED, AES, ARIA


암호화 방식

양방향

공개키


암호화 방식

단방향

HASH

- 개인키 암호화 기법

  • 동일한 키로 데이터를 암호화하고 복호화
  • 대칭 암호 기법, 단일키 암호화 기법
  • 한 번에 하나의 데이터 블록을 암호화. 블록 암호화 방식
  • 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화. 스트림 암호화 방식
  • 장점 : 암호화/복호화 속도 빠름. 알고리즘 단순. 파일 크기가 작음
  • 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐

- 공개키 암호화 기법

  • 암호화할 때 공개키는 DB 사용자에게 공개
  • 복호화할 때 비밀키는 관리자가 비밀리에 관리
  • 비대칭 암호 기법. 대표적으로 RSA
  • 장점 : 키의 분배가 용이, 관리해야 할 키의 개수가 적음
  • 단점 : 암호화/복호화 속도 느림. 알고리즘 복잡. 파일의 크기가 큼
  • X.509 방식, 비X.509 방식

- 양방향 알고리즘 종류

  • SEED : 블록 크기 128비트, 키 길이에 따라 128, 256
  • ARIA : 블록 크기 128비트, 키 길이에 따라 128, 192, 256
  • DES : 블록 크기 64비트, 키 길이는 56비트
  • AES : 블록 크기는 128비트, 키 길에 따라 128, 192, 256
  • RSA : 공개키 암호화 알고리. 큰 숫자를 소인수분해 하기 어렵다는 것에 기반

- 해시

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
  • 데이터의 암호화, 무결성 검증. 정보보호의 다양한 분야에서 활용
  • SHA 시리즈, MD5, N-NASH, SNEFRU 등

태그:

카테고리:

업데이트:

댓글남기기