보안점검
세션통제
세션은 서버와 클라이언트의 연결을 의미
세션 통제는 세션의연결과 연결로 인해 발생하는 정보를 관리하는 것을 의미
-세션 통제는 소프트웨어 개발 과정 중 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용
-세션 통제의 보안 약점
불충분한 세션 관리 |
-일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정돼 있는 경우 발생할 수 있는 보안 약점 세션ID : 서버가 클라이언트들을 구분하기 위해 부여하는 키로 클라이언트가 서버에 요청을 보낼때마다 세션ID를 통해 인증 수행 |
잘못된 세션에 의한 정보 노출 |
다중 스레드 환경에서 멤버변수에 정보를 저장할 때 발생하는 보안 약점 멤버 변수보다 지역 변수를 활용해 변수의 범위를 제한함으로써 방지 가능 |
입력 데이터 검증 및 표현
-입력 데이터 검증 및 표현은 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들이다.
-입력 데이터 검증 및 표현의 보안 약점
SQL 삽입 | -입력란에 sql을 삽입해 무단으로 db를 조회하거나 조작하는 보안 약점 -동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정해 방지 할 수 있다. |
경로 조작 및 자원 삽입 |
-데이터 입출력 경로를 조작해 서버 지원을 수정·삭제할 수 있는 보안 약점이다. -사용자 입력값을 식별자로 사용하는 경우 경로 순회 공격을 막는 필터를 사용해 방지할 수 있다. |
클스사이트 스크립팅(XSS) |
-웹페이지에 악의적인 스크립트를 삽입해 방문자들의 정보를 탗뤼하거나 비정상적인 기능 수행을 유발하는 보안 약점 -HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 '<', '>', '&' 등의 문자를 다른 문자로 치환함으로써 해결 가능 |
운영체제 명령어 삽입 |
-외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점 -웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지 가능 |
위험한 형식 파일 업로드 |
-악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나 시스템을 제어할 수 있는 보안 약점 -업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 방지 가능 |
신뢰되지 않는 URL주소로 자동접속 연결 |
-입력 값으로 사이트 주소를 받는 경우 이를 조작해 방문자를 피싱 사이트로 유도하는 보안 약점 -연결되는 외부 사이트의 주소를 화이트 리스트로 관리해 방지 가능 |
보안 기능
-소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들이다.
-보안 기능에 대한 점검을 수행하지 않을 경우 발생할 수 있는 보안 약점
적절한 인증 없이 중요기능 허용 |
-보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능 -중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하도록 하여 방지 가능 |
부적절한 인가 | 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취 모든 실행경로에 대해 접근제어 검사를 수행하고 사용자에게는 반드시 필요한 접근 권한만을 부여해 방지 가능 |
중요한 자원에 대한 잘못된 권한 설정 |
-권한 설정이 잘못된 자원에 접근해 해당 자원을 임의로 사용 -소프트웨어 관리자만 자원들을 읽고 쓸 수 있도록 설정하고 인가되지 않은 사용자의 중요 자원에 대한 접근 여부를 검사함으로써 방지 가능 |
취약한 암호화 알고리즘 사용 |
-암호화된 환경설정 파일은 해독해 비밀번호 등의 중요정보를 탈취 -안전한 암호화 알고리즘을 이용하고 업무 관련 내용이나 개인정보 등에 대해서는 IT보안인증사무국이 안정성을 확인한 암호모듈을 이용함으로써 방지 가능 |
중요 정보 평문 저장 및 전송 |
-암호화되지 않은 평문 데이터를 탈취해 중요한 정보를 획득 -중요한 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 하고 HTTPS 또는 SSL과 같은 보안 채널을 이용함으로써 방지 가능 |
하드코드된 비밀번호 |
-소스코드 유출 시 내부에 하드코드된 패스워드를 이용해 관리자 권한을 탈취 -패스워드는 암호화해 별도의 파일에 저장하고 디폴트 패스워드나 디폴트 키의 사용을 피함으로 방지 |
시간 및 상태
-동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리해 시스템이 원활하게 동작되도록 하기 위한 보안 검증 항목들
-시간 및 상태를 점검하지 않은 코딩이 유발하는 보안 약점
TOUTOU 경쟁 조건 | -검사 시점(Time Of Check)과 사용 시점(Time Of User)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점 -코드 내에 동기화 구문을 사용해 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성함으로써 방지 가능 |
종료되지 않는 반복문 또는 재귀함수 |
-반복문이나 재귀함수에서 종료 조건을 정의하지 않았거나 논리 구조상 종료될 수 없는 경우 발생하는 보안 약점 -모든 반복문이나 재귀함수의 수행 횟수를 제한하는 설정을 추가하거나 종료 조건을 점검해 반복문 또는 호출의 종료 여부를 확인함으로써 방지할 수 있다. |
에러처리
-소프트웨어 실행 중 발생할 수 있는 오류(Error)들을 사전에 정의해 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들
-에러처리의 미비로 인한 코딩이 유발하는 보안 약점
오류 메시지를 통한 정보노출 |
-오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등의 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점 -예외처리 구문에 예외의 이름이나 스택 트레이스를 출력하도록 코딩하는 경우 해커는 소프트웨어의 내부구조를 쉽게 파악 가능 -오류 발생 시 가능한 한 내부에서만 처리되도록 하거나 메시지를 출력할 경우 최소한의 정보 또는 사전에 준비된 메시지만 출력되도록 함으로써 방지 가능 |
오류 상황 대응 부재 |
-소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점 -오류가 발생할 수 있는 부분에 예외처리 구문을 작성하고 제어문을 활용해 오류가 악용되지 않도록 코딩함으로써 방지 |
부적절한 예외처리 |
-함수의 반환값 또는 오류들을 세분화해 처리하지 않고 광범위하게 묶어 한 번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점 -모든 함수의 반환값이 의도대로 출력되는지 확인하고 세분화된 예외처리를 수행함으로써 방지 가능 |
'정보처리기사 실기' 카테고리의 다른 글
운영체제(OS; Operating System) (1) | 2021.06.01 |
---|---|
보안점검-2 (0) | 2021.05.31 |
보안요소 (0) | 2021.05.26 |
Secure SDLC (0) | 2021.05.26 |
소프트웨어 개발 보안 (0) | 2021.05.26 |