Blog

코더들의 보안 정복: 공유 및 학습 시리즈 - XQuery 인젝션

February 28, 2019
자프 카란 싱

XQuery 인젝션 공격은 흔히 더 널리 알려진 SQL 인젝션 공격의 하위 호환 격으로 여겨지기도 합니다. 두 공격은 근본 원인이 유사하며, 공격자가 이를 유발하기 위해 사용하는 명령어도 매우 비슷합니다. 다만 XQuery 인젝션 공격은 XML 데이터를 위한 XPath 쿼리 과정에서만 발생할 수 있습니다. 이러한 이유로, 공격의 전달 방식에 따라 XPath 인젝션 또는 단순히 XPath 공격이라고 불리기도 합니다.

대다수의 웹사이트는 사용자 로그인 자격 증명, 고객 정보, 개인 식별 정보, 기밀 또는 민감한 데이터를 보관하는 등 중요한 기능을 수행하기 위해 XML 데이터베이스를 사용하며, 이로 인해 XQuery 공격에 노출될 수 있는 범위가 상당히 넓습니다.

이번 에피소드에서는 다음 내용을 배웁니다.

  • 공격자가 XQuery 인젝션을 사용하는 방법
  • XQuery 인젝션이 위험한 이유
  • 이 취약점을 해결하는 기술.

공격자는 어떻게 XQuery 인젝션을 유발할까요?

대부분의 컴퓨터 언어와 마찬가지로, XPath 코드 역시 단순성을 염두에 두고 설계되었습니다. 사실 XPath는 표준 언어이며, 이를 사용하는 애플리케이션과 관계없이 모든 표기법과 구문이 동일합니다. 즉, XPath 쿼리를 조작하는 데 사용되는 명령어는 이미 잘 알려져 있으며 자동화까지 가능합니다.

XPath 쿼리의 핵심은 XML 데이터베이스에 어떤 정보를 조회할지 알려주는 간단한 문장입니다. 가장 단순한 예로, 사용자 기록이 존재하는지 확인한 다음 로그인 자격 증명을 검색하는 데 사용됩니다. 문제는 XPath 쿼리에 사용자 입력값이 포함되기 때문에, 해커가 쿼리를 조작하여 보호되어야 할 정보를 탈취할 수 있다는 점입니다.

예를 들어, 로그인 보안을 우회하려는 공격자는 XPath 쿼리 끝에 변수를 추가하여 전체 프로세스를 무력화할 수 있습니다. 다음은 그 예시입니다:

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

여기서 '1=1' 또는 'a=a' 문구 덕분에 사용자 이름 필드가 모든 사용자와 일치하게 됩니다. 쿼리의 앞부분만 참이면 되기 때문에 비밀번호 필드는 확인할 필요조차 없게 됩니다.

XQuery 인젝션은 왜 위험할까요?

XQuery 인젝션 공격이 매우 위험한 주된 이유는 공격자가 로그인 및 계정 보안을 우회할 수 있기 때문입니다. 또한 애플리케이션마다 달라지지 않는 표준 언어를 사용하여 자동화된 방식으로 공격을 수행할 수 있습니다. 공격자는 웹사이트와 애플리케이션의 취약점을 자동으로 스캔하고 발견 즉시 공격을 감행합니다. 귀하의 앱에 취약점이 있다면 공격자는 이를 침해할 것입니다. 계정 보안 침해를 넘어, XQuery 공격은 데이터 유출에도 사용될 수 있습니다. 예를 들어, 공격자는 XML 데이터베이스의 모든 기록을 외부로 전송할 수 있습니다.

XQuery 인젝션 공격 제거하기

유사한 취약점들과 마찬가지로, 가장 중요한 방어책은 사용자 입력을 신뢰하지 않는 것입니다. 사용자가 데이터베이스 쿼리 여부와 상관없이 정보를 입력할 수 있는 모든 과정은 철저히 검토되어야 합니다. 이는 마치 건물의 창문과 문을 잠그는 것과 같습니다. 그곳이 바로 사람들이 침입할 수 있는 주요 경로이기 때문입니다.

XQuery 인젝션으로부터 보호하려면 필터링을 통해 사용자 입력을 정화하거나, 화이트리스트 기반의 입력값 검증을 사용해야 합니다. 또한 SQL 쿼리의 준비된 문장(prepared statements)과 유사한 매개변수화된 XPath 인터페이스를 사용할 수도 있습니다.

마지막으로, 모든 애플리케이션에 최소 권한 원칙을 적용하십시오. 이는 모든 애플리케이션 쿼리를 수행할 때 읽기 전용 권한만 가진 사용자를 생성하는 것을 의미할 수 있습니다.

이러한 기술을 사용하면 웹사이트나 애플리케이션을 대상으로 하는 모든 XQuery 인젝션 시도를 차단할 수 있습니다.

XQuery 인젝션에 대한 추가 정보

더 자세한 내용은 OWASP에서 제공하는 XQuery 인젝션 관련 문서를 확인해 보시기 바랍니다. 또한 사이버 보안 팀을 최고의 사이버 전사로 훈련시키는 Secure Code Warrior 플랫폼의 무료 데모를 통해 새롭게 습득한 방어 지식을 테스트해 볼 수 있습니다. 이 취약점과 수많은 다른 위협들을 물리치는 방법에 대해 더 알아보려면 Secure Code Warrior 블로그를 방문하세요.

태그라인

AI 기반 개발이 배포되기 전에 관리하세요

AI 기반 위험을 측정하고, 커밋 시 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 배포를 가속화하세요.

데모 예약하기
태그라인

Explore more blogs

우리는 이 방법을 잘 알고 있습니다. 우리는 이 두 가지 축복을 골고루 살기 위해 노력하고 있습니다.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

하나의 보안 문화: Sage는 어떻게 챔피언 프로그램을 구축했는가

Sage가 유연하고 관계 중심적인 접근 방식을 통해 보안을 강화하고, 200명 이상의 보안 챔피언을 양성하며 실질적인 위험 감소를 달성한 사례를 확인해 보세요.

Learn More
Blog
Filter Label
This is some text inside of a div block.

2026년 사이버 보안 인식의 달: 기업 방어의 핵심, AI 보안 이해하기

주요 AI 기업 대부분이 안전 가이드라인이 마련될 때까지 AI 개발 속도를 전 세계적으로 늦춰야 한다고 공개적으로 촉구하는 시점에 이르렀지만, 사실 심각한 보안 문제는 이미 현실화되었습니다. 이로 인해 AI 도입에 따른 금전적 비용과 위험 부담이 계속 쌓이면서 수많은 보안 책임자와 경영진이 절박한 상황에 놓였습니다.

Learn More
Blog
Filter Label
This is some text inside of a div block.

인에이블러 8: 프로그램 브랜딩

성공적인 보안 코딩 프로그램을 위해서는 훌륭한 콘텐츠 그 이상의 것이 필요합니다. 인에이블러 8에서는 브랜딩을 통해 참여를 누구나 선망하는 위상 중심의 경험으로 바꾸는 방법을 알아봅니다.

Learn More
Blog
Filter Label
This is some text inside of a div block.

이제 모든 직원이 AI 사이버 보안의 최전선에 있습니다

엔터프라이즈 기술 환경은 너무 늦기 전까지는 아무도 예상하지 못한 속도로 변화하고 있습니다. 우리는 공식적으로 사람이 직접 작성한 코드와 기본적인 코파일럿 지원의 시대를 지나 '에이전트 기반 개발 수명 주기(ADLC)'의 시대로 진입했습니다. 자율형 AI 에이전트는 여러 기능 전반에 걸쳐 전례 없는 효율성을 약속하지만, 동시에 완전히 새로운 차원의 보안 및 규제 위험을 야기합니다.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

데모 예약하기
No items found.