• [정보처리기사] 7장 소프트웨어 개발 보안 구축

    2021. 3. 20.

    by. KimBangg

     

    1 소프트웨어 개발 보안 [ 기밀, 무결 , 가용 ]

    소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미한다.

    2 Secure SDLS

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

    소프트웨어의 유지 보수 단계에서 보안 이슐르 해결하기 위해 소모되는 비용을 최소화하기 위함

    3 세션 통제

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

    세션 통제의 보안 약점은 불충분한 세션관리 , 잘못된 세션에 의한 정보 노출이 있다.

    - 세션 설계시 고려사항

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

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

    - 세션 ID 관리방법

    최소 128 비트의 길이로 생성한다.

    안전한 난수 알고리즘을 통해 예측 불가능하도록 한다.

    로그인 시 로그인 전의 세션 ID를 삭제하고 재할당한다.

     

    4 입력 데이터 검증 및 표현

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

     

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

    SQL 삽입 : 입력란에 SQL을 삽입하여 무단으로 DB를 조회하거나 조작하는 보안 약점

    경로 조작 및 자원 삽입 : 데이터 입출력 경로를 조작하여, 서버 자원을 수정 및 삭제 할 수 있는 보안 약점

    크로스 사이트 스크립팅 : 웹페이지에 악의적인 스크립트를 삽입하여, 방문자들의 정보를 탈취 또는 비 정상적인 기능을 수행하도록 유발하는 보안약점.

    운영체제 명령어 삽입 : 외부 입력값을 통해 시스템의 명령어의 실행을 유도함으로써, 권한을 타취하거나 시스템 장애를 유발하는 보안 약점

    위험한 형식 파일 업로드 : 악의적인 명령어가 포함된 스크립트 파일을 업로드 함으로써, 시스템에 손상을 주거나 시스템을 제어할수 있는 보안 약점

    신뢰되지 않는 URL 주소롤 자동접속 연결 : 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점

     

    5 보안기능

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

    각 보안들은 서비스 환경이나 취급 데이터에 맞게 처리 될 수 있도록 구현해야하고, 사용자별로 중요도를 구별하여 차별화된 인증 방안을 제공한다.

     

    - 보안 기능의 보안 약점

    적절한 인증없이 중요기능 허용 : 보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경

    부적절한 인가 : 접근제어 기능이 없는 실행경로를 통해, 정보 또는 권한 탈취

    중요한 자원에 대한 잘못된 권한 설정 : 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용

    취약한 암호화 알고리즘 사용 : 암호화된 환경 설정 파일을 해독하여비밀번호 등의 중요 정보 탈취

    중요정보 평문 저장 및 전송 : 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보를 획득 할 수 있다.

    중요한 정보를 저장하거나 전송하는 경우 암호화 과정을 거치고, HTTPS & SSL 과 같은 보안채널을 통해 방지

    하드코드된 비밀번호 : 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한 탈취

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

    7 에러처리

    - 부적절한 에러처리로 발생 가능한 문제들

    오류 메세지를 통한 정보노출 : 오류발생으로 실행환경, 정보 등 중요 정보를 소프트웨어가 메세지로 외부에 노출 시키는 것

    오류 상황 대응 부재 :예외처리를 하지 않았거나 미비로 발생하는 보안약점.

    부적절한 예외처리 :요류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리하거나, 누락된 예외가 존재 할 떄 발생하는 보안 약점

     

    8 코드 오류

    - 코드 오류로 발생 할 수 있는 보안약점

    널포인트 역참조 :널 포인터가 가리키는메모리에 어떠한 값을 저장할 때 발생하는 보안 약점.

    많은 라이브러리 함수가 오류가 발생하면 널 값을 반환하는데 이 반환 값을 포인터로 참조하는경우 발생

     

    부적절한 자원 해제 : 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생

     

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

    초기화되지 않은 변수사용 : 선언 후 값이 부여되지 않은 변수를 사용 할 때 발생하는 보안 약점

     

    9 API 오용

    - API 오용으로 발생 할 수 있는 보안약점

    DNS에 의존한 보안결정 : 공격자가 DNS 정보를 변조하여, 보안 결정을 우회 가능한 보안 약점

    취약한 API 사용 : 금지되거나 안전하지 않은 함수를 사용하는 보안 약점

     

    10 암호 알고리즘

    패스워드, 주민번호, 은행계좌와 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법

     

    - 종류

    개인키 암호화 기법 : 동일한키로 데이터를 암호화하고 복호화한다.

    => 데이터베이스 사용자는 정보 m을 암호화 알고리즘 E와 개인키 K를 이용하여 암호문 C로 바꾸어 놓으면 사용자는 데이터 베이스에 접근하기 위해 복호화알고리즘 D와 K를 이용하여 다시 평문의 정보 M으로 바꾸어놓는다.

    - 장점

    암호화/복호화 속도가 빠르며, 알고리즘이 단순하고, 공개키 암호 기법보다 파일 크기가 작다.

    - 단점

    사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다.

     

    공개키 암호화 기법(=양방향) : 공개키는 데이터베이스 사용자에게 공개하고, 복호화 할 때의 비밀키는 관리자가 비밀리에 관리한다.

    => 데이터베이스 사용자는 평문 정보 M을 암호화 알고리즘 E와 개인키 P를 이용하여 암호문 C로 바꾸어둔다.

    이를 복호화 하기 위해서는비밀키와 복호화 알고리즘에 권한이 있는 사용자만이 복화 알고리즘 D와 비밀키 S를 이용하여 평문으로 돌릴 수 있다.

     

    - 장점

    키 분배가 용이하고, 관리해야 할 키의 수가 적다.

    - 단점

    암호화/복호화 속도가 느리고, 알고리즘이 복잡하다.

     

     

    10 해킹 기법

    1) Dos

    시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격

    - 종류

    지역 시스템 공격 : 실제 대상 시스템에 접근하여 서버 하드웨어에 직접 과부하를 주는 공격

    원격 네트워크 공격 : 공격자가 목표 시스템에 접근하지 않고 원격지에서 인터넷을 이용한 공격

     

    2) DDos

    Dos의 또 다른 형태로 여러 대의 공격자를 분산 배치하여, 동시에 동작하게 함으로써 특정 사이트를 공격

    - 구성요소

    핸들러 : 마스터 시스템의 역할을 수행하는 시스템

    에이전트 : 공격 대상에게 직접 공격을 가하는 시스템

    마스터 : 공격자에게서 직접 명령을 받는 시스템, 여러 대의 에이전트를 관리

     

    3) 자원 고갈 공격

    서버 간 핸드세이크를 통해 통신이 연결되는 정상 트래픽과 달리 dos 공격은 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중 -> 공격이 임계치에 달하면 사용자들은 네트워크에 접근 X

     

    - 종류

    SYN 플러딩 : STN 패킷만을 보내 점유하여, 다른 사용자가 서버를 사용 못하게 하는 것

    UDP 플러딩 : 대량의 UDP 패킷을 만들어서 임의의 포트 번호로 전송하여 응답 메세지를 생성하게 하여 지속해서 자원을 고갈 시키는 공격

    스머프 : 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP 패킷을 직접 브로드캐스팅하여 마비시키는 공격

    PoD : 큰 사이즈의 패킷을 의도적으로 목표 시스템으로 발생시켜 시스템을 마비

     

    4) 어플 공격

    - 종류

    HTTP GET 플러딩 : 특정 URL 대상에 GET 전송, 웹 서버 - 다수 요청 수신 -> 마비

    Slowloris : HTTP GET 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않고, 다른 것만 전송하여 웹 서버와 연결 상태를 장기간 지속

    RUDY : 요청 헤더의 Content- length를 비정상적으로 크게 설정하여, 메세지 바딜 부분은 소량으로 계속 보내 연결 상태를 유지

     

    5) 네트워크 서비스 공격

    - 종류

    네트워크 스캐너, 스니퍼 : 네트워크 하드&소프트웨어 구성의 취약점을 파악해 공격자가 사용하는 공격도구

    패스워드 크래킹 : 사전 크래킹과 무차별 크래킹 방법을 사용해 네트워크 패스워드 검색

    IP 스푸핑 : 서버에 대한 인증되지 않은 액세스 권한을 입수하는데 사용

    트로이 목마: 악성 루틴이 숨어있는 프로그램을 실행.

     

    6) 취약점 공격

    - 종류

    랜드 어택 : 출발지와 목적지를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자신에 응답을 보내게 한다.

    보잉크 : 프로토콜의 오류 제어를 이용한 공격 기법으로써 시스템의 패킷 재전송과 재조립이 과부하를 유발

    티어 드롭 : IP 패킷의 재조합 과정에서 잘못된 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 DoS 공격

     

     

    RTO : 재해복구 시간 목표

    RPO : 재해복구 시점 목표

     

    댓글