검증되지 않은 입력 값
웹 어플리케이션에서 Request 정보를 사용하기 전에 그 정보를 검증하지 않음.클라이언트로부터 웹 어플리케이션이 요청을 받았을 때 그 요청이 적절한 값인지 여부를 검증하지 않음으로 인해 백엔드에 존재하는 자원을 공격할 수 있음.
부적절한 접근 통제
인증된 사용자들만이 할 수 있는 것에 대한 통제가 올바르게 시행되지 않음. 이를 통하여 인증되지 않은 사용자가 시스템에 접근하여 중요한 파일 읽거나 권한 없는 기능들을 수행할 수 있음. 예를 들자면 허가되지 않은 사용자가 웹 요청을 통해서 유닉스 시스템의 /etc/passwd 파일을 읽거나 윈도우 시스템의 웹 루트 디렉터리를 읽을 수 있는 등의 경로 유출(Path Traversal)을 허용하는 취약점.
부적절한 인증과 세션관리
계정 자격증명(Account Credential) 과 세션 토큰이 올바르게 보호되지 않음. 공격자는 암호, 키, 세션 쿠키, 그리고 다른 토큰 등을 얻음으로써 인증 매커니즘을 무력화 시키고, 다른 사용자로 위장할 수 있음.
Cross Site Scripting (XSS) Flow
공격자가 웹 어플리케이션을 사용해서 다른 최종 사용자에게 자바 스크립트와 같은 악성 데이터를 보낼 수 있다. 다른 사용자의 세션을 끊어 버리거나, PC를 공격할 수 있고, 데이터를 위조함으로써 사용자를 속일 수 있음.
버퍼 오버플로우
입력 값을 제대로 점검하지 않는 프로그램 언어로 만들어진 웹 어플리케이션 컴포넌트들은 비정상으로 종료 될 수 있고, 때로는 프로세스를 컨트롤 하는데 사용될 수 있다. 이러한 것들에는 CGI, 라이브러리, 드라이버, 웹 어플리케이션 컴포넌트 등이 포함.
Injection Flaws
웹 어플리케이션에서 외부 시스템이나 로컬 OS에 접근할 때 파라미터를 전달함으로써, 공격자가 파라미터에 악의적인 명령어를 넣었을 경우에 외부 시스템에서 이 명령어를 실행 시킬 수 있다.웹 어플리케이션에서 HTML 형식이나 쿠키, URL 파라미터 형식으로 시스템 명령어를 삽입 허용함으로써 웹 상에서도 시스템 명령을 실행할 수 있음.
잘못된 에러 핸들링
정상적인 운영상태에서 발생하는 오류를 제대로 핸들링하지 않음. 공격자들이 웹 어플리케이션에서 핸들링하지 않는 오류를 발생시킬 수 있다면, 시스템 정보를 얻거나 서비스 거부, 보안 메커니즘을 무력화 시킬 수 있고, 심지어 서버를 망가뜨릴 수 있음.
Insecure Storage
웹 어플리케이션은 정보 및 자격증명을 보호하기 위하여 암호화 함수를 빈번하게 사용한다. 이러한 함수들과 그것을 이루는 코드들에 대해 제대로 코드화 한다는 것은 어려운 것으로 알려졌고, 결과적으로 취약한 보호 기능을 보이는 경우가 자주 있음.
서비스 거부(DoS)
공격자는 사용자가 어플리케이션을 사용하거나 접근할 수 없도록 웹 어플리케이션의 자원을 소비해버릴 수 있다. 또한 사용자 계정을 잠그거나, 심지어 모든 어플리케이션의 기능을 마비시킬 수 있음.
안전하지 않은 설정관리
견고한 서버 설정 표준은 웹 어플리케이션을 보호하는데 매우 중요하다. 서버는 보안에 영향을 끼치는 많은 설정 옵션을 가지고 있음.
참고사이트
OWASP: A Guide to Building Secure Web Applications - http://www.owasp.org
SANS S.C.O.R.E. Web Application Checklist - http://www.sans.org/score/webappschecklist.php