개념 사전 · 개념
XXE와 XML 외부 엔티티
XML External Entity Injection · XML 외부 엔티티 주입
XXE는 XML 파서가 외부 엔티티를 해석하는 과정에서 파일이나 네트워크 자원에 접근하는 취약점이다. XML이라는 형식 자체와 실제 파서의 · 설정을 분리해서 판단한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 입력 문서가 서버 자원 접근을 유발하는 경계를 찾는다.
- 불필요한 외부 엔티티· 기능을 제한한다.
- 파싱 단계의 네트워크·파일·CPU·메모리 영향을 통제한다.
02어떤 순서로 동작하나
- 문서 수신
서비스가 어떤 경로에서 XML을 파싱하는지 확인한다. 업로드·SOAP·문서 변환처럼 표면상 XML이 아닌 기능 안에도 파서가 있을 수 있다.
- 기능 선택
사용한 파서와 버전에서 ·외부 엔티티·네트워크 조회가 어떤 설정으로 동작하는지 확인하고 불필요한 기능을 끈다.
- 자원 해석
외부 참조가 필요하면 제한된 와 고정 자원 목록으로 경계를 정한다. URL 문자열만 검사하고 임의 파일 접근을 허용하는 방식은 충분하지 않다.
- 자료 사용
파싱된 값의 스키마·크기·권한을 별도로 검사한다. 외부 참조를 막았더라도 과도한 중첩·확장·큰 문서의 자원 문제는 남을 수 있다.
03먼저 알아둘 용어와 구성요소
- XML에서 재사용할 값이나 자원을 참조하는 선언.
- 문서 형식과 엔티티 등을 선언하는 문법.
- 참조된 외부 자원을 실제로 읽는 해석 구성 요소.
- 엔티티 참조를 실제 내용으로 확장하는 처리.
04예제로 따라가기
- 정상 업무 문서가 외부 를 필요로 하지 않으면 해당 처리를 비활성화해 불필요한 외부 접근 경로를 없앨 수 있다.
- 외부 참조가 응답에 표시되지 않아도 서버에서 ·HTTP 요청이 발생했다면 파싱의 외부 효과를 조사할 수 있다.
- 파일 형식 검사를 통과한 XML도 깊이·크기 한도를 넘으면 파서 자원 소진을 일으킬 수 있다.
05혼동하기 쉬운 점과 확인 기준
- 다른 언어·라이브러리에서 쓰는 안전 옵션 이름을 그대로 복사하면 현재 파서에 적용되지 않을 수 있다.
- 한 번의 무응답 시험만으로 외부 참조가 차단됐다고 단정하지 않는다. ·방화벽·파서 오류가 같은 결과를 만들 수 있다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.