본문 바로가기
정보처리기사/필기

[정보처리기사] Part04-01-3. 서버 프로그램 구현

by 채연2 2022. 2. 15.

보안 취약점

☞ 취약점 (vulnerability) : 공격자가 시스템 정보에 대한 안정성 낮추는데 사용되는 보안 약점

시스템 자체 결함, 공격자 결함에 대한 접근 용이성, 공격자가 결함에 대하여 공격할 가능성

취약점 공격 위해, 공격자는 시스템 약점 이용하여 접속 가능한 적어도 하나 이상의 툴이나 기법 이용

 

    ▶ 취약점 식별과 제거

        → 컴퓨터 시스템에서 취약점들을 발견 가능케 도와주는 많은 솔루션 존재

         그러나 이러한 솔루션은 보안 담당자에게 현재 존재하는 취약점들에 대한 편의 제공할 수 있지만, 사람의 판단을 완전히 대체 불가 > 스캐너나 툴에만 의존하는 것은 현재 시스템에 존재하는 문제들에 대한 매우 제한된 관점과 오류 생성 가능

         보안 취약점 이용한 공격 확률 줄일 수 있는 가장 좋은 방법은 보안 정책, 보안 정책을 지원하는 보안 가이드라인에 따른 정기적인 보안 감사, 다양한 보안 시스템 배치, 세밀한 시스템 관리 포함한 지속적인 관리 및 보안 관제 등 다양한 통제수단 통해 가능

         보안의 계층 방어 체계 필요

    

     취약점 사례

        1. 물리적인 취약점

         시스템 물리적인 환경에서 발생할 수 있는 취약점 이용하여 IT 자산 공격 가능

            ㄱ. 장비와 시설 보안 미비

                 주요 IT 장비를 외부인이 접근하기 용이하게 관리해 발생하는 보안 취약점

                 사무실이나 일반인 동선과 물리적으로 격리되지 않은 전산실

                 케이지로 통제되어있지 않은 시스템실

                 물리적 출입 통제 장치의 부재

                 보안 관리 요원이나 청원 경찰의 부재로 외부인의 자유로운 출입이 가능한 건물

 

            ㄴ. 직원 통제 미비

                 상당히 많은 보안 공격은 직원을 통해 발생

                 직원의 출입 카드 분실

                PC 근처에 메모로 붙여 놓은 부실한 ID와 PW

                 전산센터 게이트 출입 시 외부인이 몰래 뒤따라서 게이트 통과하는 피기백

 

        2. 관리적인 취약점

         조직의 관리적인 통제 환경에서 발생 가능한 보안 취약점 이용하여 IT 자산 공격 가능

            ▷ 보안 정책 부재

                 조직이 보안 정책이나 보안 절차, 보안 가이드라인 미수립

                 보안 책임지는 별도 조직과 절차 부족하거나 없는 경우

 

             보안 감사 미흡

                 운영과 독립된 조직에서 보안 취약점 조치 현황 확인, 보안 정책 준수 여부 등 주기적으로 수행하지 않음

 

             교육 및 통제 미흡

                 직원들에게 해킹 관 뉴스레터 제공, 정기적인 보안 교육 없음

                 입사 및 부서 이동이나 퇴사 시 보안 서약서 징구 절차 없음

 

            협력사 관리

                 거래 협력사나 관계사와 비밀유지협약 절차 없이 자료 공유, 전달 시 유출 가능성

 

        3. SW 보안 취약점

             메모리 보안 침입

                ㄱ. 버퍼 오버플로

                     메모리 다루는 데 오류 발생하여 잘못된 동작 하는 프로그램 취약점

                     컴퓨터보안과 프로그래밍에서 프로세스가 데이터를 버퍼에 저장 시 프로그래머가 지정한 곳 외에 저장

                ㄴ. 허상 포인터

                     컴퓨터 프로그래밍에서 적절한 타입의 유효 객체를 가리키고 있지 않은 포인터로 인한 취약점

                ㄷ. Null Pointer 참조

                     Null로 설정된 변수 주소 값 참조 시 발생

 

             입력 확인 오류

                ㄱ. 포맷 스트링 버그

                     포맷팅 수행하는 printf() 같은 특정한 C 함수들에서 검사되지 않은 사용자 입력을 포맷 스트링 마라미터로 사용

                ㄴ. SQL 삽입

                    응용 프로그램 보안상 허점 의도적으로 이용해, 악의적인 SQL문 실행되도록 입력값 삽입하여 DB를 비정상적으로 조작

                ㄷ. 코드 삽입

                    유효하지 않은 데이터 실행함으로써 야기되는 SW 버그의 부당한 사용

                ㄹ. 이메일 삽입

                     웹 애플리케이션 메일 송신 기능에 공격자가 임의의 To 및 Subject등의 메일 헤더 부정하게 추가

                ㅁ. 디렉토리 접근 공격

                     비공개 디렉토리 파일에 대해 부정하게 디렉토리 경로를 가로질러 액세스

                ㅂ. 웹 사이트 간 스크립팅

                    - 취약성 있는 웹 사이트 방문한 사용자가 브라우저에서 부정한 HTML 태그나 JavaScript 동작시킴

                ㅅ. HTTP 헤더 인젝션

                    - 공격자가 응답 헤더 필드에 개행 문자 등 삽입함으로써 임의 응답 헤더 필드나 바디에 내용 추가

                ㅇ. HTTP 응답 스플리팅

                    - 공격자가 HTTP 요청에 삽입한 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때 개행 문자 이용하여 첫 번재 응답 종료시키고 두 번째 응답에 악의적인 코드 주입

 

             경쟁상태

                ㄱ. Time-of-check-to-time-of-use 버그

                     하나의 자원에 대해 동시에 검사 시점과 사용 시점이 달라 생기는 보안 약점

                     동기화 오류뿐만 아니라 교착상태 등과 같은 문제점 발생

                ㄴ. 심볼릭 링크 경쟁

                    심볼릭 링크 이용

 

             권한 혼동 버그

                ㄱ. 웹에서 사이트 간 요청 위조

                     특정 사용자 대상으로 하지 않고 불특정 다수 대상으로 로그인된 사용자가 자신 의지와는 무관하게 공격자가 의도한 행위 함

                ㄴ. 클릭 재킹

                     눈에 안보이는 투명 버튼이나 링크 사용하여 웹페이지에 놓고 유저가 클릭하면 의도치 않은 콘텐츠에 액세스

                ㄷ. FTP 바운스 공격

                     FTP 프로토콜 구조 허첨 이용한 공격 방법

                    공격 대상 포트 스캐닝

 

소프트웨어 개발 보안

☞ 소프트웨어 개발 과정에서 개발자 실수, 논리적 오류 등으로 인해 소프트웨어에 내포될 수 있는 보안 약점 원인

보안 취약점 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 소프트웨어 개발 위한 일련의 보안 활동

 

     유형

             입력 데이터 검증 및 표현

                 프로그램 입력 값에 대한 검증 누락 또는 부적적한 검증, 데이터 잘못된 형식 지정으로 인해 발생 가능

                 SQL 삽입, 자원 삽입, 크로스 사이트 스크립트 (XSS) 등 26개

             보안 기능

                 보안 기능을 적절하지 않게 구현할 경우 발생 가능

                 부적절한 인가, 중요 정보 평문 저장 등 24개

             시간 및 상태

                 병렬 시스템, 하나 이상의 프로레스 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생 가능

                 경쟁 조건, 제어문 사용하지 않는 재귀 함수 등 7개

             불충분한 에러 처리

                 에러 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요 정보가 포함될 때 발생 가능

                 취약한 패스워드 요구조건, 오류 메시지 통한 정보 노출 등 4개

             코드 오류

                 타입 변환 오류, 자원의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩 오류로 인해 유발

                 널 포인터 역참조, 부절절한 자원 해제 등 7개

             캡슐화

                 중요 데이터 또는 기능성을 불충분하게 캡슐화 시 인가되지 않는 사용자에게 데이터 누출 가능

                 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보 노출 등 8개

             API 오용

                 의도된 사용에 반하는 방법으로 API 사용하거나, 보안에 취약한 API 사용하여 발생 가능

                 DNS Lookup에 의존한 보안 결정, NULL 매개변수 미조사 등 7개

 

API(Application Programming Interface)

응용 프로그램에서 사용 가능토록 OS나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스 제공

 

  절차적 언어의 API

        특정 작업 수행할 함수들 집합 규정하며, 특정 소프트웨어 구성요소와 상호작용 가능

 

        1. 윈도우 API

         마이크로소프트 윈도우 운영 체제들이 사용

        C/C++ 프로그램에서 직접 운영 체제와 상호 작용할 수 있도록 생성

         더 낮은 수준의 제어는 Ntdll, dll 사용

 

         서비스

            ㄱ. 기본 서비스

                 중요 리소스를 윈도우 시스템에서 사용 가능

                 파일 시스템, 장치, 프로세스 ,스레드, 오류 처리

                 32bit 윈도우 경우 kernel32.dll에 상주

             ㄴ. 고급 서비스

                 부가 기능을 커널에 사용 가능

                 윈도우 레지스트리, 시스템 종료/다시 시작, 윈도우 서비스 시작/중지/만들기, 사용자 계정 만들기

                 32bit 윈도우 경우 advapi32.dll에 상주

            ㄷ. 그래픽 장치 인터페이스 (GDI)

                 출력되는 그래픽 콘텐츠를 모니터, 프린터, 기타 출력 장치에 전달하는 기능 제공

                 32bit 윈도우 경우 gdi32.dll에 상주

                 커널 모드 GDI 지원은 그래픽 드라이버와 직접 통신하는 win32k.sys에서 제공

             ㄹ. 사용자 인터페이스

                 화면 창뿐만 아니라 단추와 스크롤바와 같은 가장 기본적인 컨트롤 만들어 관리

                 마우스와 키보드 입력 받는 기능, 윈도우 GUI와 연동하는 기능 제공

                 32bit 윈도우 경우 user32.dll에 상주

                 윈도우 XP 버전 이후로 기본 컨트롤은 공통 컨트롤 라이브러리와 함께 comctl32.dll에 상주

            ㅁ. 공통 대화 상자 라이브러리

                 응용 프로그램에 파일 열기 및 서장, 색 및 글꼴 선택 등을 위한 표준 대화 상자 제공

                 32bit 윈도우 경우 comdlg32.dll에 상주

            ㅂ. 공통 컨트롤 라이브러리

                 응용 프로그램이 OS가 제공하는 일부 고급 컨트롤에 접근 가능

                 상태 표시줄, 진행 표시줄, 도구 모음, 탭

                 32bit 윈도우 경우 comctl32.dll에 상주

            ㅅ. 윈도우 쉘

                 윈도우 API 구성 요소는 응용 프로그램이 OS 쉘이 제공하는 기능에 접근,변경,강화 가능

                 32bit 윈도우 경우 shell32.dll에 상주

                 쉘 라이트웨이트(Shell Lightweight) 유틸리티 기능은 shlwapi.dll에 존재

            ㅇ. 네트워크 서비스

                 다양한 네트워킹 기능을 OS에 제공

                 넷바이오스, 윈속, NetDDE, RPC 등

 

        2. 자바 API

             자바 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리 집합

             자바 언어 사용하여 사용자 부담 최소화

             입출력, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들 미리 구현하여 사용자가 쉽게 구현하도록 함

             하나의 커다란 클래스 계층 구조로 설계

   

        3. 웹 API

             웹 애플리케이션 개발에서 다른 서비스에 요청 보내고 응답 받기 위해 정의된 명세

             ex. 블로그 API 이용하면 블로그에 접속 않고도 다른 방법으로 글 게시 가능

 

    

320x100

댓글