개념 사전 · 개념

XXE와 XML 외부 엔티티

XML External Entity Injection · XML 외부 엔티티 주입

XXE는 XML 파서가 외부 엔티티를 해석하는 과정에서 파일이나 네트워크 자원에 접근하는 취약점이다. XML이라는 형식 자체와 실제 파서의 · 설정을 분리해서 판단한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 입력 문서가 서버 자원 접근을 유발하는 경계를 찾는다.
  • 불필요한 외부 엔티티· 기능을 제한한다.
  • 파싱 단계의 네트워크·파일·CPU·메모리 영향을 통제한다.

02어떤 순서로 동작하나

  1. 문서 수신

    서비스가 어떤 경로에서 XML을 파싱하는지 확인한다. 업로드·SOAP·문서 변환처럼 표면상 XML이 아닌 기능 안에도 파서가 있을 수 있다.

  2. 기능 선택

    사용한 파서와 버전에서 ·외부 엔티티·네트워크 조회가 어떤 설정으로 동작하는지 확인하고 불필요한 기능을 끈다.

  3. 자원 해석

    외부 참조가 필요하면 제한된 와 고정 자원 목록으로 경계를 정한다. URL 문자열만 검사하고 임의 파일 접근을 허용하는 방식은 충분하지 않다.

  4. 자료 사용

    파싱된 값의 스키마·크기·권한을 별도로 검사한다. 외부 참조를 막았더라도 과도한 중첩·확장·큰 문서의 자원 문제는 남을 수 있다.

03먼저 알아둘 용어와 구성요소

XML에서 재사용할 값이나 자원을 참조하는 선언.
문서 형식과 엔티티 등을 선언하는 문법.
참조된 외부 자원을 실제로 읽는 해석 구성 요소.
엔티티 참조를 실제 내용으로 확장하는 처리.

04예제로 따라가기

  • 정상 업무 문서가 외부 를 필요로 하지 않으면 해당 처리를 비활성화해 불필요한 외부 접근 경로를 없앨 수 있다.
  • 외부 참조가 응답에 표시되지 않아도 서버에서 ·HTTP 요청이 발생했다면 파싱의 외부 효과를 조사할 수 있다.
  • 파일 형식 검사를 통과한 XML도 깊이·크기 한도를 넘으면 파서 자원 소진을 일으킬 수 있다.

05혼동하기 쉬운 점과 확인 기준

  • 다른 언어·라이브러리에서 쓰는 안전 옵션 이름을 그대로 복사하면 현재 파서에 적용되지 않을 수 있다.
  • 한 번의 무응답 시험만으로 외부 참조가 차단됐다고 단정하지 않는다. ·방화벽·파서 오류가 같은 결과를 만들 수 있다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.