## OWASP TOP10 2013

OWASP(The Open Web Application Security Project)
: 3년 주기로 웹 해킹 위협의 동향을 자료로 발표

1. Injection
: SQL삽입, 명령어 삽입, LDAP 삽입과 같은 취약점이 포함되며, 주요 원인은 신뢰할 수 없는 외부 값에 의해 발생되며, 명령어 실행 또는 접근이 불가한 데이터에 대한 접근 등의 취약점을 발생 시킴

설명)
데이터 베이스와 연결된 웹 어플리케이션에서 사용자의 입력에 대한 검증이 제대로 이루어지지 않을 경우, 공격자에 의해 URL, 로그인 form 등의 위치에 조작된 query 문을 삽입하여 인증을 우회하거나, 데이터베이스 정보를 열람, 조작, 시스템 명령 실행등이 가능한 취약점

진단방법)
1. ' (Single Quotation) 삽입 시 에러 발생 취약 진단
2. query에 참/거짓 결과가 다르게 출력되는 지( -and 1=1 , -and 1=2 )

대책)
1. 개발자의 시큐어 코딩이 필요
2. 웹 방화벽 등에서 입력 값 필터링 / 웹 서버 보안
: ' , or, and, union 등 SQL인젝션 공격에 사용되는 문자열 필터링(블랙리스트)
: 허용된 입력 값만 필터링(화이트리스트)
3. 특수문자 치환 / 허용 범위 검증 함수 사용

* LDAP(Lightweight Directory Access Protocol) 
: TCP/IP위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜
: 네트워크 상에 있는 파일이나 장치들과 같은 자원등의 위치를 찾을 수 있게 해주는 소프트웨어 프로토콜


2. 인증 및 세션 관리 취약점(Broken Authentication and Session Management)
: 인증과 세션관리와 관련된 어플리케이션의 비정상적인 동작으로 인해 패스워드, 키, 세션 토큰 및 사용자 도용과 같은 취약점을 발생 시킴

설명)
사용자가 인증하고 인증된 사용자를 관리하는 세션 관리 매커니즘이 불충분하여 취약점이 발생, 암호화 없이 정보를 저장/전송하여 세션 정보가 노출

유형)
1. Cookie Poisoning
2. Session Reply Attack
3. Brute Attack

진단방법)
1. Cookie Toolbar 사용하여 쿠키값 조작이 가능한지 확인
2. 동일한 SessionID로 동시접속이 가능한지 확인
3. 아이디 / 패스워드 입력 오류 발생 시 차단정책 확인

대책)
1. 패스워드 정책 강화
2. 입력오류 누적 시 차단정책 설정
3. 데이터 전송 암호화(SSL)
4. 중요 데이터 쿠키 저장 금지
5. 세션 타임아웃 시간 단축
6. 동시접속 로그인 금지


3. 크로스 사이트 스크립트(XSS)
: 신뢰할 수 없는 값을 적절한 검증 없이 웹 브라우저로 전송하는 경우 발생되는 취약점으로 사용자 세션을 가로채거나, 홈페이지 변조, 악의적인 사이트 이동 등의 공격 수행

설명)
서버에 악의적인 스크립트를 포함시켜서 사용자의 브라우저에서 실행을 유도하여 사용자의 브라우저 및 시스템을 제어할 수 있는 약점

유형)
1. Reflected XSS
: URL 영역에 사용, URL에 스크립트를 포함시켜서 서버에게 파라미터로 전달하고 서버는 스크립트를 만들어주는 페이지에 포함시켜 전송

2. Stored XSS
: 게시물에 스크립트를 등록, 공격자는 공격 스크립트를 서버에 저장

3. DOM based XSS
: document object model을 사용하여 조작, URL에 스크립트를 포함시키지만 서버에서 파라미터가 처리되지 않고 요청한 페이지가 클라이언트에게 돌아온 후

진단방법)
1. URL 파리미터 영역에 '<script>alert('xss');</script> 입력 후 확인
2. 게시물에 <script>document.write(document.cookie);</script> 입력 후 확인
3. 기타 XSS cheat sheet를 사용하여 스크립트 필터링 우회 테스트

대책)
1. 스크립트 사용제한
2. HTML 태크 사용 제한 또는 허용된 태그만 필터링
3. 스크립트에 악용될 가능성이 있는 문자 치환


4. 취약한 직접 개체 참조(Insecure Direct Object References)
: 파일, 디렉터리, 데이터베이스 키와 같은 내부적으로 처리되는 오브젝트가 노출되는 경우, 다운로드 취약점등을 이용하여 시스템 파일에 접근 하는 경우를 의미

설명)
웹 페이지를 include 하는 부분이 존재할 때, 공격자가 기존 페이지 대신 시스템에 직접 접근 가능한 경로를 사입하여 시스템 파일이 노출되는 취약점

유형)
1. 경로 조작을 통한 시스템 파일 접근(내부 파일 include)
2. Web Shell 등 외부 파일 실행(외부 파일 include)

진단방법)
1. 웹 사이트의 URL 주소 상세 점검
2. 취약점 진단 툴을 통해 점검 가능
3. 관리자 뒤 단 페이지, 백업 파일 접근 가능 여부 점검

대책)
1. 외부 파일 삽입 금지
2. 에러 페이지는 따로 작성 후 직접 호출방식 사용
3. include된 파일이 화면에 표시되지 않고 서버측에서 처리하도록 설정


5. 보안설정오류(Security Misconfiguration)
: 어플리케이션, 프레임워크, 어플리케이션 서버, 데이버베이스 서버 플랫폼 등에 보안설정을 적절하게 설정하고, 최적화된 값으로 유지하며, 또한 소프트웨어는 최신의 업데이트 상태로 유지되어야 함

설명)
웹 서버나 웹 어플리케이션 설정 등이 Default로 유지되고 있거나, 테스트 파일 등이 남아있는 경우 발생하는 취약점

유형)
1. 디렉토리 리스팅
2. 오류 메시지 출력
3. Banner Grabbing

진단방법)
1. 디렉토리 리스팅
: URL에서 파일명, 쿼리 스트링을 삭제하고 요청하여 결과 확인

2. 오류 메시지 점검
: 특수문자, 파라미터 변조, 존재하지 않는 파일 요청 등을 통해 발생하는 에러 페이지 확인

3. HTTP 메소드 점검
: OPTIONS 메소드를 사용하여 허용되는 메소드 파악

4. 테스트 페이지, 기본 설정 페이지 등의 존재 여부 확인

대책)
1. 웹 서버 환경설정 보완
2. 웹 서버 구축 완료 후 불필요한 파일 삭제


6. 민감데이터 노출(Sensitive Data Exposure)
: 대다수의 웹 어플리케이션은 카드번호 등과 같은 개인정보를 적절하게 보호하고 있지 않기 때문에, 개인정보 유출과 같은 취약점이 발생되고 있다. 이를 보완하기 위해서는 데이터 저장 시 암호화 및 데이터 전송 시에도 SSL등을 이용해야 함

설명)
불완전한 암호화 방식 사용으로 민감 데이터가 공격자에게 노출되는 약점

유형)
1. 암호화 해제
2. 스니핑을 통한 중요정보 노출

진단방법)
1. 와이어샤크 등 패킷 시니핑 도구를 사용하여 패킷을 확인
2. Session Cookie 값의 암호화 해제 리스트

대책)
1. 암호화 사용시 강력한 암호화 표준 알고리즘 사용
2. SSL을 사용한 통신

* SSL(Security Socket Layer)
: 넷스케이프사가 개발한 인터넷 상(브라우저와 웹서버 사이)에서 정보를 암호화하여 송/수신하는 프로토콜, 현재 인터넷에서 널리 쓰여지고 있는 WWW나 FTP등의 데이터를 암호화하여, 프라이버시에 관한 정보나 크레딧카드 번호, 기업 비밀등을 안전하게 송/수신할 수 가 있음


7.  기능 수준의 접근통제 누락(Missing Function Level Acess Control)
: 가상적으로는 UI에서 보여지는 특정 기능을 수행 전, 기능접근제한 권한을 검증해야 하나, 어플리케이션은 각 기능에 대한 접근 시 동일한 접근통제검사 수행이 요구된다. 만일 적절하게 수행되지 않는 경우 공격자는 비 인가된 기능에 접근하기 위해, 정상적인 요청을 변조할 수 있다.

설명)
사용자의 권한에 따라 웹 어플리케이션의 URL에 접근이 제어되어야 하는데, 세션 등 관리 미비로 관리자 페이지로 접속하거나, 권한 없는 사용자가 권한을 획득할 수 있는 보안 취약점

유형)
권한없는 CRUD(create, read or retrieve, update, delete or destroy)

진단방법)
1. 파라미터 조작을 통한 권한 획득 시도
2. 관리자 페이지 접속 시도
3. 관리자 페이지의 뒷간 페이지 접속 시도

대책)
1. CRUD 작업 요청 시 세션체크
2. 관리지 페이지 접속 시 IP인증/계정인증 등 Two Factor 인증 적용


8. 크로스 사이트 요청 변조(CSRF, Cross-Site Request forgery)
: 로그온 된 피해자의 웹 브라우저를 통해, 세션 쿠키 및 기타 다른 인증정보가 포함된 변조된 HTTP 요청을 전송시켜 정상적인 요청처럼 보이게 하는 기법으로 물품구매, 사이트 글 변조 등 악의적인 행동을 하는 취약점을 의미

설명)
정상적인 사용자에게 공격자가 명령을 전송하여, 사용자의 브라우저에서 공격자에게 이득이 되는 행동을 수행하게 하는 취약점

유형)
1. 관리자 대상으로 한 공격자의 권한상승 공격
2. 사용자를 대상으로 한 요청 변조 공격

진단방법)
게시물, 웹 메일, 쪽지 등의 XSS전송 가능 여부 점검

대책)
1. POST method 사용
2. Security Validation Token 사용
3. Referrer Validation


9. 알려진 취약점이 있는 컴포넌트 사용(Using Components with Known vulnerabilities)
: 슈퍼유저권한으로 운영되는 취약한 라이브러리, 프레임워크 및 기타 다른 소프트웨어 모듈로 인해 데이터 유실 및 서버 권한 획득과 같은 취약성이 존재

설명)
개발에 사용된 컴포넌트, 라이브러리, 프레임워크, 기타 소프트웨어 모듈이 전체 권한이나 버그를 내포하고 있고, 보안 패치 등이 수행되지 않았을 경우, 권한과 버그를 이용하여 시스템을 공격할 수 있는 보안 취약점

유형)
1. 사용중인 컴포넌트 파악하여 정보 수집 후 공격
2. Struts, tomcat, WYSIWYG 도구, 오픈소스 게시판

진단 방법)
1. 사용중인 어플리케이션의 버전 정보 확인 후 취약점 정보 조회
2. 웹 어플리케이션 소스를 분석하여 사용중인 컴포넌트를 파악 후 해당 컴포넌트 소스 다운로드 후 분석

대책)
1. 취약점이 존재하는 컴포넌트 배제
2. 사용중인 컴포넌트의 취약점 보완 패치 적용


10. 검증되지 않은 리 다이렉트 및 포워드(Invalidated Redirects and Forwards)
: 웹 어플리케이션에 접속한 사용자를 다른 페이지로 분기시키는 경우, 이동되는 목적지에 대한 검증 부재 시, 피싱, 악성코드 사이트 등의 접속 및 인가되지 않은 페이지접근 등의 문제점을 야기

설명)
다른 페이지로 리 다이렉트/포워드 할 때 신뢰할 수 없는 경로로 이동
신뢰성 검증 부재로 발생하는 보안 취약점

유형)
1. <a> , <meta> 등을 사용한 페이지 이동
2. Clic kJacking 기법
: 마우스 클릭(onmouseup) 이벤트를 통한 사이트 이동
: 피싱 사이트, 악성코드 유포 경유지 등으로 유인
: 방화벽 설정 변경, 프로그램 다운로드

진단방법)
1. 웹 페이지 소스 리다이렉트/포워드 부분 점검
2. HTML 태크 허용여부 확인

대책)
HTML 태그 필터링
: 허용 문자만 입력하도록 화이트리스트 기반 필터링 적용

댓글 없음:

댓글 쓰기