보안 제품정보


[기고] 시큐어코딩 법제화, 어떻게 대비해야 하나? 2012.05.11

시큐어코딩 법제화 대비 위한 소스코드 보안관리 툴의 선택조건


[보안뉴스=최경철 트리니티소프트 부장] 최근 발생되고 있는 해킹 사고가 대부분 웹 애플리케이션 취약점을 통해 발생되면서 기업의 비즈니스 환경에서 웹 애플리케이션 보안이 얼마나 중요한지 일깨워주고 있다.


이를 방지하기 위해 기관 및 기업, 학교에서는 네트워크 보안 솔루션인 웹 방화벽, 취약점 분석도구인 웹 스캐너 등을 사용하고 있지만, 웹 애플리케이션 관련 취약점은 지속적으로 발견되고 있다.

소스코드 보안관리 툴(Code-Ray)의 필요성

그렇다면 이러한 원인은 무엇일까? 좀 쉽게 얘기하자면 개발공정에서 취약점이 없는 코드를 만들면 되지 않을까라는 생각을 해볼 수 있다. 바로 시스템 개발 라이프 사이클(SDLC : Systems Development Life Cycle)의 보안통제가 적절히 이루어지지 않기 때문에 발생된다는 것이다.


다음은 개발 및 운영 프로세스에 보안통제를 적용하지 않은 경우에 발생될 수 있는 취약점 사례들이다.



그렇다면 이러한 개발 및 운영 프로세스에 소스코드 취약점 분석 및 관리기능을 통해 보안통제를 적용한 사례를 살펴보도록 하자.



사례분석

취약한 소스코드 사례를 보면서 어떠한 원인으로 인해 해킹사고가 발생되는지 확인해 보자.


1. XSS(크로스 사이트 스크립팅)

여러 형태가 존재하지만, 대표적으로 사용자 입력값에 대한 문자열 검증 없이 해당 입력 값을 화면에 출력되는 경우를 크로스 사이트 스크립팅이라고 한다.


아래 소스의 문제점은 1번 라인에서 HTTP 헤더정보를 요청하며, 2번 라인에서 요청한 HTTP 헤더정보를 화면에 출력하게 된다. 만약 HTTP 헤더정보 중 Referer 값에 XSS 공격패턴을 삽입하는 경우 XSS 취약점이 발생된다.


*공격방법 : Referer의 정상적인 값을 XSS 패턴으로 변조하여 공격을 수행함



2. COOKIE 취약점

이번 사례는 쿠키 값 변조를 통해 개인정보가 유출되는 경우이다. 사용자의 쿠키 값을 13번 라인에서 호출하고, 이를 17번 라인에서 쿼리 수행에 사용하도록 구성하고 있다. 만약 이러한 페이지가 개인정보를 출력하는 부분이라고 가정한다면 쿠키 값 변조를 통해 타인의 개인정보를 쿼리 수행하게 되고, 이를 화면에 출력해 볼 수 있다.


*공격방법 : SESSION%5FSITE%5FUID의 값인 user를 admin으로 변경해 admin 계정의 개인정보를 유출시킴



3. 명령어 실행

이번 사례는 사용자가 입력한 정보가 특정 파일에 삽입되는 취약점을 악용하여 시스템 명령을 실행할 수 있는 PHP 코드 삽입을 통해 시스템 권한을 획득하는 것이다. 3번, 4번 라인을 통해 사용자로부터 입력 값을 받으며, 입력한 정보는 1번, 2번 라인을 통해 공격문자열이 data.php에 입력된다. 만약 사용자 입력 값에 웹쉘을 삽입하고, data.php를 호출하는 경우 시스템 권한을 획득할 수 있다.


*공격방법 : contents에 입력되는 정상적인 값을 웹쉘 코드로 삽입함



4. 소스코드 다운로드

이번 사례는 개발자가 다운로드 취약점을 이해하고 보안조치를 했으나, 보안조치의 미흡으로 인해 웹 애플리케이션 소스를 다운로드 받고, 이를 악용해 시스템에 침입하는 내용이다. 1번 라인에서 사용자로부터 입력 값을 받게 되며, 2번 라인을 거쳐 3,4번 라인에서 요청한 파일을 다운받는다.


해당 소스에서 특이한 점은 개발자가 다운로드 공격에 사용되는 특수문자(..)를 무력화시키기 위해 replace 함수를 통해 특수문자를 제거하고 있다. 그러나 다운로드 공격에 해당 문자열(..)이외에도 다양하게 응용할 수 있으므로, 아래와 같이 웹 애플리케이션에서 사용되는 소스코드를 요청할 수 있다.


*공격방법 : 정상적인 파일명을 /login/login.asp로 변경해 해당 소스를 다운로드 함



소스코드 보안관리 툴의 선택조건

국내에서 판매되고 있는 소스코드 보안관리 툴의 경우 너무나 많은 오용탐지(False Positive)를 리포트로 제공한다는 점이다. XSS의 경우 한 사이트에서 수천 건이 탐지되었다고 리포트를 하고 있는데, 이는 특정 키워드의 단순한 조합으로 취약점 코드를 분석하기 때문에 발생되고 있다.


또한, 취약점 정보를 보여주는 인터페이스의 제약사항으로 인해 개발자 및 관리자의 소스코드 보안관리 부담을 더욱 가중시키고 있어 오히려 시간 및 비용을 낭비하고 있는 실정이다.



소스코드 보안 관리 툴을 효과적으로 도입하기 위해서는 관련제품의 BMT를 통해 제품의 장·단점을 비교해야 한다. 아래 리스트는 도입 시 고려해야 할 소스코드 보안관리 기능이다.



이렇듯 차별화된 기능을 면밀히 비교 분석해 소스코드 보안관리 툴을 선택하고, 이를 효과적으로 운영하는 노하우를 갖추는 등 시큐어코딩 법제화에 대비해야만 웹 애플리케이션 보안을 한층 강화할 수 있고, 궁극적으로 보안수준을 향상시킬 수 있다.  

[글_최 경 철 트리니티소프트 부장(aackc@trinitysoft.co.kr)]

<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>