OWASP TOP 10 - 2013

by Dreamer

오늘은 OWASP TOP 10 에 대해서 포스팅 할 예정입니다.

Naver Blog 에서 웹 보안 포스팅 할 때는 이 부분을 따로 정리 하진 않았는 데 웹 취약점을 소개하기 앞서 어떤 공격(취약점) 종류가 존재하는지 아는 것이 중요하기 때문에 정리하고자 합니다.

일단 OWASP 는 The Open Web Application Security Project국제 웹보안 표준 기구를 말합니다. 정보 누출, 인젝션 결함, 악성파일, 보안 취약점 등 연구를 하고 2004년부터 3년 단위로 많은 빈도 수를 가지는 취약점 10가지를 정해서 OWASP TOP 10 이라는 보고서를 공개합니다. OWASP는 비영리 단체이므로 보고서를 무료로 제공하며 해당 사이트에서 2004, 2007, 2010, 2013년도의 문서를 확인 할 수 있습니다.

OWASP : http://www.owasp.org

OWASP TOP 10 DOWNLOADhttps://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project


국제기구 답게 여러나라 언어로 제공합니다. 물론 한국어로 된 PDF 파일도 있습니다. :)


PDF 첫 페이지는 가장 심각한 웹 애플리케이션 보안 위험 10가지! 라는 제목으로 심각함!을 강조하고 있습니다.

다음으로는 2010년의 TOP10과 2013년의 TOP10을 비교한 표입니다.



보시다시피, A1-6, A8, A10 는 동일하고 3가지 정도만 포괄적인 의미로 바뀌거나 약간의 내용을 추가한 차이만 보이고 있습니다. 공통적으로 보여지는 7가지는 오래전부터 발견 된 취약점들입니다. 보안을 공부한 사람들이라면 이미 알고 있는 내용이고, 많은 솔루션들이 나온 상태입니다.

하지만, 부동의 자리를 지키고 있는 이유는? 
아직까지 많은 사용자들이 보안 패치 된 상위 버전으로 업그레이드 하지 않고, 하위 버전을 사용하고 있기 때문에 발생하는 문제입니다. 또는 웹 개발 시 시큐어코딩을 적용하지 않고 취약점이 발생하는 함수를 사용하기 때문에 발생합니다.

아래 표는 취약점에 대해 공격가능성과 취약 범위, 탐지 가능성, 영향도의 정도를 보여줍니다.



아직 Web Hacking에 대해 설명한 게 없어서 어떤 공격이 어떤 피해를 주는 지 감이 잡히지 않겠지만, 눈에 보이는 것으로 파악해보면! A1. 인젝션의 경우 공격 가능성은 쉬우면서 영향도(피해량)도 심각한 것을 알 수 있습니다. 이 말은 간단한 공격이지만, 서버나 PC가 받는 피해량은 크다는 것을 의미합니다. 다른 취약점들도 마찬가지로, 탐지가 쉬운 것도 보이지만 어려운 내용도 있고, 피해가 심각한 내용들이 많습니다


지금부터는 A1 부터 A10까지 간단하게 개념적으로 정리해 보겠습니다.

내용이 많이 지루하고 글이 많지만 지금 가볍게 읽어보고 나중에 웹보안 공부를 한번 마친 후 다시 보면 각 취약점이 어떤 의미인지를 다른 느낌으로 이해가 되실 겁니다.

A1. Injection

PDF 내용 : 
인젝션의 취약점은 신뢰할 수 없는 데이터가 명령이나 질의문의 일부분으로서 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근 할 수 있도록 인터프리터를 속일 수 있다.

Dreamer : 
DB 나 System에 접근하는 Query를 조작하여 권한을 우회하거나, 오류 메세지를 통해 데이터 값을 파악하는 공격을 말합니다. 
SQL Injection 을 이용한 관리자 권한 우회 및 오류메세지 도출, 오류메세지가 보이지 않는다면 Blind Injection을 통한 DB 구조 및 정보파악, MASS Injection, DLL Injection 등 종류가 다양합니다.


A2. 인증 및 세션 관리 취약점

PDF 내용 : 
인증과 세션관리와 관련된 어플리케이션 기능이 정확하게 구현되지 않아서, 공겨자가 패스워드 또는 세션 토큰을 해킹하여 다른 사용자 ID로 해당 웹 페이지에 접근 할 수 있다.

Dreamer : 
세션은 Client와 Server의 연결다리로, Client가 누구인 지 정보를 담고 있다. 
이런 세션을 하이재킹을 통해 탈취하고, 탈취한 세션으로 Server에 접근하면 해당 사용자로 접근이 가능해집니다.


A3. XSS - Cross Site Scripting

PDF 내용 : 
애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹브라우저로 보낼 때 발생한다. 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹사이트 변조, 악의적인 사이트로 이동할 수 있다.

Dreamer : 
주로 댓글, 방명록, 게시판 등 글을 작성할 수 있는 부분에서 많이 발생되며, <script> ~ </script> 를 통해 공격이 진행 되기 때문에 <script>가 동작되지 않게 구현하면 대부분 보안 할 수 있습니다.


A4. 취약한 직접 객체 참조

PDF 내용: 
직접 객체 참조는 개발자가 파일, 디렉토리, 데이터베이스 키와 같은 내부 구현 객체를 참조하는 것을 노출할 때 발생한다. 접근 통제를 통한 확인이나 다른 보호수단이 없다면, 공격자는 노출 된 참조를 조작하여 허가 되지 않은 데이터에 접근 할 수 있다.

Dreamer :
간단한 예로 특정 홈페이지에서 소스보기를 했는 데 그 때 /A/member/admin/admin.php 라는 경로로 직접 사용되고 있다면, 구동되는 웹 서버의 디렉터리 구조 정보가 노출이 되는 것입니다.


A5. 보안 설정 오류

PDF 내용:
훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서비 및 플랫폼에 대한 보안 설정이 정의되고, 적용되어 있다. 기본적으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의 , 구현 및 유지 되어야 한다. 또한 소프트웨어는 최신 상태로 유지 해야 한다.

Dreamer :
처음부터 완벽한 프로그램이나 애플리케션을 만드는 것은 불가능합니다.
취약점이 발견되는 점차적으로 보안하는 것이기 때문에 소프트웨어 업그레이드를 함으로서 취약점이 발생되는 것을 최소화 할 수 있습니다.


A6. 민감 데이터 노출

PDF 내용:
많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수있다. 중요데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화 같은 보호조치를 취해야 한다.

Dreamer : 
Client 와 Web Server는 HTTP Request Message 와 HTTP Response Message를 주고 받으면서 데이터를 저장 및 처리합니다. 이때 Paros와 같은 Proxy Tool을 사용한다면 Client와 Web Server 사이에서 전송되는 Message를 Trap 할 수 있는 데 이때 암호화가 되어 있지 않다면 평문으로 보여지기 때문에 제 3자가 정보를 얻을 수 있습니다.


A7. 기능 수준의 접근 통제 누락

PDF 내용:
대부분의 웹 애플리케이션은 UI에 해당 기능을 보이게 하기 전에 기능 수준의 접근권한을 확인한다. 그러나, 애플리케이션은 각 기능에 접근하는 서버에 동일한 접근 통제 검사를 수행한다. 요청에 대해 적절히 확인하지 않을 경우 공격자는 적절한 권한 없이 기능에 접근하기 위한 요청을 위조할 수 있다.


A8. CSRF - Cross Site Request Forgery

PDF 내용:
CSRF 공격은 크로스 사이트 요청변조이며 로그온 된 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조 된 HTTP 요청을 강제로 보내도록 하는 것이다. 이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있다.

Dreamer : 
CSRF는 사용자가 공격자가 생성한 게시 글을 읽으면 자동으로 개인 정보가 바뀐다던지? 해당 사용자가 작성한 글이 모두 수정/삭제 되게 하는 공격입니다. 해당 사용자 권한으로 삭제, 수정이 이루어지기 때문에 공격자가 누구인 지 판단 될 가능성이 낮아집니다.


A9. 알려진 취약점이 있는 컴포넌트 사용

PDF 내용:
컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행된다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악된다. 알려진 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화하는 등의 영향을 미친다.

Dreamer :
취약점이 알려진 컴포넌트라면 보안 된 새로운 컴포넌트로 업그레이트(사용)을 해야 안전하게 사용할 수 있습니다. 하지만 많은 사용자들이 취약점의 존재를 모르고 구버전을 계속 사용하기 때문에 TOP 10에 빠지지 않고 속해있습니다.


A10. 검증되지 않은 리다이렉트 및 포워드

PDF 내용:
웹 애플리케이션은 종종 사용자들을 다른 페이지로 리다이렉트 하거나 포워드하고, 대상 페이지를 결정하기 위해 신뢰할 수 없는 데이터를 사용한다. 적절한 검증 절차가 없으면 공격자는 피해자를 피싱 또는 악성코드 사이트로 리다이렉트 하거나 승인되지 않은 페이지에 접근하도록 전달 할 수 있다.


간단하게 글로서 A1~A10까지 정리해 보았는 데요.
생각보다 글자가 너무 많네요. 개인적으로 글자를 무척이나 싫어하는데...하하
죄송합니다. :-) 앞으로는 좀 더 잘 풀어 쓰도록 노력해볼게요.
비오는 밤. 감기 조심하시고 좋은 꿈 꾸세요.

Good Night! :) - Dreamer -