취약점(vulnerability)은 공격자가 시스템의 정보 보증을 낮추는데 사용되는 약점이다. 취약점은 세 요소의 교집합이다. 시스템 민감성 또는 결함, 공격자가 결함에 대한 접근 그리고 공격자가 결함에 대한 익스플로잇 가능성.[1] 취약점을 익스플로잇하기 위해서, 공격자는 반드시 시스템의 약점에 접속할 수 있는 적어도 하나의 툴이나 기법을 가져야 한다. 이 경우에, 취약점은 또한 공격 영역이라고도 불린다.
취약점 관리는 취약점을 확인, 분류, 치료 그리고 완화시키는 주기적인 과정이다.[2] 이 과정은 일반적으로 컴퓨터 시스템에서 소프트웨어 취약점을 나타낸다.
보안 위협은 취약점으로서 분류될 수 있다. 취약점의 사용을 같은 의미의 위험과 함께 사용하는 것은 헷갈릴 수 있다. 위험은 심각한 손실의 가능성과 관련된다. 취약점들 중에는 위험이 없는 것도 있다. 예를 들면 영향을 받은 자산이 값을 가지고 있지 않은 경우가 있다. 공격을 구현하기 위해 사용될 수 있는 하나 이상의 취약점을 익스플로잇 가능한 취약점이라고 한다. 취약성의 창문(window of vulnerability)은 보안 구멍이 소개된 또는 사용중인 소프트웨어에서 분명해진 시간부터, 접근이 제거되고 보안이 바로잡히고, 공격이 비활성화된 시간 까지이다. - 제로 데이 공격을 보자.
보안 버그는 더 좁은 개념이다: 소프트웨어와 관련 없는 취약점이 있다:하드웨어, 사이트, 인적 취약점들이 소프트웨어 보안 버그와 관련 없는 것들의 예이다.
익숙함: 흔하고 잘 알려진 코드와 소프트웨어, 운영체제, 하드웨어를 사용하는 것은 공격자가 결함을 익스플로잇할 수 있는 정보를 제공할 가능성을 높인다.[9]
연결성: 물리적 접속, 권한, 포트, 프로토콜 그리고 서비스들은 각각의 접근할 수 있는 시간이 늘어날수록 취약점은 증가하게 된다.[10]
패스워드 관리 결함: 컴퓨터 사용자는 무차별 대입 공격에 취약한 암호를 사용한다. 사용자들은 프로그램이 접근할 수 있는 컴퓨터에 암호를 저장한다. 사용자들은 많은 프로그램과 사이트들에서 암호를 재사용한다.[8]
근본적인 운영체제 설계 결함: 운영체제 설계자는 사용자/프로그램 관리에 차선의 정책을 선택한다. 예를 들면 기본 권한과 같은 정책을 가진 운영체제는 모든 프로그램과 사용자들에게 컴퓨터 전체에 접근할 수 있는 권한을 준다.[8] 이 운영체제 권한은 바이러스와 악성코드가 관리자를 대신하여 명령어를 실행할 수 있게 한다.[11]
인터넷 웹사이트 검색: 몇몇 인터넷 웹사이트들은 컴퓨터에 자동으로 설치될 수 있는 스파이웨어나 애드웨어를 포함한다. 이러한 웹사이트 방문 이후, 컴퓨터 시스템은 감염되고 개인 정보가 수집되고 다른 개인으로 보내질 수 있다.[12]
소프트웨어 버그: 프로그래머는 익스플로잇할 수 있는 버그를 소프트웨어 프로그램 안에 남겨둘 수 있다. 소프트웨어 버그는 공격자가 애플리케이션을 악용할 수 있게 한다.[8]
확인되지 않은 사용자 입력: 프로그램은 모든 사용자의 입력이 안전하다고 가정한다. 입력이 확인되지 않은 프로그램들은 의도되지 않은 명령어의 실행을 허용하게 된다.[8]
과거의 실수를 배우지 않는 것.[13][14] 예를 들면 IPv4 프로토콜 소프트웨어에서 발견된 취약점들이 새로운 IPv6에도 구현될 수 있다.[15]
연구는 대부분의 취약한 부분이 사용자나 설계자 등 같이 사람에 의한 것이라는 점을 보여준다.[16] 그러므로 사람들은 위협, 자원, 정보 자원 등의 역할에 따라 고려되어야 한다. 사회공학 기법은 증가하는 보안 고려 사항이다.
취약점 결과
보안 위반의 영향은 매우 크다. IT 관리자나 높은 관리직이 취약점이 있는 IT 시스템과 애플리케이션에 대해 쉽게 알 수 있는 것과 IT 위험에 대해 어떤 조치도 취하지 않는 것은 대부분의 경우에 좋지 않은 행위이다. 프라이버시 법은 관리자들이 보안 위험에 대한 영향과 가능성을 줄이는 것을 강요한다. 모의 해킹은 조직에 의해 채택된 약점과 대응책을 확인하는 형태이다.[17] IT 위험을 전문적으로 관리하는 적절한 방식은 정보 보안 관리 시스템을 채택하는 것이다.[7]
정보 보안의 중요한 개념 중 하나는 종심방어의 원리이다. 즉, 다계층 방어 시스템을 설치하는 것은:
개발된 좋은 보안 수준을 충족시키기 위하여 몇몇 기준들의 집합들이 만족되어야 한다. ITSEC와 공통평가기준이 두 예이다.
취약점 공개
취약점들의 공개에 대한 책임은 많은 논란이 있는 주제이다. 2010년 8월의 테크 헤럴드에 의하면 "구글, 마이크로소프트 등이 최근에 이러한 공개를 다루는 가이드라인과 선언을 발행하였다.[18]
취약점 식별과 제거
컴퓨터 시스템에서 취약점들을 발견할 수 있게 도와주는 많은 소프트웨어 툴들이 존재한다. 비록 이러한 툴들이 감시관에게 현재 존재할 수 있는 취약점들에 대한 좋은 개요를 제공할 수 있지만, 인간의 판단을 대체하지는 못한다. 단지 스캐너에만 의존하는 것은 현재 시스템에 존재하는 문제들에 대한 제한된 관점과 긍정 오류를 만들 수 있다.
취약점들은 모든 주요 운영 체제들에서 발견되고 있다. 이러한 시스템들을 사용하면서 취약점들의 확률을 줄일 수 있는 유일한 방법은 감사와 최적의 배치(방화벽과 접근 제어의 사용 같은), 세심한 시스템 관리를 포함한 꾸준한 조심을 통해서 가능해 진다.
↑British Standard Institute, Information technology -- Security techniques -- Management of information and communications technology security -- Part 1: Concepts and models for information and communications technology security management BS ISO/IEC 13335-1-2004
↑ 가나Internet Engineering Task Force RFC 2828 Internet Security Glossary
↑Krsul, Ivan (1997년 4월 15일). “Technical Report CSD-TR-97-026”. The COAST Laboratory Department of Computer Sciences, Purdue University. CiteSeerX: 10.1.1.26.5435.|url=이 없거나 비었음 (도움말)
↑
Kiountouzis, E. A.; Kokolakis, S. A. 《Information systems security: facing the information society of the 21st century》. London: Chapman & Hall, Ltd. ISBN0-412-78120-4.