보안 취약점
☞ 취약점 (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 이용하면 블로그에 접속 않고도 다른 방법으로 글 게시 가능
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사] Part04-02-1. 기본 문법 활용 (0) | 2022.02.15 |
---|---|
[정보처리기사] Part04-01-4. 배치 프로그램 구현 (0) | 2022.02.15 |
[정보처리기사] Part04-01-2. 공통 모듈 구현 (0) | 2022.02.10 |
[정보처리기사] Part04-01-1. 개발환경 구축 (0) | 2022.02.10 |
[정보처리기사 필기 요약] 시스템 소프트웨어 (0) | 2021.03.04 |
댓글