보안 제품정보


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

\r\n

\r\n

\r\n

\r\n

최 경 철 │ 트리니티소프트 부장(aackc@trinitysoft.co.kr)

\r\n

\r\n

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

\r\n

그렇다면 이러한 원인은 무엇일까? 좀 쉽게 얘기하자면 개발공정에서 취약점이 없는 코드를 만들면 되지 않는가? 라는 생각을 해볼 수 있다. 바로 시스템 개발 라이프 사이클(Systems Development Life Cycle)의 보안통제를 적절하게 수행하고 있지 않는 것으로 인해 발생되고 있다는 것을 직감할 수 있다(SDLC :소스코드 생성부터 운영단계까지의 개발 및 운영 프로세스).

\r\n

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

\r\n


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

\r\n

\r\n

\r\n

사례분석

\r\n

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

\r\n

\r\n

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

\r\n

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

\r\n

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

\r\n

\r\n

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

\r\n

\r\n

2. COOKIE 취약점

\r\n

이번 사례는 쿠키 값 변조를 통해 개인정보가 유출되는 경우이다.

\r\n

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

\r\n

\r\n

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

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

\r\n

3. 명령어 실행

\r\n

이번 사례는 사용자가 입력한 정보가 특정 파일에 삽입되는 취약점을 악용하여, 시스템 명령을 실행할 수 있는 PHP 코드 삽입을 통해 시스템 권한을 획득하는 것이다.

\r\n

3번, 4번 라인을 통해 사용자로부터 입력 값을 받으며, 입력한 정보는 1번, 2번 라인을 통해 공격문자열이 data.php 에 입력된다. 만약 사용자 입력 값에 웹쉘을 삽입하고, data.php를 호출하는 경우 시스템 권한을 획득할 수 있다.

\r\n


\r\n

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

\r\n

\r\n

\r\n

\r\n

4. 소스코드 다운로드

\r\n

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

\r\n

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

\r\n

\r\n

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

\r\n

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

\r\n

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

\r\n

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

\r\n

\r\n

\r\n

\r\n

\r\n

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

\r\n

\r\n

\r\n

<글 : 시큐리티월드 편집부(sw@infothe.com)>

\r\n

\r\n

[월간 시큐리티월드 통권 제182호(sw@infothe.com)]

\r\n

<저작권자 : 시큐리티월드(www.securityworldmag.co.kr) 무단전재-재배포금지>