▷ 작성자 : indra (indra@a3security.com)
▷ 편집자 : indra (indra@a3security.com)


Castle (PHP버전) 공격 탐지 우회 보안 권고안

 

                                                               By indra@a3security.com
(A.K.A 1ndr4)

I.   취약점 개요

취약점

Castle (PHP버전) XSS 공격 탐지 우회

A3S Advisory ID

A3AID09-01

위험 등급

최초 발표일

2009.2.6

문서 작성일

2009.2.2

벤더

KrCert

현재 상태(패치여부)

패치 완료


1. 
요 약

Castle
PHP 버전에서 XSS 공격 탐지를 우회할 있는 취약점이 발견되었다. Castle KrCert에서 공격 차단 로그 채취를 위해 배포하고 있는 솔루션이며, 해당 솔루션은 PHP, JSP, ASP 언어로 작성되어 여러 환경에서 사용할 있도록 배포 되고 있다. 업데이트 배포를 맡고 있는 대표 사이트는
KrCert - http://www.krcert.or.kr 이며, 사이트에서는 09 1 20자로 해당 솔루션을 보급하고 있다.

이번 발견된 탐지 우회 취약점은 사용자의 입력에 대해 pattern-matching 수행하여 공격 패턴을 찾아내는 루틴에서 특정 함수를 사용하는 것으로 비롯되었으며, 이를 이용해 악의적인 외부 사용자는 XSS 공격 탐지를 우회하고 실행 있는 취약점이다.

2대상 시스템

- Castle PHP Version


3
심각도 및 취약점 영향

취약점 영향

위험도

XSS 공격 탐지 우회


II
취약점 세부 분석

1.  취약점 내용

본 취약점은
사용자 입력 값을 검증하는 루틴에서 NUL 문자를 제대로 처리하지 못하는 루틴을 사용함으로 발생되는 취약점으로, PHP 함수의 적법하지 않은 사용에서 기인한다.
다음 그림은 castle_referee.php 파일의 코드 중 일 부분이다.


[그림 1] castle_referee.php 파일의 부분

그림은 castle_referee.php 파일의 부분으로 castle_referee_eregi() 함수 내용을 보여주고 있다. castle_referee_eregi() 함수는 castle 에서 정의하고 구현된 wrapper 함수이며, 해당 함수는 내부적으로 eregi() 함수를 사용하여 pattern-matching기법을 사용한 문자열 탐지를 수행한다.

먼저 magic_quotes_gpc 설정 정보를 받아 해당 옵션이 enable 되어 있으면 stripslashes() 함수를 사용하여 문자열 사이에 존재하는 슬래시(‘\’) 문자를 제거하게 된다. magic_quotes_gpc 옵션은 php 설치 기본적으로 enable 되도록 설정된 옵션이며, 이는 GET, POST, COOKIE 데이터에 특수문자가 존재하는 경우 자동으로 특수 문자 앞에 슬래시(‘\’) 문자를 추가하는 기능이다.

, eregi() 함수를 사용하여 문자열을 탐지하게 되는데 $regexp 변수와 $str 변수가 argument 사용된다. $regexp 변수는 정의된 검색 패턴의 정보가 들어가고, $str 변수에는 사용자 입력 값이 들어가게 된다. 해당eregi() 함수의 사용 루틴은 321 라인에서 327 라인까지 진행된다.

이러한 루틴에서 NUL 문자를 검출하기 위한 패턴은 eregi() 함수 사용과 맞물려 기능을 제대로 수행하지 못하게 되고, 악의적인 공격자가 패턴 탐지를 우회하여 XSS 공격을 시도할 있는 취약점을 노출 시킨다.

다음의 그림은 “<script>” 라는 문자열을 정상적으로 탐지하여 차단 메시지를 출력한 화면이다.


[그림 2] 정상적으로 공격 탐지를 화면

위 그림에서 사용된 소스코드는 다음과 같다.



단순히 GET 방식으로 전달 msg 라는 변수의 값을 출력해 주는 소스코드이며, 변수 값에 존재하는 “<script>” 라는 문자열을 제대로 탐지해 경우이다.

다음 그림은 발견된 우회방법 이용해 사용자 Cookie 출력하는 스크립트를 실행 화면이다.


[그림 3] 취약점에 의해 스크립트가 실행된 화면

2위험 분석

해당
취약점은 현재 공식 패치를 적용하지 않은  Castle PHP버전을 사용하고 있는 페이지들이 취약하며, 이를 이용한 탐지 우회 시도 피해가 예상된다
.

III. 대응 방안

1.   보안 대책

가.  공식 패치

취약점과 관련하여 현재 KrCERT 에서 패치가 되어 배포되고 있으며, 패치 버전은 1.0.1 버전이다
 
Castle 1.0.1 Version Download : http://www.krcert.or.kr 



Copyright(c) 1998-2009 A3 Security ,LTD 

현재 ㈜에이쓰리시큐리티에서 테스트 분석 중에 있으며, 문서는 계속 업데이트될 것입니다. 문서는 보안취약점으로 인한 피해를 최소화하는 도움이 되고자 작성되었으나, 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다