lastest update 2009. 03. 11

웹 애플리케이션 해킹 개요 2에서는 웹 애플리케이션에서 발생하는 보안 문제점의 원인이 어디에서 기인하는지에 대해서 알아본다.


0x01. 웹 애플리케이션의 보안 문제점

신기술이 늘 그렇듯 웹 애플리케이션도 새로운 영역의 보안 취약점을 함게 가져왔다. 가장 보편적으로 마주치게 되는 보안 결함이라고 하는 것들도 세월에 따라 진화를 거듭해 변모하고 있다.

그 중 일부 문제점은 애플리케이션 개발자들의 보안에 대한 인식이 확산되고 보안 결함을 대비해서 상당히 완화되기도 했으며, 어떤 유형의 보안 결함은 웹브라우져 소프트웨어의 변경을 통해 거의 제거되고도 했다.


○ "이 사이트는 안전합니다."

웹 애플리케이션 보안은 단지 하나의 이슈일 뿐이라는 인식이 광범위하게 퍼져 있다. 흔히 볼 수 있는 예가 사용자를 안심시키기 위해 128Bit 기반의 SSL을 채택하고 있어서 안심해도 좋다고 한다. 실은 대부분의 웹 애플리케이션이 SSL의 채택 여부와 무관하게 안전하지 않다.

사용자 삽입 이미지

- Cross-Site Scripting 67%(크로스사이트 스크립팅)
   공격자가 다른 사용자의 세션을 가로채거나, 웹 사이트 사용자에게 악의적인 공격을
   수행하도록 하는 취약점이다.
- Information Leakage 45%(정보 유출)
  
애플리케이션 내부에서 발생하는 에러 구문이 사용자에게 노출되는 것으로 공격을 위한 정보
   수집에 도움을 주는 것을 말한다.
- Content Spoofing 28%(컨텐츠 스푸핑)
   웹 사이트에 나타난 컨텐츠의 일부를 변조하는 것을 말한다. 예를들어 Frame을 사용하는
   사이트에서 url을 통해서 소스를 연결할 경우 url주소를 악성 사이트로 변조가 가능하다.  
- Insufficient Authorization 18%(부적절한 인증)
   인증 절차에서 발생하는 다양한 문제점으로 쉽게 유추 가능한 패스워드 허용, Brute Force
   공격을 허용하거나 인증을 위하는 것을 허용하는 취약점을 말한다.
- SQL Injection 16%(SQL 인젝션)
   애플리케이션에 연결된 DB의 데이터를 가져오거나 애플리케이션 로직을 우회, 공격자가 DB를
   통해 임의의 명령어를 수행하는 것을 말한다.


0x02. 웹 애플리케이션의 보안 문제점 원인

웹 애플리케이션 공격의 대부분은 개발자들이 예상치 못했거나 의도하지 않은 동작을 유발하는 조작된 값을 서버로 보내는 형태로 이뤄진다.

 -  HTML의 Hidden Field의 값을 변조하는 것
 -  타 사용자의 session을 도용해서 권한을 획득 하는 것
 -  정상적으로 전송되는 파라메터의 값 제거
 -  데이터베이스 쿼리를 조작해서 DB의 데이터를 획득 하는 것

즉, 보안 문제의 핵심 원인은 아래와 같다고 할 수 있다.

※ 보안 문제점의 핵심
   사용자가 임의의 입력 값을 제공 할 수 있다.


어떤 어플리케이션이든지 사용자로 부터 제공된 데이터를 무조건 신뢰하는 것 자체가 바로 보안 문제점의 원인이 된다.


○ 주요 문제점

웹 애플리케이션에서 발생하는 다양한 취약점의 발생의 주요 원인에 대해서 알아보자.

사용자 삽입 이미지
그림1. 주요 문제점 발생의 원인


→ 미성숙된 보안 의식

네트워크나 운영체제와 관련한 보안 취약점과 달리 웹 애플리케이션 보안 문제에 대한 인식은 미숙한 편이다.  IT보안 담당자들은 일반적으로 네트워크나 시버 보안의 핵심은 어느 정도 잘 숙지하고 있는 반면 웹 애플리케이션 보안에 대해서는 핵심적인 개념에 대해서도 제대로 이해하지 못하는 경우가 많다.


→ 자체 개발

자체 인력이나 비정규직 인력에 의해 개발을 진행하는 것이 대부분이다. 이는 검증된 안전한 소스를 쓰는 경우에도 자기 사이트에 맞게 수정하여 사용하며 이 과정에서 다양한 결함이 생기는 경우가 많다.


→ 개발의 단순함

웹 애플리케이션 플랫폼과 개발 툴 등이 워낙 편리해서 초보 개발자도 단시간에 아주 강력한 애플리케이션 개발이 가능하게 되었다. 하지만 프로그램이 잘 작동되는 것과 보안에 안전한 코드를 만드는 것은 판이하게 다른 일이다.


→ 빠르게 진화하는 위협 프로파일

웹 애플리케이션 공격과 방어는 타분야에 비해 상대적으로 새로운 분야로 새로운 개념과 위협들이 많이 발생한다. 개발팀이 현재의 모든 위협을 고려해도 설치될 무렵에는 이미 모든 위협을 고려했다고 하기 어렵게 되는 경우가 많다.


→ 자원과 시간 제약 요소

대부분의 웹 애플리케이션 개발 프로젝트는 시간과 리소스, 즉 경제적인 제약에 쫓기게 된다. 이러한 현실에서 시스템 설계나 개발에 보안 전문 인력의 참여가 어렵고 보안 전문가에 의한 보안성 테스트는 개발 일정을 지연시키는 요인이 되어 거의 이뤄지지 않는 편이다.

개발 일정에 맞춰 우선순위를 조정하다보면 구체적으로 당면한 보안 위험이 아니면 일정에 맞춰 애플리케이션 기능 구현에 우선시 될 수 밖에 없다.

일정에 쫓겨 프로젝트 막바지에 진행하는 간단한 모의해킹은 손쉽게 도출 가능한 취약점을 탐지할 수 있을지는 몰라도 장시간 동안 정밀 진단을 통해서만 도출 가능한 매우 어렵거나 미묘한 중요 취약점에 대해서는 탐지가 어렵게 된다.


→  급속하게 확장된 기술

웹 애플리케이션 기술은 빠르게 발전되고 확장되어 활용되고 있다. 예를 들어 Javascript의 경우 Ajax 기반의 애플리케이션에서 데이터 전송의 수단으로 활용되고 있다.

급속한 발전과 고객의 요구에 따라서 이미 수명이 다한 기술들을 과도하게 변형하고 응용되고 있으며, 이에 따라 예상치 못했던 부작용들이 나타나게 되고, 결국에는 새로운 보안 취약점으로 귀결되고 있다.
Posted by n3015m
:
BLOG main image
웹 해킹 스터디를 위한 공간입니다. n3oism@gmail.com by n3015m

공지사항

카테고리

분류 전체보기 (17)
공지사항 (0)
웹 해킹 & 입문 (5)
웹 해킹 & 참고자료 (2)
해킹대회 문제풀이 (8)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :