시큐어코딩
- home
- 보안소식
- 시큐어코딩
07. [입력 데이터 검증 및 표현] XQuery 삽입
2018.03.26 16:40
안녕하세요, 지에스인포입니다.
이번에는 시큐어코딩 항목 중 입력 데이터 검증 및 표현의 7번째 항목인 'XQuery 삽입'에 대해서 알아보겠습니다.
XQuery 삽입은 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에서 '입력 데이터 검증 및 표현'에 속해있는 주요 항목입니다.
분석, 설계 단계의 보안요구항목에서는 '입력데이터 검증 및 표현'의 'XML 조회 및 결과 검증'이라는 항목으로, 구현 단계 보안약점에서는 '입력데이터 검증 및 표현'의 'XQuery 삽입'이라는 이름으로 명시가 되어있습니다.
#XQuery 삽입이란?
XQuery 삽입이란, XQuery를 사용하여 XML 데이터에 대한 동적쿼리 생성 시 사용되는 외부 입력 값에 대해 적절한 검증 절차가 존재하지 않으면 발생하는 보안약점입니다. 공격자가 쿼리문의 구조를 임의로 변경함으로써 허가되지 않은 데이터를 조회하거나 인증절차를 우회할 수 있습니다.
예를들어 살펴보겠습니다.
위 소스코드는 'users.xml' 파일에서 <userlist> 루트 엘리먼트에 포함되어있는 모든 <user> 엘리먼트 중, 'uname'이 외부 입력 값인 'name'과 일치하는 값만을 지정하는 XQuery 구문입니다. 파라미터의 일부(name)가 외부 입력 값을 사용하고 있기 때문에 공격자는 쿼리를 변조할 수 있습니다.
만약 공격자가 name 변수에 something 'or'1'='1을 입력한다면, 최종적인 쿼리는 위 그림과 같을 것이며, 마치 SQL 삽입과 비슷한 형태로 조건에 맞는 값이 아닌 모든 값을 출력하는 쿼리가 동작하게 될 것입니다.
# XQuery 삽입을 막기위한 보안대책은?
소프트웨어 개발보안 가이드에서 제시하는 "XQuery 삽입"에 대한 보안대책은 위와 같으며, 각각의 상황에 맞게 적절히 사용하기를 권장하고 있습니다.
오늘은 "XQuery 삽입"에 대해 살펴봤습니다.
다음은 시큐어코딩 8번째 항목, "XPath 삽입"에 대해 알아보도록 하겠습니다.